Skip to content

Part IV – Software & Languages

Who designed the programming languages, and why: Hopper’s compilers, Backus’s FORTRAN, ALGOL, C and Unix at Bell Labs, and on to Java, Python and Rust. The part also covers operating systems from Multics to Linux and Windows NT, the practices that grew out of the 1968 software crisis, and core concepts such as compilers, type systems and garbage collection.

Language Designers

Languages & Paradigms

Operating Systems & Infrastructure

Practices & Culture

  • The Story of Mel — hacker folklore’s epic poem: drum memory, self-modifying code, and the Real Programmer who was real
  • The Software Crisis — the 1968 NATO Garmisch conference, Brooks’s Law, No Silver Bullet, and computing’s permanent problem
  • Software Testing and QA — Dijkstra’s hard truth, Myers’s destructive mindset, TDD, CI, and fuzzing
  • Design Patterns and the Gang of Four — 23 patterns that gave software engineering a shared vocabulary
  • UML and the Three Amigos — Booch, Rumbaugh, and Jacobson ending the OO “method wars” at Rational, and why the dream of generating systems from diagrams died while class and sequence diagrams lived
  • The Open Source Revolution — Stallman, Torvalds, and the software that runs the world
  • The Open Source Movement — the gift economy, BDFLs and constitutions, the free-software schism, forks as politics, and who pays the maintainers
  • The Open Source Business Model — GPL, Red Hat, dual licensing, and the BSL license pivot
  • Volunteer-Maintained Infrastructure — Heartbleed, left-pad, Log4Shell, and the xz backdoor: the unpaid maintainers under the whole stack, and who finally started paying them
  • The Rise of Version Control — from RCS and CVS to Git and GitHub as social infrastructure
  • The Agile Revolution — from waterfall to the Agile Manifesto (2001) to a consulting industry
  • The DevOps Revolution — Patrick Debois, Flickr’s 10 daily deploys, and the Wall of Confusion
  • The IDE Wars — Emacs vs. vi, Eclipse, JetBrains, and VS Code
  • The Microservices Revolution — Amazon’s 2002 API mandate through Netflix’s cloud migration
  • Famous Software Disasters — Therac-25, Ariane 5, the Patriot clock drift, Mars Climate Orbiter, Knight Capital, and the Post Office Horizon scandal
  • Spreadsheet Errors — Panko’s error rates, TransAlta’s $24 million paste, Barclays’s hidden Lehman rows, the London Whale’s sum-for-average, genes renamed for Excel, 15,841 lost COVID cases, and ExceLint
  • The Reproducibility Crisis in Computational Science — Claerbout’s rebuildable figures, WaveLab’s “advertising of the scholarship”, Chang’s mirror-image proteins, the Duke trials, an unsorted glob, code that does not build, and the Ten Years Reproducibility Challenge
  • Scandinavian Participatory Design — Nygaard and the Iron and Metal Workers, data shop stewards, DEMOS, and UTOPIA’s cardboard laser printer

Core Concepts & Theory

  • The Compiler — Hopper to FORTRAN to LLVM: how translation became an engineering discipline
  • Assembly, Machine Code and Bytecode — the low-level layer, the JVM, JIT, and the all-hardware-Java dead end
  • Type Systems — static vs. dynamic, Hindley-Milner inference, and Curry-Howard
  • Garbage Collection — McCarthy’s 1959 invention, the long skepticism, and Rust’s reversal
  • Data Structures — arrays to B-trees, Big-O, and the cache reckoning
  • Data Compression — Shannon’s entropy floor, Huffman’s exam trick, Lempel–Ziv, and the lossy JPEG/MP3 schemes that built the media internet
  • Coding Theory and Error Correction — Hamming’s weekend frustration, Reed–Solomon behind CDs and Voyager, and the turbo/LDPC codes that finally reached the Shannon limit
  • Formal Methods and Model Checking — proving software correct: temporal logic, the 2007 Turing-Award model-checking breakthrough, TLA+, and verifying chips and cloud protocols
  • Operating System Concepts — kernels, processes, scheduling, virtual memory, and the Tanenbaum-Torvalds debate
  • Concurrency and Parallelism — the end of the free lunch, locks, CSP, actors, and the GIL
  • Distributed Systems — FLP, CAP, Paxos/Raft, and why you cannot abstract away the network
  • File Systems — FAT to ext to ZFS, journaling, copy-on-write, and the license that kept ZFS out of Linux