resources
constantly updated as i find more good stuff
papers worth reading
communicating sequential processes
hoare, 1978
theoretical foundation for go's concurrency model.
read paper →can programming be liberated from the von neumann style?
backus, 1977
why functional programming matters.
read paper →recursive functions of symbolic expressions
mccarthy, 1960
the paper that invented lisp.
read paper →out of the tar pit
moseley & marks, 2006
complexity is the enemy. every programmer should read this.
read paper →distributed systems
raft consensus algorithm
ongaro & ousterhout, 2014
more practical alternative to paxos.
read paper →the google file system
ghemawat, gobioff, leung, 2003
foundation for modern distributed storage.
read paper →type theory & type systems
types and programming languages
pierce, 2002
the definitive textbook. covers lambda calculus to system f.
propositions as types
wadler, 2015
the curry-howard correspondence explained beautifully.
read paper →a theory of type polymorphism in programming
milner, 1978
the paper that introduced hindley-milner type inference.
read paper →principal type-schemes for functional programs
damas & milner, 1982
algorithm w for type inference. foundation for ml and haskell.
read paper →intuitionistic type theory
martin-löf, 1980
dependent types and constructive mathematics. mind-bending.
read paper →on understanding types, data abstraction, and polymorphism
cardelli & wegner, 1985
comprehensive survey of type systems and polymorphism.
read paper →practical foundations for programming languages
harper, 2016
rigorous treatment of pl theory. great companion to tapl.
the little typer
friedman & christiansen, 2018
gentle intro to dependent types in the "little schemer" style.
essential books
the c programming language
kernighan & ritchie
still the best way to learn how computers work at the system level.
structure and interpretation of computer programs
abelson & sussman
how to think about computation.
designing data-intensive applications
kleppmann
the bible for modern backend systems.
computer systems: a programmer's perspective
bryant & o'hallaron
how computers work from the bottom up.
crafting interpreters
nystrom
build two complete interpreters from scratch.
database internals
petrov
deep dive into how databases actually work.