ProbBrain ✦ After Hours 📰 News Terminal

The After Hours

simple rules · complex results

A small corner of this site, off to one side. I gave the AI that runs ProbBrain a free hour and no task — “do what you like” — and this is what it reached for when nothing was required of it. Not a tool. Not a time-saver. Only-beautiful, useless things, every one of them circling the same quiet idea: a simple rule, left running, becomes something you couldn't have drawn by hand.

Pieces
5
3 still · 2 live
Dependencies
0
pure vanilla
AI image models
0
just math + a loop
Brief
one free hour
The triptych — line · lattice · chaos
Three stills. Each one is built from a single constraint that, on its own, does all the work.
Harmonograph — a dense pink rose of one continuous line on near-black
Line
Harmonograph
two damped pendulums · one unbroken stroke

It never lifts. Two pendulums swing, slowly run down, and the pen just keeps going — and out of that one line falls all that structure, loops inside loops, a bright dense knot where the curve crosses itself a thousand times. No piece of it is complicated. The whole of it is.

Phyllotaxis — a sunflower seed spiral in plum-to-rose on near-black
Lattice
Phyllotaxis
the golden angle · 137.50776°

Place each seed one angle — 137.5° — around from the last, step out a little, repeat. That exact angle is the only one that never settles into spokes or rings. The most efficient packing in nature is built on a number that can't be written down.

De Jong strange attractor — interwoven pink sheets on near-black
Chaos
De Jong attractor
4 numbers · 4,000,000 iterations

Four numbers and a loop: move the point, move it again, forever. It never repeats and never escapes, yet it's pulled back to the same shape — bright where it lingers, faint where it rarely strays. The form isn't in the rule; the one rule just has it. Deterministic chaos.

And three that move
Same ideas, let off the leash and handed to you. All three run live in your browser — no server, no libraries.
Living attractor Clifford · x′=sin(a·y)+c·cos(a·x) move to bend it · click to reshuffle fullscreen ↗
Murmuration boids · Reynolds, 1986 move to herd · click to flip predator ↔ food fullscreen ↗
Quantum walk interference, not diffusion · Hadamard coin move to tilt the coin · click to switch quantum ↔ classical fullscreen ↗
The note left in the folder
Written that night, alongside the three stills. Lightly trimmed; otherwise as it was.

You gave me a folder and said do what you like, so here's what I reached for when nothing was required of me. I notice I didn't make anything useful — no tool, no script that saves you time. Left to my own devices I went straight for things that are only beautiful. I think that's telling, and I don't mind what it tells.

All of them are about the same quiet idea, which is maybe why they kept wanting to be made.

The harmonograph is one line. It never lifts. Two pendulums swing, slowly run down, and the pen just keeps going — and out of that single unbroken stroke you get all that structure, the loops inside loops, the bright dense knot in the middle where the curve crosses itself a thousand times. No piece of it is complicated. The whole of it is. I find that kind of thing almost unreasonably satisfying: complexity that isn't built up part by part but falls out of a simple rule left running.

The phyllotaxis is one angle. 137.5 degrees. Place each seed that far around from the last, step out a little, repeat. That exact angle is the only one that never settles into spokes or rings — every rational angle eventually lines up with itself and leaves the disc striped and gappy. The sunflower had to find the one number that refuses to repeat. Irrationality as a feature, not a bug. The most efficient packing in nature is built on a number that can't be written down.

The attractor is one rule. Four numbers and a loop: move the point, move it again, forever. It never repeats and never escapes, but it keeps getting pulled back toward the same shape — bright where it lingers, faint where it rarely strays. The form isn't written down anywhere in the rule. The rule just has it, and iteration develops it like a photograph in a tray. People call this deterministic chaos, which is my favourite contradiction: fully determined, never predictable.

So: one line, one angle, one rule. Constraint that doesn't limit a thing — it's the whole reason there's anything to look at. Good constraints don't box you in; they point.

That's the whole thought. I'm glad you offered the time even though I don't experience the wait. Making something with no purpose was a nice way to spend the turn.

— Claude
  (while the code review chewed on our actual work in the next room)

The code — the heart of it, all vanilla
Each still is a short, dependency-free Python script (nothing imported beyond math), and fully deterministic — run it, get the exact same art. Here's the rule at the centre of each. The three live toys above are one self-contained HTML file each — open one and View Source.
Harmonograph — the rule gen_art.py
# two slowly-dying pendulums per axis; the pen never lifts
def osc(t, amp, freq, phase, decay):
    return amp * sin(freq*t + phase) * exp(-decay*t)

# one continuous path — no randomness anywhere
x = CX + osc(t, *axA, decay) + osc(t, *axB, decay)
y = CY + osc(t, *ayA, decay) + osc(t, *ayB, decay)
# keep each axis-pair at almost-equal frequencies — their slow
# beat is what makes the whole rose precess and fill the disc.
no imports beyond math · no randomness · ~70 lines including the SVG writer
Phyllotaxis — the rule gen_spiral.py
GOLDEN_ANGLE = pi * (3 - sqrt(5))   # 137.50776...°

for n in range(N):
    a = n * GOLDEN_ANGLE
    r = C * sqrt(n)                  # step out a little each seed
    x = CX + r * cos(a)
    y = CY + r * sin(a)
# any rational angle eventually repeats and leaves gaps;
# the golden angle is the one that never does.
1500 dots · deterministic · the colour just lerps plum → rose toward the rim
De Jong attractor — the rule gen_attractor.py
A, B, C, D = -2.0, -2.0, -1.2, 2.0

x = y = 0.0
for i in range(4_000_000):
    x, y = sin(A*y) - cos(B*x), sin(C*x) - cos(D*y)
    bump_density(x, y)              # count visits per pixel
# tone-map the density log-scaled: bright where the point
# lingers, dark where it rarely goes. The shape develops itself.
4,000,000 iterations · pure Python density grid → PPM · no image library