I am often asked for suggestions on reading material on various topics: computer science, systems programming, mathematics, art, etc. This is a bibliography of works that I have either read, watched, or at least skimmed enough to know they have the right things in them. Works are ordered by topic and sorted by authors’ names, and include writings, talks, and code. Some are written by me or my friends.
Citations are provided in a knockoff APA format. If the work is available for free offline, the title is a link to it.
Hover over the the titles for my commentary. In my comments, I offer a description of the work, an interesting question it poses or answers, or why it’s important to me.
Beingessner, A. C Isn’t A Programming Language AnymoreFundamental problems with the so-called “C ABI”..
Beingessner, A. How Swift Achieved Dynamic Linking Where Rust Couldn’tHow to do shared libraries right..
Cooper, K., Torczon, G. Engineering a CompilerA graduate-level introduction to compiler design.. Morgan Kaufmann, 2nd ed.
Drepper, U. How to Write Shared LibrariesHow on earth does dynamic linking actually work?.
Gallant, A. regex-automata
An immaculately well-documented regular expressions engine toolkit..
Go Authors, The. escape.go
Go’s unreasonably effective escape analysis algorithms..
LLVM Authors, The. Auto-Vectorization in LLVMVectorization idioms in LLVM..
LLVM Authors, The. LLVM Loop Terminology (and Canonical Forms)Notes on how LLVM conceptualizes and tracks loops within an SSA-CFG..
LLVM Authors, The. LLVM Link Time Optimization: Design and Implementation.An introduction to LTO..
LLVM Authors, The. LLVM’s Analysis and Transform PassesA collection of descriptions of various LLVM passes..
LLVM Authors, The. MergeFunctions pass, how it worksA tricky optimization..
Lopes, N., Regehr, J. Future Directions for Optimizing CompilersIf we were re-doing LLVM twenty years later, what should we do different?.
Nystrom, R. Crafting InterpretersImplement a programming language from parser to JIT.. Genever Benning.
Regehr, J. Why Do Peephole Optimizations Work?What kind of code transformation is an optimization supposed to be?.
Riessmann, N., Mayer, J. C., Bahmann, H., Själander, M. RVSDG: An Intermediate Representation for Optimizing CompilersBeyond SSA and MLIR: everything is dataflow..
Taylor, I. L., “The Linker Essay”A 20 part series of post on the nature of linkers with particular emphasis on gold
..
Warren, H. S. Hacker’s DelightAn essential text. The complete bible of every bit trick known to compiler-writer-kind.. Addison-Wesley, 2nd ed.
Young de la Sota, M. Everything You Never Wanted To Know About Linker ScriptA tour of the murky world of linker script..
Young de la Sota, M. A Gentle Introduction to LLVM IRHow does LLVM actually work?.
Yuyou, F. High-Throughput, Formal-Methods-Assisted Fuzzing for LLVMFuzz LLVM, file lots of correctness bugs..
Bos, M. Rust Atomics and LocksA comprehensive introduction to concurrency primitive design from the ground up.. O’Reilly.
Cox, R. Hardware Memory ModelsA survey of runtime atomic semantics on various machines..
Cox, R. Programming Language Memory ModelsA survey of formal atomic semantics of various programming languages..
Cox, R. Updating the Go Memory ModelBased on the previous two, design discussion on how Go should specify atomic behavior..
Fowles-Kulukundis, M. Building a lock-free MPMC queue for tcmallocA tragicomedy in concurrency primitive design..
Kennelly, C. Restartable Sequence Mechanism for TCMallocAn excellent real-world example of per-CPU concurrency..
Milewski, B. Benign Races Considered HarmfulSeminal post on the nature of data races..
LLVM Authors, The. LLVM Atomic Instructions and Concurrency GuideLLVM’s internal conception of the C++ memory model..
Reghr, J. A Close Look at a SpinlockThe humblest lock is more subtle than you might expect..
Young de la Sota, M. Atomicless ConcurrencyAn introduction to Linux restartable sequences..
Benjamin, D. `base64_ascii_to_bin(). A constant-time implementation of base64 decode..
Bernstein, D. J., Lange, T. Explicit-Formulas DatabaseA collection of explicit formulas for point addition on a number of elliptic curves..
Langley, A. AEADs: getting better at symmetric cryptographyWhy we have AEADs (authenticated encryption with
additional data). a key encryption primitive on the web..
Langley, A., Benjamin, D. BoringSSLForking OpenSSL for the sake of better encryption..
Langley, A. PKCS#1 signature validationHidden length extension attacks in PKCS#1 parsing..
Langley, A., Braithwaite, M. RoughtimeDecentralized timekeeping for the web PKI..
Langley, A. Lucky Thirteen attack on TLS CBCTroubles with constant-time cryptography..
Mickens, J. This World of OursYOU’RE STILL GONNA BE MOSSAD’ED UPON.
Valsorda, F. Announcing the $12K NIST Elliptic Curves Seeds BountyThe alleged story of where the NIST curves got their parameters..
Valsorda, F. A Wide Reduction TrickA neat example of optimizing elliptic curve field arithmetic..
Valsorda, F. Enough Polynomials and Linear Algebra to Implement KyberAn overview of the mathematics of post-quantum cryptography..
Valsorda, F. Logjam: the latest TLS vulnerability explainedDiffie-Hellman and the subtleties of crypto implementation..
Abseil Authors, The. Swiss Tables Design NotesImplementation notes for SwissTable..
Beingessner, A. Swisstable, a Quick and Dirty DescriptionA writeup of Rust’s SwissTable port..
Beingessner, A. Rust Collections Case Study: BTreeMap A writeup of Rust’s b-tree design and implementation..
Cox, R. Storing Data in Control FlowA mindset for writing simpler algorithms..
Cox, R. Using Uninitialized Memory for Fun and ProfitUninitialized data crimes..
Fowles-Kulukundis, M. Designing a Fast, Efficient, Cache-friendly Hash Table, Step by StepHow SwissTable, Abseil’s hash table implementation, was designed..
Young de la Sota, M. CwisstableMy C port of the Abseil SwissTable hash table implementation..
Young de la Sota, M. Designing a SIMD Algorithm from ScratchExactly what the title says..
Young de la Sota, M. I Wrote A String TypeA writeup on a compressed string implementation..
Go Authors, The. mgc.go
The Go garbage collector..
Go Authors, The. proc.go
The Go scheduler..
LLVM Authors, The. Exception Handling in LLVMHow on earth do C++ exceptions (and Rust panics). actually work?.
Young de la Sota, M. The Alkyne GCA simple memory allocator that supports garbage collection..
These are primarily introductory monographs for those interested in getting a taste of the kinds of mathematics I like.
Artin, M. AlgebraNot my favorite algebra text, but the exercises are excellent.. Pearson, 2nd ed.
Cheng, E. The Joy of AbstractionA lay introduction to category as it should be.. Cambridge University Press.
Hewitt, E., Ross, K. Abstract Harmonic AnalysisFourier analysis in full generality. A particularly beautiful theory.. Springer/Verlag.
May, J. P. A Concise Course in Algebraic TopologyA homotopy-focused introduction to AT with an excellent bibliography of follow-ups..
Mac Lane, S. Categories for the Working MathematicianThe OG. Category theory as God intended it.. Springer, 2nd ed.
Munkres, J. Topology: A First CourseA laudable introduction to plain ‘ol point-set topology.. Prentice-Hall.
Steen, L. A., Seebach, J. A. Counterexamples in Topology In which we learn that most topological spaces are bad.. Springer/Verlag.
Rudin, W. Principles of Mathematical Analysis“Baby” Rudin. The real analysis text we all grew up with.. McGraw Hill.
Rudin, W. Real and Complex Analysis“Papa” Rudin. A complete monograph on real and complex analysis in finitely many dimensions.. McGraw Hill.
Rudin, W. Functional Analysis“Grandpa” Rudin. Analysis in infinite dimensions.. McGraw Hill.
Vakil, R. The Rising Sea: Foundations of Algebraic GeometryA modern, thorough introduction to AG..
I’ve found trove of algebraic topology texts sitting in the virtual locker of Haynes Miller at MIT, who taught many of my favorite courses. It includes some of the texts listed above. Link.
Beingessner, A. Text Rendering Hates YouEverything is terrible in your font libraries..
Cox, R. B LanguagesLinks and commentary on the predecessors of C..
Cox, R. Go & VersioningRuss Cox designs a package manager that doesn’t suck..
Cox, R. UTF-8: Bits, Bytes, and BenefitsWhy UTF-8 is the best encoding; genius in simplicity..
Cox, R. QArt CodesQR code art!.
Mickens, J. This World of OursThe problem was transmitted in the front left hoof of a mule named Deliverance..
Winters, T., Manshreck, T., Wright, H. Software Engineering at GoogleLesson learned from programming over time. Software as something to outlive you..
Winters, T. Configuration, Extension, MaintainabilityTitus talks about how to design good interfaces..