Bookshelf
Books and papers, with one line on why each is here. No star ratings; a mark means I would hand it to a friend.
Reading now
Consensus on Transaction Commit✓
2006paper · reading
Two-phase commit and Paxos commit side by side, with the failure cases spelled out. Directly relevant to my 2PC posts.
Designing Data-Intensive Applications✓
2026book · reading
The overview book. Each of the others on this shelf goes deeper into one of its chapters.
The Rust Programming Language
book · reading
The book my learn-rust repo follows. Ownership finally made sense on the second read.
Databases
Database Internals✓
2019book · finished
Storage engines in the first half, distributed systems in the second. Read the first half twice.
PostgreSQL 14 Internals✓
2023book · reference
The deepest free book on PostgreSQL. English edition covers 14; the ideas hold for 17.
The Internals of PostgreSQL✓
book · reference
Free online, and the skeleton of my WAL post. Chapter 9 alone is worth a week.
Operating systems and Linux
Grokking Algorithms
2016book · finished
Pictures first. I worked every problem in Java; the repo is under Projects.
Linux Kernel Development
2010book · want to read
Shorter and more readable than Bovet and Cesati; a good first kernel book.
Operating Systems: Three Easy Pieces✓
book · reference
Free, funny, and the best explanation of virtual memory I have read. The persistence chapters are a bonus for database people.
The Linux Programming Interface
2010book · want to read
The syscall boundary, one chapter per subsystem. The reference I reach for when a system call surprises me.
Understanding the Linux Kernel
2005book · want to read
Covers 2.6, so pair it with Love's book and a current source tree. Still the clearest on memory management.
Papers
Clay: Fine-Grained Adaptive Partitioning for General Database Schemas✓
2016paper · finished
How to move hot data between shards without a human choosing the partitions. Clear enough to implement from.
Spanner: Google's Globally-Distributed Database✓
2012paper · finished
TrueTime and external consistency. Read it after you have built a two-phase commit and felt the pain.