How It Works

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 Game of Life — life from four rules

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:

  1. A live cell with fewer than 2 live neighbors dies (underpopulation).
  2. A live cell with 2 or 3 live neighbors survives.
  3. A live cell with more than 3 live neighbors dies (overcrowding).
  4. A dead cell with exactly 3 live neighbors is born.

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.

Color as data — how math paints each cell

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.

Trail and age — cellular memory

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:

0 5 10 15 19.2 0 20 40 60 79 frames after cell dies

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.

Glow via tanh — a nonlinear brightness curve

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.

0 0.2 0.5 0.8 1 0 5 10 15 20 trail

Hue via sine triplet — color as rotation

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:

t = 0 t = 40 t = 79

Ambient wave — the living background

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.

What this means for art

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.