Reading List
Over my career I've read a lot of books — these are the foundational ones: the titles that shaped how I think about computers, code, and the systems underneath them.
- Computer Systems: A Programmer's Perspective
How programs actually run on hardware — bits and numeric representation, machine code, the memory hierarchy, linking, virtual memory, and concurrency. The book that turned "magic" into mechanics for me.
- The Elements of Computing Systems: Building a Modern Computer from First Principles
Builds a working computer from NAND gates up: logic, ALU, CPU, assembler, VM, compiler, OS. The hands-on companion to CS:APP — you don't just read about the stack, you build it.
- Code: The Hidden Language of Computer Hardware and Software
Petzold walks from Morse code and flashlight signals, through relays and logic gates, all the way to a working CPU — every step motivated before it appears. The gentlest on-ramp to how computers actually work.
- The Information: A History, a Theory, a Flood
Gleick tells the story of information itself — African talking drums, the telegraph, Babbage and Lovelace, and then Shannon, who made "information" a measurable quantity in bits. The prehistory of everything in this list: entropy, compression, and error correction as ideas before they were engineering.
- Code Complete
A thousand pages of concrete advice on the craft of writing code: naming, routines, control flow, defensive programming, debugging, refactoring. Dense but readable — the kind of book you keep reaching for years later.
- Designing Data-Intensive Applications
Kleppmann maps the landscape of modern data systems: storage engines, replication, partitioning, transactions, consensus, batch and stream processing. Explains the tradeoffs behind every database and message queue decision you'll ever make.
- A Brief History of Intelligence: Evolution, AI, and the Five Breakthroughs That Made Our Brains
Bennett retells 600 million years of brain evolution as five breakthroughs — steering, reinforcing, simulating, mentalizing, speaking — and at each one asks what the equivalent move was in AI. The clearest account I know of why reinforcement learning, world models, and language turned out to be the hard problems.
- Why Machines Learn: The Elegant Math Behind Modern AI
Ananthaswamy traces the mathematical ideas — from the perceptron through gradient descent, kernels, and backpropagation — that quietly underpin modern machine learning. A readable bridge between the hand-wavy pop-sci story and a real textbook.
- An Introduction to Statistical Learning: with Applications in Python
James, Witten, Hastie, Tibshirani, and Taylor cover the classical machine learning toolkit — linear and logistic regression, cross-validation and the bootstrap, ridge and lasso, splines and GAMs, trees and ensembles, SVMs, PCA and clustering — with the math kept to what you need and a Python lab after every chapter. The real textbook the pop-science accounts keep pointing at.
- Deep Learning with Python, Third Edition
Chollet's hands-on tour of modern deep learning in Keras — from dense nets and convnets to transformers and generative models. Practical, opinionated, and written by the person who built the framework.
- High Performance Browser Networking
Grigorik unpacks the network stack the browser actually uses: TCP, TLS, HTTP/1.1, HTTP/2, WebSocket, WebRTC, and the mobile radio layer underneath it all. If you ship anything over the wire, it explains why your page is slow.
- Fluent Python: Clear, Concise, and Effective Programming
Ramalho goes past the syntax and into Python's data model: how dunder methods, descriptors, iterators, coroutines, and the async machinery actually fit together. The book that turns a Python user into a Python programmer.
- JavaScript: The Definitive Guide
Flanagan's encyclopedic reference to the language: types, objects, closures, classes, modules, async, and the full standard library. Thick, precise, and the one book to own if you want the whole language in one place.
- Pro Git
Chacon and Straub's free, official Git book: from daily workflow through branching, merging, and rebasing, all the way down to the object model and plumbing commands. The clearest explanation of what Git is actually doing when you type `git`.
- Seven Concurrency Models in Seven Weeks
Butcher walks through threads and locks, functional programming, the Clojure identity/state split, actors, CSP, data parallelism on the GPU, and the lambda architecture — one paradigm per week. The book that makes "pick the right concurrency model" a real choice instead of a slogan.