01 — Reading paths
Curated routes through the library.
Six paths, each a sequence of 4–6 readings. If you only have a weekend before applying, pick one and read in order.
Path 015 readings · ~ 8 hrs
Foundations of good practice.
Where to start if you've never read a "classic" software paper. Equally good before a Lattice interview or before a long flight.
- 01Out of the Tar Pit · Moseley & Marks2006
- 02Hints for Computer System Design · Lampson1983
- 03Worse Is Better · Gabriel1991
- 04A Philosophy of Software Design · Ousterhout, ch. 1–42018
- 05No Silver Bullet · Brooks1986
Path 026 readings · ~ 14 hrs
The distributed path.
For applicants to the Distributed Systems track, or anyone who's been bitten by a clock. Read in order.
- 01A Note on Distributed Computing · Waldo et al.1994
- 02Time, Clocks & Ordering · Lamport1978
- 03In Search of an Understandable Consensus Algorithm · Ongaro & Ousterhout2014
- 04Harvest, Yield, & Scalable Tolerant Systems · Fox & Brewer1999
- 05CRDTs: Consistency Without Concurrency Control · Shapiro et al.2011
- 06A Conflict-Free Replicated JSON Datatype · Kleppmann & Beresford2017
Path 035 readings · ~ 10 hrs
The compilers path.
Build a small language by reading. The order is from "what is a compiler" to "how do compilers handle gnarly cases."
- 01Why Functional Programming Matters · Hughes1989
- 02Crafting Interpreters · Nystrom (parts I & II)2021
- 03A Tutorial on the Universality of Untyped Lambda Calculus · Wadler1992
- 04Engineering a Compiler · Cooper & Torczon, ch. 1–62011
- 05Bidirectional Type Checking · Pierce & Turner2000
Path 044 readings · ~ 6 hrs
The security path.
If trust is the topic, this is your starter pack. We assign three of these in week one of the Cryptography track.
- 01Reflections on Trusting Trust · Thompson1984
- 02The Cryptographic Doom Principle · Moxie Marlinspike2011
- 03Lessons from the History of Attacks on Secure Hash Functions · Bellare et al.2017
- 04Spectre Attacks: Exploiting Speculative Execution · Kocher et al.2019
Path 055 readings · ~ 9 hrs
The databases path.
B-trees, transactions, query plans. Curated by Farah Naidu before each cohort of Database Internals.
- 01The Five-Minute Rule · Gray & Putzolu1987
- 02A Critique of ANSI SQL Isolation Levels · Berenson et al.1995
- 03The Log-Structured Merge-Tree · O'Neil et al.1996
- 04Architecture of a Database System · Hellerstein et al.2007
- 05FoundationDB Record Layer · FoundationDB Team2018
Path 064 readings · ~ 5 hrs
On writing code.
From Editorial Engineering. Short, sometimes sharp, always opinionated. Read these in any order.
- 01A Note on the Notion of Programming Style · Dijkstra (EWD 0227)1968
- 02Make Bad Code Good · Sandi Metz2014
- 03The Wrong Abstraction · Sandi Metz2016
- 04On the Importance of Not Trying · Hickey2011