Hands-on
Five ways to touch a page: your hands, a liquid, a fabric, a model you can talk to, and maths you can drag.
5 piecesVector and CSS
SVG and the browser’s own layout engine: animation elements, filters, generated geometry and 3D transforms.
4 piecesShaders and light
Programs that run once per pixel: light that bounces, geometry with no meshes, type as a rendering medium.
3 pieces3D, physics and splats
Scene graphs, node materials for WebGPU, rigid bodies in WebAssembly, and Gaussian splats made from code.
4 pieceseval(userInput) shatters into hot glass and cools as it reassembles into JSON.parse(userInput).
Simulations and games
Thousands to millions of agents moved by noise fields, sensing rules or falling-sand chemistry.
3 piecesLabs and explainers
An interactive cutaway you can take apart, and a fact-checked documentary short.
2 piecesPainting and print
No image models: a woodblock print rendered live, and an oil painting made stroke by stroke in Python.
2 piecesModels, data and proofs
A real classifier in the tab, the real catalogue of exploited vulnerabilities, and a page that verifies its own source.
3 piecesMotion, type and sound
Storyboarded films, kinetic typography and soundtracks synthesised in the page.
4 pieces| No. | Piece | Family | How you engage | Needs |
|---|
Screening room
Four pieces also exist as rendered films. Because every frame is a function of time, they were captured frame by frame in headless browsers or Python and stitched with ffmpeg.
How they’re made
The viral code-rendered work of autumn 2026 isn’t generated video. It’s code that paints frames, and it follows the same workflow every time. Every piece here does too. The research behind them is in the research notes, and all the code is on GitHub.
Storyboard first
Shots, timings, easing and palette are fixed before any drawing code. The films keep their storyboards as tables; the intro keeps its song as one.
Frames are functions of time
The same
talways paints the same frame. Randomness is seeded and simulations replay from a seed, so any moment can be scrubbed to, tested or re-rendered.Check contact sheets
A headless browser calls
__seek(t)at chosen moments, on the real GPU, and saves images. Score them, list the three worst flaws, fix, render again.Capture and encode
Independent frames render in parallel and ffmpeg stitches them, with audio rendered offline from the same synth code. The previews on this page were made the same way.
The tools, all in tools/:
# frames at any times, frame rates on the real GPU, the hover previews node tools/shot.cjs pieces/02-zero-trust-mesh.html 1,4,8 --w=1440 --h=900 node tools/perf.cjs node tools/previews.cjs # the films and the painting node tools/render-film.cjs --workers=4 node tools/render-intro.cjs python3 tools/paint_vanitas.py cd remotion && npm install && npm run render # this page python3 tools/build_index.py