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!
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
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!
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.
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.
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.
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.
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!
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 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.