Contents
Modern Software Tools, Explained
The concepts behind the tools programmers use every day — how they work, why they are designed the way they are, and what tradeoffs they make.
Data Structures
The shapes data takes in memory — and what those shapes make fast or slow.
- Think in Arrays, Not in Loops Rank, shape, broadcasting, reduce, and tacit composition from APL, in runnable JavaScript.
- Ropes and Piece Tables The text-buffer structures behind modern editors: gap buffers, ropes, piece tables, and undo history.
- Filesystems and B-Trees Why B-trees matter for disk-backed systems, including search, splitting, deletion, and a miniature filesystem.
- The Balanced Bookshelf AVL trees, red-black trees, ordered maps, and when a balanced tree beats a hash table.
- The Casino Data Structure Probabilistic balancing, Redis sorted sets, rank queries, and a full skip-list implementation.
- Good Enough Answers Bloom filters, count-min sketch, HyperLogLog, and the case for approximate answers.
Storage Engines
How data survives a crash, scales past memory, and stays consistent under concurrency.
Algorithms
Sorting, searching, and compressing — the workhorses underneath every system.
- The Practical Champion Quicksort, pivot choice, introsort, and the cases where the fastest in-memory sorter is not the right tool.
- Sorting Bigger Than RAM External mergesort, run generation, k-way merging, and sequential I/O.
- The Compression Game Shannon entropy, Huffman coding, LZ77 back-references, and how gzip combines both.
- How JPEG Works Color transforms, chroma subsampling, DCT, quantisation, and the block-level mechanics of lossy compression.
Networks and Security
Reliability, trust, and secrecy across an untrusted network.
- The Reliable Network How IP routes around failure and how TCP repairs loss with ACKs and retransmission.
- The Two-Key Trick Public-key cryptography, toy RSA, signatures, and the role these ideas play in TLS.
- How TLS Secures the Internet The TLS 1.3 handshake, Diffie-Hellman, certificates, and forward secrecy.
Languages and Theory
The ideas that define what programs are, what they can express, and whether they can run at all.
- What Can Be Computed at All? Hilbert, Gödel, Turing machines, the halting problem, decidability, and the jump to P vs NP.
- How a Compiler Compiles Itself Self-hosting, bootstrap stages, Squeak Smalltalk, and Thompson's trusting-trust attack.
- Two Languages That Broke the Rules Lisp and Forth: homoiconicity, eval, closures, macros, stacks, and malleable language design.
Tools and Systems
The infrastructure programmers live in — version control, interfaces, and distributed consensus.
- How Git Stores History Blobs, trees, commits, refs, and the index — immutable objects and movable pointers.
- The Great GUI Ideas Memex, Engelbart, PARC, Xanadu, HyperCard, and the arguments that shaped modern graphical interfaces.
- The Raft Consensus Algorithm Leader election, replicated logs, quorum commits, and staying consistent through crashes and partitions.