A book that's really changing how I'm thinking. It starts by explaining how science makes progress. Defining a good theory as one that has explanatory power. A good theory explains stuff well.
Then proceeds to apply explanations. How to understand Physics from this frame of mind. How other approaches to epistemology (what we can know) works. What problems they face. What kind of errors other ways of thinking can lead to.
This is the best book I've read about what we can know, and it applies so generally to things I'm interested in. How can I know what I know. What about my team at work, what do we know. How should we communicate. About the products we're developing. How are they valuable? How can we know that it's valuable?
It's especially impressive how Deutsch navigates up and down the ladder of abstraction. Really general concept - then a really crisp example of how it applies exactly to an example.
I've been reading and re-reading this on and off for half a year. It's hard, but I'm learning a lot. Currently half way through the book.
- The Rust Programming Language (book)
- Programming Rust (book)
(I'm going over them in parallel)
To do:
- The Elements of Computing Systems (book & course)
- High Performance Browser Networking (book)
- REST API Design Rulebook (book)
- Network Programming with Go (book)
- MIT 6.824 Distributed Systems (course)
- a bunch of docs and youtube tutorials on things I want some exposure to without going too deep (React, Django, FastAPI, Kubernetes)
- The System Design Interview (book)
- Grokking the System Design Interview (book)
- more Leetcode
For context I'm a data scientist who wants to switch to SWE at some point.
- Japanese (I'm still rather bad, although I know a fair bit of Kanji, vocab and grammar by now)
- Mathematical Logic (very vast topic)
- Programming Language theory, Type theory, better understanding of functional programming language concepts, etc. I'd like, for example, to be able to be productive in Haskell.
- Distributed systems. I'm really bad at thinking about distributed computing (although I suspect that even most people who work on distributed systems are), so I'd like to improve. I'm currently reading "The Art of Immutable Architecture" which, maybe unexpectedly, is mostly about how immutability helps with distributed computing. It's definitely idiosyncratic though, so I'll also need to read some other stuff. I've had my eyes on "designing data-intensive applications" for a while now. I'd also like to learn some Erlang/Elixir at some point.
- History. I'm really interested in history and enjoy good podcasts, audiobooks etc. about it. Currently on the Russian Revolution and also listening to a lecture series on the middle ages.
https://en.wikipedia.org/wiki/File:Programming_paradigms.svg
Learning quantum computing algorithms is on my list as well.
- Introduction To Graph Theory
- The design of approximation algorithms
- Introduction To Topology
- A book of abstract algebra
---
Long Term:
- GEB
- Linear and Geometric Algebra + Linear and Geometric Calculus
- Geometric Deep Learning: Grids, Groups, Graphs, Geodesics and Gauges
- Elements of functional analysis
- Cracking the coding interview
- Pattern Matching and Machine Learning
- Elements of Statistical Learning
- Probabilistic Machine Learning
And the list never ends.
Languages to get a better handle on:
Swift - I transitioned out of macOS and iOS development when Obj-C was sunsetting, so that wave swept by me.
Rust
Learn Ukrainian - I'm a native English-speaker and C1/C2 in Russian, but am completely stumped by Ukrainian - like "you sound like you're speaking something I should understand, but..."
Giving characters over-the-top traits is a good start, but so much to learn about making them stand out in the players’ memories / making them more than tools of acquiring things to do for the players.
- Complicated regular expressions
- Urdu
- Thomas Asbridge's The Crusades [2]
[1] https://www.dyalog.com/uploads/documents/MasteringDyalogAPL....
[2] https://www.amazon.com/Crusades-Authoritative-History-Holy-L...
- Solidify my overall programming skills. I'm still light on a lot of OOP concepts and on some data structures. On one hand I've never really taken to OOP, on the other I just don't program enough that concepts are really internalized.
- Get decent at the Go language. Nothing fancy, I just want to do some concurrency and message passing without getting my foot stuck in the carpet.
- Getting a better instinct for log aggregation/monitoring and process tracing. Dtrace has been on my list for at least a decade.
Other intellectual pursuits :
- I'd like to brush off my Latin and Ancient Greek. I honestly feel I should be able to speak Latin within a few months. But getting a sense for good Latin and appropriate style would take a few years.
- I want to pick up German in the near future.
- I want to go back to university part time (which you can do where I'm from) and finish a history degree. I love computing, but I love history more.
- Learning guitar via https://www.justinguitar.com/
- Learning Spanish via duolingo
- Learning Kotlin via "Atomic Kotlin"
Why guitar? Purely for myself. I'd learned some when I was a teen but my evangelical Protestant parents only wanted me to play "for the glory of God" and so I couldn't play "secular" songs. Now I'm grown and finally have enough time and disposable income to pick it up again.
Why Spanish? I'm latino, but parents never learned Spanish b/c of generational assimilation (having any accent was "bad") and I want to learn.
Why Kotlin? Java has been my primary language for the 10 years of my career and is the #1 language at my company. (We/I also use Objective-C, JS/TS, Perl, and Ruby.) However, I'm always bouncing between learning languages on the weekend, mostly as a hobby. I've tinkered with C C++ Swift Go Python CommonLisp Clojure and Rust. Each language, even though I might not have actually used, has taught me something new and for that alone it's been personally fulfilling to just get a cursory familiarity with the language. Picking up languages also makes it very easy to pick up the next and so on.
Kotlin itself seems like what I've been needing: a Java++. Something I can actually use at work, that won't take much to ramp up others, interacts easily with existing Java code/systems, and solves real problems that Java has. It's like Java with "Effective Java" built-in, as well as some great concepts from other languages (like coroutines from Go).
Been working on "wax on, wax off"-style kicking the tires with Kotlin. Like setting up a web server stack on AWS with it (Spring + Thymeleaf + Elastic Beanstalk + CodePipelines).
Backlog:
- Going through Crafting Interpreters https://craftinginterpreters.com/ using Kotlin (instead of Java).
Now on to getting SQLModel[3] going with GeoAlchemy2[4].
This is all for the school project. The day job is all about Terraform.
[2] https://develop.spacemacs.org/layers/+tools/lsp/README.html
I started making one-game-a-month as a learning exercise to tinker with all the different aspects of developing a game: coding, modelling, making art, composing music and sound effects, and even writing a devlog.
I've been blogging the entire thing. My first one-game-a-month is at https://dudezord.github.io/projects/Gatekeeper, if you are curious.
A few years ago, YouTube introduced me to a man, Peter Zeihan. He focuses on geopolitics and the future of nations. I thought his presentations were informative yet I was skeptical. Always kept him and his predictions in the back of my mind.
Fast forward to now, covid and the Ukraine-Russia war. Now I can’t get enough of his words and thoughts
On my reading list, is his books.
- The Absent Superpower: The Shale Revolution and a World Without America
- Disunited Nations: The Scramble for Power in an Ungoverned World
So far, his predictions have been accurate. And that scares me about the next few years
*edit for formatting
Trying to avoid learning more programming things as I am entirely burned out from that.
Korean, particularly the listening part. Listening and parsing at the same time is really tough. Does anyone recommend italki?
- PHP event loop to use it with AJAX/websockets to make browser games
- SQL. I know SQL but I feel I need a deeper knowledge
- Rust or Go
- Spoken English
There's also Clifford algebra, which turns geometry into algebraic statements.
I like traditional media, but the setup is annoying and the canvases and papers and whatnot start to pile up.
Berkeley - CS 61B Spring 2021
Helsinki - Full Stack Open 2022
Some LeetCode here and there.
So basically my current project is to trim it down.
* JavaScript
Todo:
* APL or J
* Lisp
* Forth
* Lua
I especially love learning about how other people have succeeded in their careers, because I believe that there's something valuable to be learned from everyone's experience. I also just love hearing about what other people are passionate about!
Right now, my learning list is focused on books for women in business. Some of my favorites? The Lean Startup by Eric Ries and Lean In by Sheryl Sandberg.
I'm a Go backend Vue frontend guy currently. But I'm eyeballing Java and eventually Kotlin because while the Go language is regulated the ecosystem isn't. And even if performance and resource usage is worse than Go it's still good enough. So I'm trying to see if I can have my cake and eat it too, aka have grpc, RESTful API and reactivity and oidc protected endpoints and how that works with Vue, Flutter or Angular. Maybe eventually even write native Android mobile apps since they're Java also.
But Java is very closed off and seemingly elitist world compared to Go. Only few information outlets exist and the articles are usually incomplete.
I'm observing a decline in Go, many abandoned packages and some of the brains that were what's considered core packages have move away from Go. Gin for instance has a contrib sessions package but it's unmaintained and only select PRs are accepted. Sessions via redis aren't working anymore but since some packages depend on the exact package name of gin contrib sessions one would have to fork and fix both packages. I'm tried of this neglect and want an ecosystem that has not many but high quality packages. I'm also tired of working with half-assed packages like ent.
I feel like Java is where the professionals work and Go at first was full of very smart enthusiasts but now isn't anymore. They've moved to Rust as the next big thing and once they're done there they'll move to the next big thing. But Java albeit ugly and "ugh" is still there and it's used and expanded according to needs. The core is always hibernate and it has a long business history.
I've tried getting into Rust time and again but that ecosystem is even more desolate and the language just doesn't resonate with me.
The downside, JVM is swiss cheese security. If someone really wants to get at you they will.