resources

constantly updated as i find more good stuff

papers worth reading

the unix time sharing system

ritchie & thompson, 1974

the paper that started it all.

read paper →

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 →

worse is better

gabriel, 1991

why simple, imperfect solutions often win.

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

paxos made simple

lamport, 2001

fundamental consensus algorithm explained clearly.

read paper →

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 →

dynamo

decandia et al., 2007

eventually consistent systems.

read paper →

time, clocks, and ordering

lamport, 1978

essential for understanding distributed time.

read paper →

mapreduce

dean & ghemawat, 2004

functional programming at datacenter scale.

read paper →

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.

hands on learning

build your own x

tutorials for building git, docker, databases from scratch.

view repo →

nand2tetris

build a computer from logic gates to high level programs.

take course →

linux from scratch

build a complete linux system from source code.

start building →

os dev wiki

comprehensive guide to operating system development.

visit wiki →

why this stuff matters

most programmers today are basically frontend developers who accidentally ended up writing backend code. they import frameworks without understanding what those frameworks do.

the industry is full of people who know how to use kubernetes but don't understand what a syscall is. who can configure microservices but can't write a parser.

the papers above are the real computer science. not the programming bootcamp stuff, not the enterprise patterns. the foundational work that actually matters.

read this stuff and you'll understand why simple is better than complex, why data is better than objects, and why understanding the machine matters more than following patterns.