Books I actually use.
The Linux Programming Interface
Michael Kerrisk
book
The syscall reference I reach for first. It also shows how much the kernel hides from you.
Systems Performance
Brendan Gregg
book
Useful for turning a vague feeling of slowness into a number. The memory and file-system chapters are the ones I revisit.
Designing Data-Intensive Applications
Martin Kleppmann
book
A clear map of replication, partitioning, and consistency. The bibliography is the useful part.
Crafting Interpreters
Robert Nystrom
book
The clearest explanation of Pratt parsing I have read.
Writing an Interpreter in Go
Thorsten Ball
book
Short, and it gets you to a working tree-walking interpreter without much ceremony.
CMU Intro to Database Systems
Andy Pavlo, CMU 15-445
course
The database course I wish I had taken earlier. Query execution and buffer management are the parts I used in abdb.
Beej's Guide to Network Programming
Brian Hall
blog
Still the fastest way to remember what a socket call actually does.
If you have something good on systems, databases, or compilers, send it over.
send a recommendation