This is not a painting. It is not a photograph or a generative texture brushed on by hand. Every pixel you see is the output of math — rules applied to a grid, numbers fed through functions, color computed rather than chosen. The art is in the rules. Everything else follows.
The foundation is Conway's Game of Life, a cellular automaton invented in 1970. The canvas is a grid of cells, each either alive (1) or dead (0). At every tick, the entire grid advances one generation simultaneously according to four rules:
That's it. Four sentences, and from them emerge gliders, oscillators, self-replicating patterns — behaviors that nobody explicitly programmed.
The grid wraps at the edges (toroidal topology), so a glider that drifts off the right side reappears on the left. There are no walls; the space folds back on itself.
Seeding is how you start. Clicking or dragging doesn't place a single cell — it plants a probabilistic cluster, a radial burst where cells near the center are more likely to be born and cells at the edge trail off. The probability of birth at distance d from the click is approximately P(d) ≈ 0.56 − 0.01 d². You're not drawing; you're igniting.
The Game of Life produces a binary grid: alive or dead. The color you see is a separate computation layered on top. Three quantities accumulate for every cell, and together they determine its pixel color.
Each cell carries two running values:
trail — a leaky integrator that charges when the cell is alive and decays when it's dead. At steady state (always alive), trail converges to about 19.2. When the cell dies, trail decays by ×0.93 each frame — half-life of about 10 frames (~550 ms). Here is what that decay looks like starting from steady state:
age — counts consecutive frames alive, capped at 50, decaying at 84%/frame when dead.
Together they form a composite activity signal: t = 0.72·trail + 0.35·age ∈ [0, ~31.5]. This is the single number that drives color. A freshly born cell has t ≈ 0; a cell alive continuously approaches t ≈ 31.5.
Raw trail values would produce either flat brightness or harsh edges. Instead, brightness is compressed through a hyperbolic tangent: glow = clamp(0.2 + 0.8·tanh(0.9·trail)) ∈ [0.20, 1.0]. tanh is S-shaped: it rises steeply near zero, then saturates. Cells snap to near-full brightness within a couple of frames of birth, then fade in a long smooth tail after death — nothing blinks on and off like a switch.
The three color channels are not looked up from a palette. They are computed as phase-shifted sine waves of the activity signal t, with offsets 0, 2.2, and 4.4 radians (approximately 120° apart). As t grows, the channels sweep through the hue wheel at slightly different rates (1.15, 1.05, 1.25), so the color rotates and never simply repeats. A slowly incrementing phase term drifts the entire spectrum over time, completing one full global shift in roughly 1–2 minutes.
The full colormap — scanning t = 0 → 79 at full brightness:
Dead cells aren't black. Three overlapping sine waves ripple across the canvas continuously, producing the slow shimmer visible in the background. The background luminance range [0.04, 0.20] maps to roughly 10–50 out of 255 — dim but intentionally visible in a dark room. Three waves at different spatial frequencies and drift speeds ensure the pattern never locks into a static grid.
The artist defines the rules. The math writes the image.
There is no hand-placed color, no brush, no filter applied after the fact. What you see is the direct visual encoding of a simulation — activity, memory, and time translated into light. Complexity, beauty, and surprise emerge from a handful of arithmetic operations repeated thousands of times per second. The medium is computation.