Hall of Fame
Engineering writing worth reading more than once, chosen by hand rather than ranked. Most of it is decades old and still the clearest statement of its idea.
62 works · 8 sections · 1968–2024
Distributed systems16
Time, Clocks, and the Ordering of Events in a Distributed System
Leslie Lamport36 min
Where "happened before" comes from, and the logical clocks every distributed system since has leaned on.
The Byzantine Generals Problem
Leslie Lamport, Robert Shostak, Marshall Pease52 min
How to agree when some participants lie, and the proof that a third of them is the limit.
Paxos Made Simple
Leslie Lamport20 min
Consensus explained plainly, after the original paper's parable of a Greek parliament defeated most readers.
In Search of an Understandable Consensus Algorithm (Raft)
Diego Ongaro, John Ousterhout1 h
Consensus designed to be understood first, which is why etcd, Consul and CockroachDB implement this and not Paxos.
A Note on Distributed Computing
Jim Waldo, Geoff Wyant, Ann Wollrath, Sam Kendall38 min
Why a remote call can never be made to look like a local one, argued before most of the systems that tried.
Dynamo: Amazon's Highly Available Key-value Store
Giuseppe DeCandia et al.1 h
Consistent hashing, vector clocks and sloppy quorums in one system; Cassandra and Riak descend from it.
The Google File System
Sanjay Ghemawat, Howard Gobioff, Shun-Tak Leung1 h
Storage built on the assumption that disks fail constantly, which turned out to be the right one.
MapReduce: Simplified Data Processing on Large Clusters
Jeffrey Dean, Sanjay Ghemawat39 min
Two functions that made thousand-machine batch jobs something one engineer could write.
Bigtable: A Distributed Storage System for Structured Data
Fay Chang et al.48 min
The wide-column model behind HBase and a generation of databases that followed.
The Chubby Lock Service for Loosely-Coupled Distributed Systems
Mike Burrows59 min
Why coordination belongs in a small, boring, highly available service; ZooKeeper and etcd are its heirs.
Spanner: Google's Globally-Distributed Database
James C. Corbett et al.46 min
External consistency across continents, bought with GPS and atomic clocks and a bounded uncertainty interval.
End-to-End Arguments in System Design
J. H. Saltzer, D. P. Reed, D. D. Clark26 min
The principle that shaped the internet: put a function where it can be done correctly, usually at the ends.
The Log: What every software engineer should know about real-time data's unifying abstraction
Jay Kreps54 min
The append-only log as the thing databases, replication and stream processing all turn out to be; the idea behind Kafka.
Notes on Distributed Systems for Young Bloods
Jeff Hodges17 min
The lessons people otherwise learn by paging themselves at 3am, written down in one place.
Please stop calling databases CP or AP
Martin Kleppmann15 min
Why the CAP theorem, as usually quoted, tells you almost nothing about a real database.
Jepsen analyses
Kyle Kingsbury1 min
What databases actually do under partitions, as opposed to what their documentation says.
Databases and storage3
Architecture of a Database System
Joseph M. Hellerstein, Michael Stonebraker, James Hamiltonpaper3 h
How a relational database is actually built, process model to query executor, by people who built several.
The Internals of PostgreSQL
Hironobu Suzukiessay7 min
MVCC, the WAL, vacuum and the buffer manager, explained from the source of one real database.
How Discord Stores Trillions of Messages
Bo Ingramessay11 min
A migration off Cassandra told with the hot partitions, the request coalescing and the numbers left in.
The craft18
Go To Statement Considered Harmful
Edsger W. Dijkstra1 min
A short letter to the editor that started structured programming, and every "considered harmful" title since.
On the Criteria To Be Used in Decomposing Systems into Modules
David L. Parnaspaper21 min
Information hiding, stated clearly for the first time: split a system by what is likely to change.
Hints for Computer System Design
Butler W. Lampsonpaper1 h
Decades of systems design distilled into slogans that have aged remarkably well.
Programming as Theory Building
Peter Naur
Why a program is the theory in its authors' heads, and what is lost when they leave.
No Silver Bullet: Essence and Accidents of Software Engineering
Frederick P. Brooks, Jr.paper34 min
Why no single technique will ever make software an order of magnitude easier, and which difficulty is essential.
The Rise of "Worse is Better"
Richard P. Gabrielessay7 min
Why the simple, incomplete design spreads and the right one does not.
Why Functional Programming Matters
John Hughespaper38 min
The case for higher-order functions and laziness as tools for gluing programs together.
Big Ball of Mud
Brian Foote, Joseph Yoderpaper1 h
An honest account of the architecture most systems actually have, and why it keeps winning.
Things You Should Never Do, Part I
Joel Spolskyessay6 min
The argument against rewriting from scratch, which every team rediscovers once.
The Joel Test: 12 Steps to Better Code
Joel Spolskyessay16 min
Twelve yes-or-no questions about a team, most of which still sort good ones from bad.
Teach Yourself Programming in Ten Years
Peter Norvigessay12 min
The antidote to "learn it in 21 days", with the latency table half the internet later copied.
Out of the Tar Pit
Ben Moseley, Peter Markspaper2 h
Complexity as the root problem of software, and state as the root of complexity.
Execution in the Kingdom of Nouns
Steve Yeggeessay13 min
What happens to a language that makes verbs second-class, told as a fable.
Falsehoods Programmers Believe About Names
Patrick McKenzieessay3 min
Forty assumptions about people's names, every one of them wrong, and a genre of lists that followed.
Simple Made Easy
Rich Hickeytalk9 min
The difference between simple and easy, and why confusing them produces tangled systems.
Choose Boring Technology
Dan McKinleyessay8 min
Innovation tokens: every team can afford only a few, so spend them where they matter.
Write code that is easy to delete, not easy to extend
tefessay15 min
Designing for the code you will throw away, which is most of it.
Parse, Don't Validate
Alexis Kingessay18 min
Let the type system remember what you have already checked, instead of checking it again.
Performance5
What Every Computer Scientist Should Know About Floating-Point Arithmetic
David Goldbergpaper2 h
Why 0.1 + 0.2 is not 0.3, and everything else that follows from representing reals in binary.
What Every Programmer Should Know About Memory
Ulrich Drepperpaper7 h
Caches, TLBs and NUMA from the hardware up, and what they mean for the code you write.
Latency Numbers Every Programmer Should Know
Jeff Dean, Peter Norvig; interactive by Colin Scott1 min
An L1 hit to a transatlantic round trip, on one scale, updated year by year.
The USE Method
Brendan Greggessay16 min
Utilisation, saturation and errors for every resource: a checklist that finds bottlenecks instead of guessing.
The Tail at Scale
Jeffrey Dean, Luiz André Barrosopaper1 min
Why the slowest one percent of requests decides how fast a large system feels, and how to hedge against it.
Security4
Reflections on Trusting Trust
Ken Thompsontalk9 min
A compiler that inserts a backdoor into itself: the Turing Award lecture that ended naive trust in source code.
Smashing the Stack for Fun and Profit
Aleph Oneguide31 min
The Phrack article that taught a generation how buffer overflows actually work.
Security Engineering
Ross Anderson5 min
How real systems fail against real attackers, from banking to warfare; free in full.
The xz backdoor disclosure
Andres Freundpostmortem8 min
A multi-year supply-chain attack on a compression library, caught because SSH logins got half a second slower.
Reliability and operations6
How Complex Systems Fail
Richard I. Cookessay2 min
Eighteen observations from medicine that describe every production outage there has ever been.
On Designing and Deploying Internet-Scale Services
James Hamiltonpaper43 min
The operations checklist from running some of the largest services of its time, most of it still right.
The Twelve-Factor App
Adam Wigginsessay1 min
The conventions that made applications portable across platforms, now so common they read as obvious.
Reading postmortems
Dan Luuessay10 min
What a pile of public postmortems says about why systems fail: error handling, configuration, and not much else.
Site Reliability Engineering
Betsy Beyer et al. (Google)1 min
Error budgets, toil and blameless postmortems, from the team that named the discipline; free in full.
Details of the Cloudflare outage on July 2, 2019
John Graham-Cummingpostmortem22 min
A regular expression that took down a large part of the web, and the model for how to write it up.
Languages, systems and the web7
The UNIX Time-Sharing System
Dennis M. Ritchie, Ken Thompsonpaper43 min
Files, processes and pipes, described by the two people who designed them.
Growing a Language
Guy L. Steele Jr.essay43 min
A talk on language design delivered using only one-syllable words, until it defines new ones.
Responsive Web Design
Ethan Marcotteessay10 min
The article that gave the web one layout for every screen, and a name to the idea.
Learnable Programming
Bret Victoressay41 min
What a programming environment would look like if it were designed for understanding rather than typing.
High Performance Browser Networking
Ilya Grigorik
TCP, TLS, HTTP/2 and WebSockets, and what each costs the page a reader is waiting for; free in full.
The Web's Grain
Frank Chimeroessay17 min
Designing with the edgeless, fluid nature of the web instead of against it.
Crafting Interpreters
Robert Nystromguide13 min
Two complete interpreters built from nothing, a line at a time; free in full.
Machine learning3
Hidden Technical Debt in Machine Learning Systems
D. Sculley et al.paper25 min
Why the model is the small box in the middle of a machine learning system, and the rest is where it breaks.
Attention Is All You Need
Ashish Vaswani et al.paper27 min
The transformer, introduced as a translation model, and the architecture under every large language model since.
The Bitter Lesson
Rich Suttonessay5 min
Seventy years of AI research says general methods that scale with compute beat hand-built knowledge.