Here’s a list of books (and other things) that I’ve read and that have helped me. It’s pretty short because I usually struggle to finish books. Also I’ve certainly forgotten a lot of important things.
- The Linux Programming Interface by Michael Kerrisk – an exhaustive reference on how Linux works. There are about a million chapters, but every individual chapter is pretty short and I find it quite readable. Taught me how groups work on Linux, among other things.
- The Manager’s Path by Camille Fournier. Helped me understand what a tech lead’s job is.
- Networking for System Administrators by Michael Lucas helped networking click for me, even though I’m not a system administrator. Also Ed Mastery was a really fun read even though I’m probably never going to use Ed.
- Ruby Under a Microscope helped me when I was writing a Ruby profiler
- Hacking: The Art of Exploitation by Jon Erickson taught me about ARP spoofing
- Designing Data-Intensive Applications by Martin Kleppmann is a book I still want to finish, but I loved what I read of it – when I want to understand how databases work, that’s where I’ll start. I also loved his paper A Critique of the CAP Theorem.
- Cryptopals – a set of exercises to learn cryptography by breaking it. Very fun. I still haven’t finished it, but the first 4 sets were a great lesson in why I shouldn’t implement my own crypto.
- Nightmare – an intro to reverse engineering. I did a few problems and it was really fun.
- https://course.fast.ai/ is a free course on deep learning with PyTorch. It helped me get started with deep learning, though I didn’t get that far.
- TinyWM is where I’d start if I wanted to learn how a window manager works
- Mozilla Developer Network is my reference for all things web. Also Can I Use
- CSS Tricks has great CSS explainers (like their legendary guide to centering)
- the Go standard library documentation is probably my favourite language reference
- Go by example by Mark McGranaghan and Eli Bendersky is a lovely small list of Go example programs
- I often use these online Linux man pages because sometimes I like to read man pages in my browser instead of in the terminal