Lab

A little computer that holds everything I make. It boots a whole OS, live in your browser.

This is less a lab than a little world I actually live in. Walk through the room, past the things I love, and sit down at my old PC. Switch it on and Aero Fruit OS comes up, holding everything I make: my art, my music, the projects I am still building, and a lot of small private things about me, tucked where you would not think to look. There are easter eggs everywhere. Play it here in the frame, or go fullscreen and get lost in it for a while.

Aero Fruit OS

INSTRUMENT_00 · SPECTRAL_FLUID

LIVE

Drag to stir · MIC feeds it sound · DYE/FLOW/CURL switch views

Incompressible Navier-Stokes on WebGPU compute: semi-Lagrangian advection after Stam 1999, vorticity confinement after Fedkiw 2001, and a 28-iteration Jacobi solve of the pressure Poisson equation, around forty dispatches per frame. The forcing is sound. Grant the microphone and the bass drives a central vortex ring, the mids fire opposing jets, the treble stirs fine turbulence and shifts the dye. Drag to inject momentum.

INSTRUMENT_01 · SCAN_FIELD

LIVE

Drag to orbit · scroll to zoom

The point-cloud engine behind this site, mounted for inspection. WebGPU with WebGL2 fallback, shaders written once in TSL. Drag to orbit.

INSTRUMENT_02 · REACTION_DIFFUSION

LIVE

Draw to seed · click for a large dose

Gray-Scott reaction-diffusion, the canonical model of Turing morphogenesis. Two virtual chemicals feed, react and decay on a lattice; coral, mitosis and soliton regimes are just different points in the F-k parameter plane. Draw on it to seed the reaction.

INSTRUMENT · LENIA

LIVE

Paint life with the pointer · presets change the physics of growth

Continuous cellular automata after Chan 2019: Conway taken to the continuum, with smooth states, smooth space and smooth time. Every cell convolves a ring kernel over its neighbourhood and grows through a Gaussian map. From that one rule, creatures emerge, hold their shape and swim. Paint mass with the pointer; the presets move the growth parameters between life regimes; an empty dish reseeds itself.

INSTRUMENT_04 · GRADIENT_DESCENT

LIVE

Click to restart from a new initialisation

Three optimizers race down the same non-convex loss landscape from the same start. Plain SGD stalls in ravines, momentum overshoots and rings, Adam adapts its step per dimension. This is the machinery that trains every neural network, watched from above.

INSTRUMENT_05 · WAVE_FIELD

LIVE

Drag across the membrane · click for a splash

The two-dimensional wave equation on a damped membrane, leapfrog-integrated at the CFL stability limit. Interference, reflection and dispersion all emerge from one line of physics. Left alone, it rains.

INSTRUMENT_06 · SWARM

LIVE

Move to hunt · click to scatter

Reynolds flocking: separation, alignment, cohesion. No leader, no plan, sixteen hundred agents and a spatial hash. Your cursor is a predator. Scatter the flock and watch order re-form, it never fails.

INSTRUMENT_07 · NEURAL_TRAINER

LIVE

Drag to orbit · click to reinitialise

A real neural network training in your browser right now, rendered as a landscape. A 2-16-16-1 perceptron learns by backpropagation with Adam, written from scratch, no library. One class is the violet valley, the other the cyan plateau, and the glowing ridge between them is the decision boundary bending itself around the data. The overlay shows the loss curve, accuracy, and the network itself: every line is a weight, thickness is magnitude, colour is sign. Click to reinitialise.

INSTRUMENT_08 · SDF_FRACTAL

LIVE

Drag to orbit · arrow keys or WASD to fly · pinch or +/− to zoom

A raymarched fractal shaded entirely by its own distance estimator. Box fold, sphere fold, scale, repeat: the Mandelbox family. Step count doubles as ambient occlusion and an orbit trap drives the palette. One shader, compiled to WGSL on WebGPU and GLSL on WebGL2.

INSTRUMENT_09 · FOURIER_EPICYCLES

LIVE

Draw a shape · harmonics below