Learn
A small shelf of things worth learning, and a few pages worth reading.
Programming, from the beginning
No experience assumed. These teach with lux, a small language built to be a good first one and to be outgrown.
An Introduction to Programming
The ideas that carry into every language you go on to — variables, loops, functions, and the rest — taught with lux, a small language built to be a great first one.
Building Your Own Keep
The text adventure lux writes for you, taken apart and handed back: how a single turn works, and three exercises that add a room, hide something to find, and teach the world a new rule.
Starting Something of Your Own
The jump to a blank file — sizing an idea down until it is finishable, saying what it does before writing it, working out what it has to remember, and growing it one runnable piece at a time.
When It Doesn't Work
How to find out why: reading what lux tells you and where the arrow really points, watching a program go by one line at a time, and cutting it down until the bug is the only thing left.
lux
The language itself: install it, build a text adventure you can open and change, and read the whole reference without leaving the terminal.
When lux Feels Small
The day you outgrow lux: how to tell it is happening, what carries over and what does not, how to choose which language to go to next, and what the first day in it actually feels like.
Programming, after you outgrow lux
These assume you already write code in something else, lux or Python or JavaScript or anything of that family. The first three are deliberately the same book, the same chapters in the same order, one for each language lux translates into, so the interesting part of reading a second is the chapter in the middle where the language itself differs.
Programming in Swift
K&R's shape applied to Swift: complete programs first, explanation second, and the explanation stops when the point has been made. Two things take longest to feel natural — a language with no null, so a value that might be missing says so in its type, and a type system that asks you to decide whether each value is copied or shared.
Programming in Go
The same book in Go, and the shortest of the three. Where Swift wraps what might be missing and Rust tracks who owns it, Go reaches for pointers, multiple returns and goroutines — a different lineage, and the one that asks you to hold the fewest ideas at once.
Programming in Rust
The same book in Rust, the strictest of the three and the one that asks the question the other two do not. Ownership is the chapter nobody arrives already knowing, and everything before it is written so you reach it without surprises.
The Rust Thought Process
Not a tour of the language but a way of thinking in it: ownership, borrowing and lifetimes as design tools, making illegal states unrepresentable, errors as values, and the habits from other languages worth trading in.
Making things for the web
HTML is easy
Why the friendliest place to start making things for the web is a plain text file and a browser.
Simple
A minimal HTML template and the Voltaire stylesheet shown in action.
Voltaire
The classless stylesheet behind these learn pages, with the source to copy or download.