Technical Reading List
Last updated: Sun Jan 21 2024
Table of Contents
Open Table of Contents
Books
- Crafting Interpreters, Robert Nystrom
- The best introductory work on programming language design and implementation, covering a basic treewalk interpreter and a more complicated, but realistic, bytecode interpreter. Notably, it covers language features like closures and object-oriented classes in depth, both of which are usually brushed aside. Also, it’s extremely readable and has cute illustrations!
- Butterick’s Practical Typography, Matthew Butterick
- The best introductory text on typography and the basics of graphic design I’ve found. If you’re time-strapped, you can check out its introductory chapters, “Typography in ten minutes” and “Summary of key rules”, for the highlights. I try to follow its principles for any site or app I build.
- Designing Data-Intensive Applications, Martin Kleppmann
Papers
- “Programming as Theory Building”, Peter Naur
- A ten-page paper that changed how I think about programming. Naur argues that programming is exactly “theory building”, in the sense of “figuring out how to solve a problem”, with the implication that a “program” is not just the literal text but also the representation in the programmer’s mind. As a result, it is difficult, if not impossible, to “revive” a program with a new team, without first doing the work of theory building themselves!
Sites
- Simon Willison’s Weblog, Simon Willison
- The best voice to listen to on LLMs right now. Simon coined the term “prompt injection” and has been an early explorer of what LLMs can do; as of late 2023, “Making Large Language Models work for you” is my favorite introduction. His TILs are also often interesting and inspired my own TILs.
- Computer Things, Hillel Wayne
- jvns.ca and Wizard Zines, Julia Evans
- Julia has an iconic “I’m just as confused as you are” style of writing about complex technical topics like networking, operating systems, and version control. Her printable zines are a handy reference for all kinds of technical topics.
- Hacking with Swift, Paul Hudson
- The single best resource for iOS development (yes, even better than Apple’s own docs). The free “100 Days of SwiftUI” course in particular is a great place to start if you’re completely new to iOS development.
- Bits About Money, Patrick McKenzie
- Explores finance and fintech from a technologist’s perspective, albeit with a unique (read: sometimes hard-to-follow) style. His post about buy-now-pay-later services like Affirm and Afterpay was the first explanation of BNPL that I finally understood.
Talks
- “Is Software Engineering Real Engineering”, Hillel Wayne
- Hint: the answer is yes. Hillel actually went and talked to “traditional” engineers who crossed over to software, or vice versa. The insights are fascinating — apparently the biggest thing missing from “traditional” engineering is version control!
- “Inventing on Principle”, Bret Victor
- A classic talk about deciding what to work on. The first half is a little slow, but serves as an important example for the principles Bret explores in the second half.
- “Email vs Capitalism, or, Why We Can’t Have Nice Things”, Dylan Beattie
- Email development is notoriously complex and painful. This wide-ranging talk discusses why that is historically and some of the best practices for email development today.