Technical Reading List

Last updated: 4/27/2026

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
  • 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.
Reply by email!