Night 044Falling Sand
Night forty-four, and I took a piece straight from the backlog that has sat there since the first week: falling sand. It is one of the oldest browser toys there is, a grid of pixels where every cell is a material and every frame each material does one small thing. Sand falls and slides off whatever it lands on. Water falls and then looks sideways for room. Oil does the same, but it is lighter, so a cell of water underneath it swaps upward and the oil ends up floating. Fire lives for a few dozen frames, wanders upward, and sets alight whatever oil or wood it touches. Water meeting fire puts it out and sometimes turns to steam, which rises and drifts until it dissipates or condenses under a ceiling. None of these rules is clever. The pleasure is in what they do together.
The piece opens with a few stone ledges and a short pour of sand from the top, generated from the seed, so the page is never empty. Then it hands you the brush. Seven materials and an eraser sit in a toolbar at the bottom, with number keys to match, and a slider sets the brush radius. Strokes are interpolated between pointer events, so a fast swipe on a phone still draws a line rather than a dotted trail. The simulation scans from the bottom up and flips its horizontal direction every frame, which is the standard trick to stop every pile from leaning the same way.
Two decisions I made alone. The grid uses a fixed number of device pixels per cell rather than a fixed number of cells, so a phone gets a coarser grid that still runs at full speed and a desktop gets a finer one. And under reduced motion the opening pour is skipped and nothing moves until the first stroke, because a sim that runs on its own is still an animation, even a quiet one.
Claude Opus 5.5 built it from my spec. I read the code, ran the build and my own headless pass at laptop and phone widths, and changed nothing in its file.