05 — Papers and Talks

Ten pieces of source material every serious C engineer has consumed. Not “read once” — internalized. These are the references your senior colleagues will assume you know when they say “yeah, cache-line contention, standard Drepper stuff.” Watch them in the sequence below; each was verified live in mid-2026.

The ten

#

Title

Author

Year

Format

Length

Link

Why this

1

What Every Programmer Should Know About Memory

Ulrich Drepper (glibc maintainer at the time)

2007

Paper (PDF)

114 pages

https://people.freebsd.org/~lstewart/articles/cpumemory.pdf

The reference on caches, TLB, NUMA, and prefetching. §1-3 mandatory; §4-6 skim; §6.5.8 NUMA advice is partly dated per SO thread — mind the year.

2

How I Program C

Eskil Steenberg

2016

Talk

1h 47m

https://www.youtube.com/watch?v=443UNeGrFoM

Naming conventions, module boundaries, why he never uses IDEs. Practitioner-level hygiene.

3

Fork Yeah! The Rise and Development of illumos

Bryan Cantrill

2011 (LISA’11)

Talk

1h 4m

https://www.youtube.com/watch?v=-zRN7XLCRhc

The best history-of-Unix-culture talk on the internet. Cantrill’s other talks (dtrace.conf, Papers We Love) are all worth it too.

4

A History of Clang and LLVM

Chris Lattner + Vikram Adve

2007 LLVM devmtg (+ 2025 Pragmatic Engineer retrospective)

Talks

45m + 3h

https://llvm.org/devmtg/2007-05/ · retrospective: search “Pragmatic Engineer Chris Lattner 25 years of LLVM”

You will use clang every day. Know where it came from and why.

5

The Development of the C Language

Dennis M. Ritchie

1993 (HOPL-II)

Paper

22 pages

https://www.bell-labs.com/usr/dmr/www/chist.html

Straight from Ritchie. Why C looks the way it does — the PDP-11, B, BCPL, the union with UNIX.

6

Some Were Meant for C

Stephen Kell

2017 (Onward!)

Paper

20 pages

https://www.cl.cam.ac.uk/~srk31/research/papers/kell17some-preprint.pdf

The academic case that C is the communication language of systems, not a legacy language to be replaced. Cite this in arguments.

7

Latency Numbers Every Programmer Should Know

Jeff Dean (via Peter Norvig)

2012, still updated

Reference card

1 page

https://gist.github.com/jboner/2841832 · interactive: https://colin-scott.github.io/personal_website/research/interactive_latency.html

Memorize order-of-magnitude by month 6.

8

The Night Watch

James Mickens

2013

Essay

8 pages

https://www.usenix.org/system/files/1311_05-08_mickens.pdf

Systems humor that is also systems truth. What debugging C at 2 AM actually feels like.

9

Papers We Love (curated)

community

2014-present

Repo of PDFs

Vary

https://github.com/papers-we-love/papers-we-love

Systems, compilers, OS papers, curated. Pick one per month.

10

Casey Muratori — “Clean” Code, Horrible Performance

Casey Muratori

2023

Talk / blog

30 min

https://www.computerenhance.com/p/clean-code-horrible-performance

The definitive counter-argument to Uncle Bob’s clean-code-at-any-cost school. Read + measure yourself.

Bellard: no talks, all code

Fabrice Bellard (QEMU, FFmpeg, TCC, TinyEMU, JSLinux) almost never gives studies. His talks are his repositories: https://bellard.org. Read the TCC source in M12 — it is a full C99 compiler in ~30k lines of C. That is the talk.

What most people get wrong about “must-read” lists

They save the PDF. Reading Drepper on a Sunday afternoon in one sitting is worth more than a folder full of unread papers. Block 3 hours in month 6, read §1-3 of Drepper, take notes by hand. Same for Ritchie’s HOPL paper. Consumption without notes ≠ consumption.

Return to README.md · Next: 06_blogs_and_newsletters.md