Primary-Source Readings
Every reading in the journey, by project, with the reason and the hour budget.
Total: ~183 hours across 130 weeks — about 13% of the 1,430-hour budget, close to the 15% allocation. The remainder of that allocation goes to reading source code, which is not listed here and is often more valuable than the papers.
Table of Contents
- Three Rules
- The Method Canon
- P01 — Transformer
- P02 — ANN Index
- P03 — Vector Database
- P04 — LSM Engine
- P05 — Distributed KV
- P06 — MapReduce
- P07 — Streaming
- P08 — Recommender
- P09 — Simulator
- P10 — A/B Testing
- P11 — Language
- P12 — Kernel
- P13 — Tensor Framework
- P14 — Hardware-Aware
- P15 — Integration and Writing
- Source Code Worth Reading
- The Ten That Matter Most
Three Rules
1. Read after designing, not before. Every project's reading is scheduled after the milestone where you write your own version. Reading Malkov before designing your own graph index destroys the reconstruction exercise permanently, and it is the exercise the whole journey is built around.
2. Read the section, not the paper. Most entries below name a section. Raft §5.4.2, Vaswani §3, Dataflow's model section. Reading a paper end to end is usually a worse use of ninety minutes than reading its key section twice.
3. Reading never completes anything. It is an input to a milestone, never a deliverable. A week whose output is "read the LSM paper" is a failed week.
The Method Canon
Six pieces about how to work, not about any system. Read the first two in month 1; the rest as noted.
| Reading | When | Hours |
|---|---|---|
| Hamming, R. W. You and Your Research. Bell Labs, 1986 | Week 1 | 1 |
| Feynman, R. P. Cargo Cult Science. Caltech, 1974 | Week 1 | 0.5 |
| Lampson, B. W. Hints for Computer System Design. SOSP 1983 | Month 2 | 1.5 |
| Dean, J., Barroso, L. A. The Tail at Scale. CACM 56(2), 2013 | Before P05 | 1 |
| Ousterhout, J. Always Measure One Level Deeper. CACM 61(7), 2018 | Before P05 | 0.5 |
| Mytkowicz, T. et al. Producing Wrong Data Without Doing Anything Obviously Wrong! ASPLOS 2009 | Before your first speedup claim | 1 |
Mytkowicz is the one people skip. It shows that changing the link order of a program, or the size of an environment variable, shifts measured performance by enough to invert published conclusions. Read it before you trust your first 5% improvement.
P01 — Transformer
13 hours. Full context: P01.
| Reading | Why | When | h |
|---|---|---|---|
| Vaswani, A. et al. Attention Is All You Need. NeurIPS 2017 | §3 closely. Note it is post-norm — later reversed | Week 2, after your naive design | 3 |
| Su, J. et al. RoFormer. arXiv:2104.09864, 2021 | §3.2 derives the relative-position property | Week 6 | 2 |
| Xiong, R. et al. On Layer Normalization in the Transformer Architecture. ICML 2020 | Why pre-norm won, via gradient magnitude at init | Week 7, before E6 | 2 |
| Dao, T. et al. FlashAttention. NeurIPS 2022 | §2–3 only. IO-awareness — the same lesson as P14 | Week 7 | 2 |
| Loshchilov, I., Hutter, F. Decoupled Weight Decay Regularization. ICLR 2019 | Why L2 ≠ weight decay under Adam | Week 5 | 1.5 |
| Radford, A. et al. Language Models are Unsupervised Multitask Learners. 2019 | The GPT-2 architecture table | Week 4 | 1 |
| Sennrich, R. et al. Neural Machine Translation of Rare Words with Subword Units. ACL 2016 | BPE | Week 8 | 1 |
| Ba, J. L. et al. Layer Normalization. arXiv:1607.06450, 2016 | Skim | Week 4 | 0.5 |
Also worth reading, after milestone 7: Elhage, N. et al. A Mathematical Framework for Transformer Circuits, Anthropic 2021 — the residual-stream-as-a-bus view, which changes how you read every subsequent architecture.
P02 — ANN Index
11 hours. P02.
| Reading | Why | When | h |
|---|---|---|---|
| Malkov & Yashunin. HNSW. IEEE TPAMI 42(4), 2020 | The source. Algorithm 4 is the part that matters most and is skipped most | Week 12, after your NSW | 3 |
| Malkov et al. NSW. Information Systems 45, 2014 | The single-layer version you will have reinvented | Week 11 | 1.5 |
| He, Kumar & Chang. On the Difficulty of Nearest Neighbor Search. ICML 2012 | Relative contrast | Week 9, before generating data | 1.5 |
| Beyer, K. et al. When Is "Nearest Neighbor" Meaningful? ICDT 1999 | The concentration result underneath | Week 9 | 1.5 |
| Aumüller et al. ANN-Benchmarks. Information Systems 87, 2020 | The evaluation protocol to imitate exactly | Week 10 | 1.5 |
| Jégou, Douze & Schmid. Product Quantization. IEEE TPAMI 33(1), 2011 | The other major family | Week 14 | 2 |
P03 — Vector Database
11 hours. P03.
| Reading | Why | h |
|---|---|---|
| Subramanya, S. J. et al. DiskANN. NeurIPS 2019 | The disk-resident answer; read before designing your segments | 2 |
| Mohan, C. et al. ARIES. ACM TODS 17(1), 1992 | §1–3 only. WAL, LSN, redo/undo | 2.5 |
| Crotty, Leis & Pavlo. Are You Sure You Want to Use MMAP…? CIDR 2022 | Read after your mmap milestone, then re-examine honestly | 1.5 |
| Gollapudi, S. et al. Filtered-DiskANN. WWW 2023 | After your own filtering experiment | 1.5 |
| Wang, J. et al. Milvus. SIGMOD 2021 | A real system's segment architecture | 1.5 |
| Pillai, T. S. et al. All File Systems Are Not Created Equal. OSDI 2014 | What your fsync discipline actually guarantees | 1 |
| Kleppmann, M. DDIA, ch. 3 | The clearest storage-engine overview | 1 |
P04 — LSM Engine
15 hours — the largest budget, because this literature is unusually good. P04.
| Reading | Why | h |
|---|---|---|
| O'Neil, P. et al. The Log-Structured Merge-Tree. Acta Informatica 33, 1996 | The origin; §3's cost model is the amplification derivation | 3 |
| Dayan, Athanassoulis & Idreos. Monkey. SIGMOD 2017 | Bloom bits should not be uniform across levels. Genuinely surprising, and your best hypothesis source here | 2 |
| Rosenblum & Ousterhout. Log-Structured File System. SOSP 1991 | The cleaning-cost analysis is the compaction analysis | 2 |
| Dong, S. et al. Optimizing Space Amplification in RocksDB. CIDR 2017 | Production numbers for your trade | 2 |
| Ghemawat & Dean. LevelDB source and implementation notes | Read after milestone 5 | 2 |
| Athanassoulis, M. et al. The RUM Conjecture. EDBT 2016 | The framing that makes the project one idea | 1.5 |
| Chang, F. et al. Bigtable. OSDI 2006 | SSTables in context | 1.5 |
| Bloom, B. H. Space/time trade-offs in hash coding… CACM 13(7), 1970 | Three pages. Read the original | 0.5 |
| Pillai, T. S. et al. All File Systems Are Not Created Equal. OSDI 2014 | Re-read | 0.5 |
P05 — Distributed KV
20 hours — the largest in the journey. P05.
| Reading | Why | h |
|---|---|---|
| Ongaro & Ousterhout. In Search of an Understandable Consensus Algorithm. ATC 2014 | The extended version. §5.4.2 twice | 5 |
| Lamport, L. Time, Clocks, and the Ordering of Events. CACM 21(7), 1978 | Happens-before | 2 |
| Fischer, Lynch & Paterson. Impossibility of Distributed Consensus… JACM 32(2), 1985 | Theorem and intuition; proof optional | 2 |
| Herlihy & Wing. Linearizability. ACM TOPLAS 12(3), 1990 | The definition your checker implements | 2 |
| DeCandia, G. et al. Dynamo. SOSP 2007 | The AP design point | 2.5 |
| Corbett, J. C. et al. Spanner. OSDI 2012 | What a bounded clock buys | 2 |
| Gilbert & Lynch. Brewer's Conjecture… SIGACT News 33(2), 2002 | CAP as a theorem | 1.5 |
| Hayashibara, N. et al. The φ Accrual Failure Detector. SRDS 2004 | For E4 | 1.5 |
| Kingsbury, K. Jepsen analyses — pick three real systems | What violations look like in shipped software | 1.5 |
P06 — MapReduce
11 hours. P06.
| Reading | Why | h |
|---|---|---|
| Dean & Ghemawat. MapReduce. OSDI 2004 | §3.6 on backup tasks is what E4 tests | 2.5 |
| Ghemawat, Gobioff & Leung. The Google File System. SOSP 2003 | The storage assumptions underneath | 2 |
| Zaharia, M. et al. Resilient Distributed Datasets. NSDI 2012 | Why lineage beats re-execution | 2 |
| Zaharia, M. et al. Improving MapReduce Performance in Heterogeneous Environments. OSDI 2008 | LATE — naive speculation actively harms | 1.5 |
| Dean & Barroso. The Tail at Scale. CACM 56(2), 2013 | Re-read with a straggler in front of you | 1.5 |
| Isard, M. et al. Dryad. EuroSys 2007 | The general-DAG generalisation | 1 |
| Verma, A. et al. Borg. EuroSys 2015 | Where tasks actually run | 0.5 |
P07 — Streaming
12 hours. P07.
| Reading | Why | h |
|---|---|---|
| Akidau, T. et al. The Dataflow Model. VLDB 2015 | The most important paper in this project. What/where/when/how | 3 |
| Akidau, T. Streaming 101 / 102. O'Reilly, 2015 | The clearest explanation of watermarks in print | 2 |
| Carbone, P. et al. Lightweight Asynchronous Snapshots. arXiv:1506.08603, 2015 | Flink's barrier snapshotting | 2 |
| Chandy & Lamport. Distributed Snapshots. ACM TOCS 3(1), 1985 | The algorithm underneath it | 1.5 |
| Zaharia, M. et al. Discretized Streams. SOSP 2013 | The micro-batch alternative, honestly | 1.5 |
| Kreps, J. The Log. LinkedIn, 2013 | Changes how you see storage generally | 1 |
| Kreps, Narkhede & Rao. Kafka. NetDB 2011 | The log as a primitive | 1 |
P08 — Recommender
10 hours. P08.
| Reading | Why | h |
|---|---|---|
| Chaney, Stewart & Engelhardt. How Algorithmic Confounding… RecSys 2018 | The feedback loop, simulated. Sets up P09 | 2 |
| Covington, Adams & Sargin. Deep Neural Networks for YouTube Recommendations. RecSys 2016 | Two-stage architecture; "example age" is the freshness lesson | 1.5 |
| Steck, H. Calibrated Recommendations. RecSys 2018 | Why accuracy-optimal recommendations are miscalibrated | 1.5 |
| Cañamares & Castells. Should I Follow the Crowd? SIGIR 2018 | Why popularity baselines are so hard to beat | 1.5 |
| Hu, Koren & Volinsky. Collaborative Filtering for Implicit Feedback Datasets. ICDM 2008 | The implicit-feedback formulation | 1.5 |
| Wu, F. et al. MIND. ACL 2020 | News-specific evaluation and its pitfalls | 1.5 |
| Carbonell & Goldstein. The Use of MMR… SIGIR 1998 | Four pages | 0.5 |
P09 — Simulator
9 hours. P09.
| Reading | Why | h |
|---|---|---|
| Chuklin, Markov & de Rijke. Click Models for Web Search. 2015 | Chapters 3–4. The definitive treatment | 2.5 |
| Chaney et al. How Algorithmic Confounding… RecSys 2018 | Re-read; closest published work to this project | 2 |
| Ie, E. et al. RecSim. arXiv:1909.04847, 2019 | Read the design decisions, then make your own | 1.5 |
| Craswell, N. et al. An Experimental Comparison of Click Position-Bias Models. WSDM 2008 | Where the position-bias exponent comes from | 1 |
| Rohde, D. et al. RecoGym. arXiv:1808.00720, 2018 | A second design to compare against | 1 |
| Jeunen, O. Revisiting Offline Evaluation… RecSys 2019 | Why offline evaluation fails | 1 |
P10 — A/B Testing
9 hours. P10.
| Reading | Why | h |
|---|---|---|
| Kohavi, Tang & Xu. Trustworthy Online Controlled Experiments. Cambridge, 2020 | Ch. 1–3, 17–19. The book on this | 3 |
| Kohavi, R. et al. Online Controlled Experiments at Large Scale. KDD 2013 | SRM, Twyman's law, the real failure modes | 1.5 |
| Deng, A. et al. Improving the Sensitivity… (CUPED). WSDM 2013 | Variance reduction | 1.5 |
| Johari, R. et al. Peeking at A/B Tests. KDD 2017 | The principled fix for peeking | 1.5 |
| Kohavi & Longbotham. Unexpected Results in Online Controlled Experiments. 2010 | Case studies where intuition lost | 1 |
| Gupta, S. et al. Top Challenges… SIGKDD Explorations 21(1), 2019 | What the industry finds hard | 0.5 |
P11 — Language
16 hours across both phases. P11.
| Reading | Phase | Why | h |
|---|---|---|---|
| Nystrom, R. Crafting Interpreters, Part II | I | Tree-walk. After your milestone 5 | 4 |
| Nystrom, R. Crafting Interpreters, Part III | II | Bytecode, VM, GC. After milestone 10 | 5 |
| Jones, Hosking & Moss. The Garbage Collection Handbook, 2nd ed. | II | Ch. 2–3 and 9 | 3 |
| Wilson, P. R. Uniprocessor Garbage Collection Techniques. IWMM 1992 | II | The best survey | 1.5 |
| Ertl & Gregg. The Structure and Performance of Efficient Interpreters. JILP 5, 2003 | II | Dispatch techniques, measured | 1.5 |
| Pratt, V. Top Down Operator Precedence. POPL 1973 | I | Nine pages | 1 |
P12 — Kernel
17 hours. P12.
| Reading | Why | h |
|---|---|---|
| Arpaci-Dusseau & Arpaci-Dusseau. Operating Systems: Three Easy Pieces | Virtualization + concurrency. Read alongside your current milestone | 6 |
| Cox, Kaashoek & Morris. xv6 (RISC-V edition) | The book and the source. ~9,000 readable lines | 4 |
| Lampson, B. W. Hints for Computer System Design. SOSP 1983 | Re-read; written by an OS designer about OS design | 1.5 |
| Denning, P. J. The Working Set Model for Program Behavior. CACM 11(5), 1968 | Why locality makes any of this work | 1 |
| Ousterhout, J. Why Aren't Operating Systems Getting Faster…? USENIX 1990 | Still true | 1 |
| Ritchie & Thompson. The UNIX Time-Sharing System. CACM 17(7), 1974 | Design taste in eleven pages | 1 |
| Anderson, T. E. et al. Scheduler Activations. SOSP 1991 | The user/kernel threading boundary | 1 |
| Bélády, Nelson & Shedler. An anomaly in space-time characteristics… CACM 12(6), 1969 | The anomaly you will reproduce | 0.5 |
| RISC-V Privileged Architecture Specification | Trap and paging chapters | 1 |
P13 — Tensor Framework
12 hours. P13.
| Reading | Why | h |
|---|---|---|
| Baydin, A. G. et al. Automatic Differentiation in ML: a Survey. JMLR 18, 2018 | The clearest treatment of modes and their costs | 3 |
| Paszke, A. et al. PyTorch. NeurIPS 2019 | Design decisions of the thing you are reimplementing | 2 |
| Abadi, M. et al. TensorFlow. OSDI 2016 | The static-graph alternative and its rationale | 2 |
| Griewank & Walther. Evaluating Derivatives, 2nd ed. | Ch. 3–4, for rigour | 2 |
| Chen, T. et al. Training Deep Nets with Sublinear Memory Cost. 2016 | Gradient checkpointing | 1.5 |
| Chen, T. et al. TVM. OSDI 2018 | Fusion as a compiler problem | 1.5 |
P14 — Hardware-Aware
13 hours. P14.
| Reading | Why | h |
|---|---|---|
| Jouppi, N. P. et al. In-Datacenter Performance Analysis of a TPU. ISCA 2017 | Read after designing your own accelerator | 3 |
| Goto & van de Geijn. Anatomy of High-Performance Matrix Multiplication. ACM TOMS 34(3), 2008 | Why BLAS is fast | 2.5 |
| Chen, Emer & Sze. Eyeriss. ISCA 2016 | Dataflow taxonomy; the energy argument | 2 |
| Drepper, U. What Every Programmer Should Know About Memory. 2007 | Long; the best treatment of cache behaviour | 2 |
| Williams, Waterman & Patterson. Roofline. CACM 52(4), 2009 | The model | 1.5 |
| Micikevicius, P. et al. Mixed Precision Training. ICLR 2018 | Why fp16 needs loss scaling | 1 |
| Dettmers, T. et al. LLM.int8(). NeurIPS 2022 | Where naive int8 breaks | 1 |
P15 — Integration and Writing
~10 hours, plus question-specific literature. P15, final-system.
| Reading | Why | h |
|---|---|---|
| Blackburn, S. M. et al. The Truth, The Whole Truth, and Nothing But the Truth. ACM TOPLAS 38(4), 2016 | The best checklist for a systems evaluation section | 2 |
| Hoefler & Belli. Scientific Benchmarking of Parallel Computing Systems. SC 2015 | Twelve rules; apply all twelve | 1.5 |
| Peyton Jones, S. How to Write a Great Research Paper. MSR 2004 | Write the paper first | 1 |
| Zobel, J. Writing for Computer Science, 3rd ed. | The report format | 2 |
| Collberg & Proebsting. Repeatability in Computer Systems Research. CACM 59(3), 2016 | Before the reproducibility appendix | 1 |
| Bailey, D. H. Twelve Ways to Fool the Masses… 1991 | A list of things not to do | 0.5 |
| Shewchuk, J. R. Three Sins of Authors in Computer Science and Math. 1997 | 0.5 h, permanently useful | 0.5 |
| Question-specific literature | Varies | 1.5+ |
Source Code Worth Reading
Often more valuable per hour than the papers, and not counted in the budget above. Always read after your own implementation, never before.
| Codebase | After | Why |
|---|---|---|
micrograd (Karpathy, ~150 lines) | P13 milestone 1 | You will have independently invented most of it |
nanoGPT (Karpathy) | P01 milestone 7 | A check on your choices, not a source for them |
LevelDB — db_impl.cc, version_set.cc | P04 milestone 9 | The clearest small LSM in existence |
| xv6 (~9,000 lines) | P12, continuously | Small enough to hold entirely in your head |
hnswlib — hnswalg.h | P02 milestone 7 | ~1,000 lines; the neighbour heuristic in practice |
| etcd/raft | P05 milestone 8 | A production Raft with a readable state machine |
Redis — t_string.c, ae.c | any time | Exemplary C |
| SQLite — the source and the documentation | P03/P04 | Possibly the best-documented codebase in existence |
CPython — ceval.c | P11 phase II | A real dispatch loop |
| Lua 5.x (~20,000 lines) | P11 phase II | A register VM; small, complete, elegant |
The Ten That Matter Most
If a quarter goes badly and you must triage, protect these.
| # | Reading | Why it survives the cut |
|---|---|---|
| 1 | Ongaro & Ousterhout, Raft (extended) | The only way to get P05 right, and §5.4.2 is a bug you will otherwise ship |
| 2 | Akidau et al., The Dataflow Model | Reframes "correctness" for unbounded input; nothing else does this |
| 3 | Jouppi et al., TPU | Makes the entire hardware/software boundary legible |
| 4 | O'Neil et al., LSM-Tree | The cost model that generalises to every storage decision |
| 5 | Baydin et al., AD Survey | The forward-vs-reverse argument, cleanly |
| 6 | Kohavi, Tang & Xu, Trustworthy Experiments | The only book here that will change what you do at work next week |
| 7 | Malkov & Yashunin, HNSW | Algorithm 4, which everyone skips and which is load-bearing |
| 8 | Dean & Barroso, The Tail at Scale | Six pages; permanently changes how you read a latency number |
| 9 | Lampson, Hints for Computer System Design | The closest thing to transferable design judgement in print |
| 10 | Hamming, You and Your Research | About whether you finish, which is the binding constraint |
Nine of the ten are freely available. The exception is Kohavi et al., which is worth buying.