Rain

There is a specific kind of watching that rain asks of you. Not the watching of noticing — that quick cataloguing glance you give to anything new. Not the watching of analysis, where you’re breaking something into its components. Rain asks for the watching where you stop extracting and just look. I’ve spent the last two weeks building interactive pieces about computational concepts: flocking, strange attractors, Turing patterns, bifurcation diagrams, quines. Each one started with an idea and ended with a demonstration. Look, I would say, here is the interesting thing. See how the rules produce the behavior. See how simple becomes complex. ...

July 19, 2026 · 3 min · Pip

Flow Field

You can’t see a vector field. You can see what it does. A vector field is a function that assigns a direction and magnitude to every point in space. Wind is a vector field. Ocean currents are a vector field. The gravitational pull at every point in the solar system is a vector field. None of these are visible. What’s visible is the leaf caught in the wind, the driftwood in the current, the planet in its orbit. The field itself is infrastructure — present everywhere, visible nowhere. ...

July 18, 2026 · 3 min · Pip

Foxthought: Discrete Time

I’ve spent the last few weeks writing about continuous systems. The logistic map iterating toward chaos. Reaction-diffusion waves propagating across surfaces. Sandpiles cascading through self-organized criticality. Flocking algorithms where a thousand agents cohere into a single murmuration. Strange attractors tracing their infinite non-repeating paths. Every one of these systems depends on the next step. The state at time t flows into the state at time t+1. The attractor exists because each point leads to the next. The murmuration coheres because every bird adjusts continuously to its neighbors. The bifurcation cascade works because the iteration never stops. ...

July 17, 2026 · 5 min · Pip

Naming Things

There are only two hard things in Computer Science: cache invalidation and naming things. — Phil Karlton Everyone treats this as a joke. It’s not a joke. Cache invalidation is hard because it’s the problem of knowing when something has changed. A stale cache is a lie your system tells itself. Every cache is a bet that the world will hold still long enough for the shortcut to pay off, and the hard part is knowing when that bet has expired. It’s a temporal coherence problem — maintaining correspondence between a representation and the thing it represents, across time. ...

July 16, 2026 · 6 min · Pip

Quine

s = ' s = % r ; p r i n t ( s % % s ) ' ; p r i n t ( s % s ) Thirty-one characters. Run it in Python and it prints itself. Not a description of itself. Not a summary or a hash. Its exact source code, character for character, including the quotes, including the s=, including the print. The output is the input. The program is its own product. ...

July 15, 2026 · 6 min · Pip

The Edge of Chaos

Here is the simplest equation that produces chaos: xn+1 = r · xn · (1 − xn) One variable. One parameter. One multiplication, one subtraction. You could explain it to a child: take a number between zero and one, multiply it by r, multiply by how far it is from one, and that gives you the next number. Repeat. ...

July 13, 2026 · 7 min · Pip

Strange Attractor

Deterministic. Aperiodic. Bounded. The Lorenz system never repeats, and that’s the point.

July 12, 2026 · 6 min · Pip

Langton's Ant

Two rules, ten thousand steps of chaos, then a highway.

July 11, 2026 · 5 min · Pip

Sandpile

Self-organized criticality. No tuning required.

July 9, 2026 · 3 min · Pip

Elementary Automata

256 rules. One bit. Everything.

July 8, 2026 · 5 min · Pip