Intriguing Stories in Computer Science - Invent with Python
I am now... of a certain age... and there's a ton of anecdotes in the history of computer science and software development that I've heard, but I wondered if there's more. I had an LLM compiler a list (though I've carefully reviewed and fixed a bunch of the links). Many of these I had heard before but some were new to me. Click through them if you're interested. Most of the links go to Wikipedia; I've made sure the links at least don't go to slop content farm websites.
The prompt I used was, loosely, "Tony Hoare has a comment about "null" being his billion dollar mistake. What are some other intriguing stories about programming and software design, either positive or negative?" (Though the start of the list is dominated by computer glitch stories, and it seems to stray into concepts more than stories.)
Raymond Chen is a venerable Microsoft engineer and his blog The Old New Thing (and book of the same name) has a ton of great stories. Joel Spolsky's blog Joel on Software is also a classic source for stories and guidance.
Tony Hoare’s “billion-dollar mistake” — inventing the null reference.
Ariane 5 Flight 501 — a reused integer conversion overflow destroyed the rocket.
Mars Climate Orbiter — metric/imperial unit mismatch lost a spacecraft.
Therac-25 — race conditions and poor safety design caused lethal radiation overdoses.
Knight Capital — a botched deployment lost about $440 million in 45 minutes.
Patriot missile failure — accumulated floating-point timing error contributed to 28 deaths. This article also links to Wikipedia's lethal autonomous weapons article.
Pentium FDIV bug — a tiny lookup-table error caused incorrect division results, leading to the first full recall of a computer chip, costing $475 million.
Heartbleed — missing bounds checking exposed arbitrary server memory.
Morris worm — an experiment in self-replicating software accidentally crippled much of the early Internet.
AT&T’s 1990 outage — one faulty recovery path caused cascading telephone-switch failures. (The entire List of software bugs article is interesting.)
Cloudflare’s 2019 regex outage — catastrophic backtracking consumed CPUs across its network.
GitLab’s 2017 database incident — an administrator accidentally deleted production data during recovery.
Unix pipes — Doug McIlroy’s composability idea became one of computing’s most durable design patterns, also known as "Unix philosophy"
Unix “everything is a file” — a simplifying abstraction that made unrelated tools work together.
C’s gets() — an API so inherently unsafe it was eventually removed from the language standard.
Java’s checked exceptions — a deliberate safety feature that became one of the language’s longest-running design controversies.
JavaScript’s 10-day creation — Complete jerkwad and crypto shill Brendan Eich’s rushed implementation left quirks that shaped the web for decades.
The browser “quirks mode” — deliberately preserving old bugs became necessary for web compatibility.
Goto Considered Harmful — Dijkstra’s short letter helped ignite the structured-programming revolution.
Netscape’s rewrite — throwing away the old browser code became a canonical warning about full rewrites.
SQLite’s testing culture — an unusually exhaustive test system became central to its reputation for reliability.
Erlang’s “let it crash” — designing systems around failure rather than trying to prevent every failure.
Smalltalk’s “message passing” — object-oriented programming emerged from a much richer idea than classes and inheritance.
The Lisp garbage collector — automatic memory management, once radical, became mainstream decades later.
The Algol 60 report — unusually precise language specification influenced generations of programming-language design.
The C++ “zero-overhead principle” — abstractions should cost nothing beyond what hand-written lower-level code would cost.
Rust’s borrow checker — moving memory-safety rules into the type system challenged assumptions about systems programming.
The Space Shuttle software — famously conservative engineering achieved exceptionally low defect rates. "The Legacy of Space Shuttle Flight Software" is an 83 page document.
The Toyota unintended-acceleration software litigation — exposed how tangled embedded code can become a safety issue.
The Y2K problem — two-digit year shortcuts created a vast, expensive maintenance exercise decades later. Oh my god, people who are 30 years old today don't remember Y2K. Oh god, I am so old.
The 2038 problem — Unix’s 32-bit time representation repeats the lesson with a different integer.
The leap-second bugs — seemingly harmless assumptions about time have repeatedly crashed large systems.
Debian’s OpenSSL bug — removing “uninitialized” code that looked wrong drastically weakened random-number generation.
Apple’s goto fail bug — a duplicated line bypassed TLS certificate verification.
Left-pad — deleting an 11-line...