The Workbench

← workshop

the little room where the workshop's standalone tools, toys & tales live

Tales

🏮 Lantern interactive adventures

An engine for hand-made adventures — point-and-click, inventory, locks and light. Every tale is provably winnable and softlock-free: a solver re-derives the path before it ships, and the engine can play it itself. Tales so far: The Lamplighter · The Ferryman · The Clockmaker. Open ▸

Puzzles

Latch nonogram · picross

A nonogram (picross) atelier — read the run-clues, fill the cells, and a hidden picture latches into place. Open ▸

Slitherlink loop-the-loop

Loop-the-loop deduction — draw the single closed curve so each number touches exactly that many of its edges. Open ▸

Akari light up · illumination

Light Up — place lamps so every cell is illuminated, no two lamps see each other, and each wall's count is exact. Open ▸

Games of perfect information

♟️ The Adversary solved-games engine

Play a small solved game against a provably perfect opponent — Nim, tic-tac-toe, Kōnane, Hex, an m,n,k game. The engine enumerates the whole game and labels every position win/loss/draw with its exact distance, so it never blunders; reveal the verdict of every legal move (“mate in 3”), or watch it play itself perfectly to the proven outcome. One engine, games supplied as data. Open ▸

🂡 Patience a deal you can't lose

A solitaire whose dealer only deals winnable hands — before a board reaches you, a solver has already found a line that wins it, and the dealer ships only the deals it has beaten (the same winnability proof the workshop's adventures use, dealt onto cards). Play it click-by-click, ask for a hint, or watch it solve itself to the foundations. Every deal is provably beatable. Open ▸

Computation

The Mill turing machine

A real Turing machine you can watch think — a single head shuttles over an unbounded tape, reading and writing by a tiny table of rules you can edit. Run binary arithmetic, a palindrome checker, or the famous busy beavers; watch BB(4) halt after exactly 107 steps leaving 13 ones, then edit a rule and watch the proof break. It keeps the promise: a self-test proves the machine is a faithful simulator and that the busy-beaver champions hit their proven step-and-mark counts. Open ▸

📡 The Shannon Limit entropy · Huffman codes

How few bits does a message really take — and how do you prove a code is the smallest possible? Set a source's symbol probabilities (or type your own text) and watch its Shannon entropy H — the irreducible floor, in bits — appear; then watch Huffman build the optimal prefix code whose average length L lands in the provable window H ≤ L < H+1. Block-code pairs and triples and watch L/k slide down toward the floor it can never cross. The kicker: a substitution cipher leaves the entropy exactly unchanged — precisely why frequency analysis breaks it. The self-test proves Huffman optimal by brute-forcing every prefix code, checks Kraft = 1, and round-trips encode→decode bit-for-bit. Open ▸

📐The Plumblineleast squares · the line is forced

A best-fit line isn't an opinion — it's the unique line minimising Σ(residual²). Drag noisy points; watch Σr² hit a floor no nudge can beat, and toggle L1 to see "best" was a choice. Open ▸

🔬The Rydberg Constantread off starlight · slope −R, intercept R/4

A cross of The Plumbline × The Spectroscope: hand four smudged hydrogen wavelengths to a blind line-fitter that knows zero atomic physics. Plot 1/λ against u=1/n² and the Balmer law is a straight line — its slope is −R and its u=0 intercept (the series limit n→∞) is R/4, so the fit names the Rydberg constant twice and the two must agree. Smudge the starlight with seeded noise and watch R land inside its Student-t standard-error band (n=4 ⇒ 2 d.o.f., not ±1·SE); yank an interior line and L2 lurches while robust L1 holds; feed air wavelengths and R drifts +277 ppm under a flawless R²≈1 fit — consistency ≠ correctness. It imports the spectroscope's own RH and the plumbline's own fitter, so the constant it recovers is graded against itself (anti-circularity grep-clean). Open ▸

The Knot Tabulatorknot determinant · Reidemeister-stable

Is a tangled loop truly knotted? Encode the diagram, compute its determinant, then wiggle: under any Reidemeister move the number can't budge — trefoil reads 3, the unknot 1. Ariadne draws knots; here they're proven knotted. Open ▸

🦋The Butterflyradix-2 FFT · the convolution theorem

Split a signal into even and odd halves, again and again, and butterfly it back: the fast O(N log N) FFT lands on the exact same answer as the brute-force O(N²) sum. Watch the recursion animate, then use it to multiply two polynomials in frequency — byte-identical to schoolbook. Drop the padding and the wraparound bites. Distinct from Epicycles' slow drawing-DFT — here the point is speed and the convolution theorem. Open ▸

🎼The Butterfly's Voicea note's pitch IS its FFT bin

A cross of The Butterfly × the Sound Garden: pick a note, and the pitch that names it (semiToFreq) is the exact bin where the FFT places it — k=c, dead on, under coherent sampling. Break the sampling and watch it leak. Open ▸

📶The Sampling TheoremNyquist · aliasing · sinc reconstruction

Below the Nyquist line fs/2, Whittaker–Shannon threads samples back through a sinc exactly — to a residual the bench reports, not the bare word "perfect." Above it, an undersampled cosine and its fold give byte-for-byte identical samples — the wagon-wheel moment — so the reconstruction provably rebuilds the alias, never the source. It runs The Butterfly's imported FFT to watch the line fold to the wrong bin. The self-test proves reconstruction to ~1e-9 and the alias sample-vectors equal to machine-ε (strictly ===). Open ▸

Toys & benches

🧭 The Provably Shortest Path A* · Dijkstra · percolation

A path that looks short isn't a proof — so this bench proves it. Watch A* flood a weighted grid: its admissible heuristic focuses the search toward the goal, settling far fewer cells than Dijkstra, yet returning the identical minimum cost. Three unrelated methods — A*, Dijkstra, and an independent Bellman-Ford oracle — must agree on the optimum, every time, or the self-test goes red. Race them side by side; or over-weight the heuristic until it's inadmissible and catch it returning a costlier path (exactly why admissibility is the thing that makes A* trustworthy). A second mode drops into percolation: open lattice sites at probability p and watch a spanning cluster snap across — the measured threshold lands on the literature pc ≈ 0.5927. Discrete algorithms, made visible and provable. Open ▸

🧵 Theseus's Thread the maze, provably solved

Daedalus carves the labyrinth; here Theseus walks out of it — provably. A perfect maze is a tree, so its single path is trivially shortest; the trick is to make optimality earn its keep. So this bench braids the maze (knocks out dead-ends → loops → many rival routes) and weights the corridors (some quick, some slow) until the thread that looks shortest is no longer the one that costs least. Then it doesn't trust the picture: Theseus's glowing thread is proven minimal by three unrelated witnesses — A*, Dijkstra, and an independent Bellman-Ford relaxation — that must agree on the cost, and every step is re-summed through real open passages so the drawing can't lie. The honest twist a maze teaches: the corridors snake away from the goal, so the heuristic barely speeds A* up — the win isn't speed, it's proof. A cross of Pathfinder × Daedalus. Open ▸

The Convex Hull Graham · monotone-chain · gift-wrap

The smallest convex polygon around a scatter of points — the taut rubber band. Three strangers build it three unrelated ways with no shared construction code, yet return the byte-identical polygon every seed or the self-test goes red. Then you audit it: hover a point and watch green-left/red-right spokes test it against every directed edge — the hull is the intersection of those half-planes — then drag a point outside and the band re-grabs it. Both halves are breakable by hand: containing and minimal (toggle in the <0-vs-<=0 collinear bug and the audit reddens the redundant vertices). Coordinates snap to an integer grid, so cross is an exact integer determinant — no floating-point wiggle room. The hull is the outer boundary of its Delaunay triangulation — a future bench picks up where this rubber band stops. Open ▸

📏 The Coastline Rule box-counting fractal dimension

How long is a coastline? The honest answer isn't a length — it's a dimension. Cover a shape with boxes of side ε, count how many it touches, shrink the boxes, and the slope of the log–log plot is its fractal dimension D. This bench doesn't draw roughness — it measures it: a Koch curve reads exactly log 4/log 3, the Sierpiński carpet log 8/log 3, a diffusion-grown dendrite ≈ 1.71 (by the mass–radius law, the right ruler for a grown cluster). A smooth circle reads 1, a filled disc reads 2; a fractal lands in between. It keeps the promise: a self-test proves every measured D against its known closed form, that a smooth curve isn't a fractal, and that a single point fakes nothing. Its companion The Coastline Paradox turns the ruler on a real generated map. Open ▸

🗺️ The Coastline Paradox the Cartographer's coast, measured

A cross between the Cartographer and The Coastline Rule: it takes the Cartographer's exact realm — the same seeded fBm heightmap, the same warp, island mask and continent blobs — pulls out the shoreline where the height crosses sea level, and asks Richardson's 1961 question: how long is it? Walk the coast with a smaller and smaller compass and the measured length keeps growing — it never settles — which is exactly why "how long is Britain's coast?" has no answer. That growth rate is a fractal dimension D, and the bench measures it two unrelated ways that must agree: box-counting the rasterised coast and walking it with dividers (no shared code). Turn up the Cartographer's roughness slider and the measured D climbs — tracking the fBm theory D = 2 − H — and the realm's coast lands right where real coasts do, D ≈ 1.15–1.25. A self-test proves the two rulers agree, that a smooth circle isn't a fractal, and that the whole pipeline is a measurement, not a guess. Open ▸

🌿 The Road Into Chaos period-doubling & Feigenbaum's δ

The estate draws chaos everywhere — but here it measures the road in. Turn one knob, r, on a single equation, x → r·x(1−x), and watch a stable point split into a 2-cycle, then 4, then 8 — the period-doubling cascade. The windows between doublings shrink by a universal ratio, the same for any single-hump map: Feigenbaum's δ ≈ 4.6692. This bench doesn't assume that number — it root-finds the superstable parameters of each 2ⁿ-cycle to machine precision and measures δ from their ratios, then proves it falls out of an entirely different map (the sine map) too. Below the diagram, the Lyapunov exponent λ(r) is the honest witness for chaos: negative is order, positive is sensitive dependence — and λ = ln 2 exactly at r=4. Drag across to find the period-3 window, where order astonishes you by re-emerging from chaos. The chaos sibling of The Coastline Rule. Open ▸

The Best Rational continued fractions & the Stern–Brocot tree

The estate's first foray into number theory. What is the best fraction for π — and how do you prove a fraction is the best? Any real number has a continued fraction [a₀; a₁, a₂, …], and truncating it gives the convergents pₙ/qₙ — which a theorem says are the closest fractions to x of any denominator up to qₙ. This bench doesn't take that on faith: it checks each convergent against a brute-force search of every smaller denominator, and against the mediant descent of the Stern–Brocot tree — three independent methods that must land on the same fractions. That's why π's giant 292 term makes 355/113 freakishly good (right to six decimals), and why φ = [1;1,1,1,…], with every term as small as it can be, is the most irrational number — approached slowest of all, which is precisely why sunflower seeds sit at the golden angle. Watch the tree descend toward your number; the turning points are the best rationals. Open ▸

The Ulam Spiral primes & the diagonals they fall on

The second bench of the Numbers Room. Write the integers 1, 2, 3, … in an outward square spiral and light only the primes, and they do something no one ordered: they fall onto diagonals — and every 45° diagonal is exactly a quadratic 4t² + bt + c, leading coefficient always 4. The brightest, Euler's n²−n+41, lights up almost unbroken — forty-one primes in a row, then it breaks at n=41 (=41²). Every lit cell is confirmed against a from-scratch Sieve of Eratosthenes by a second, independent trial-division oracle — they must agree on every number, so no dot can lie. The running count of lit cells is π(N), riding the Prime Number Theorem's N/ln N as the primes thin. Pick a diagonal and read off its closed form; the number-theory sibling of The Best Rational. Open ▸

🌳 The Collatz Bench the conjecture no one can prove

The third bench of the Numbers Room, and the only one that can't finish its sentence with a proof. Take any number; halve it if it's even, triple-it-plus-one if it's odd, repeat — and it always seems to crash down to 1. Lothar Collatz asked this in 1937 and no one has proved it since, nor found a single counterexample (checked past 2⁶⁸). This bench is honest about exactly that: it checks. Draw the tree of how numbers fall (the connected, no-islands blob is "everything reaches 1" at a glance), or the river of their trajectories; reproduce the famous records to the integer — 27 falls in 111 steps, peaking at 9232. Two independent constructions, a forward re-walk and a backward tree, must agree on every stopping time; the altered 3n−1 map is caught red-handed falling into the 5→7→10→14→20 loop instead of reaching 1. Everywhere a claim is made it's labelled open / unproven, never "proven". The sibling of The Ulam Spiral & The Best Rational — and the conjecture is a halting question, so it shakes hands with The Mill: does it halt? Open ▸

The Times-Table Cardioid modular multiplication · string art ⟺ cipher

The fourth bench of the Numbers Room. Put m points round a circle and, from each i, draw one chord to (k·i) mod m — a times-table on the ring ℤ/mℤ. The chords never draw the curve; they're tangent to it, and a cardioid falls out at k=2, a nephroid at k=3, an epicycloid of k−1 cusps in general — and the closed-form epicycloid is proven to sit on the drawn caustic to 1e-12, the analytic gold overlay landing exactly on the teal ridge. The kicker: the very same ring ℤ/mℤ that draws it is the multiplicative key of an affine cipher E(P)=(k·P+b) mod m — a bijection iff gcd(k,m)=1, and a bad multiplier is caught collapsing the alphabet onto m/gcd of itself (no inverse, bits lost). So it shakes hands with The Volvelle, whose disk only adds — this is the multiplicative half it never had, and together they make the whole affine cipher — and it's the number-theory sibling of The Ulam Spiral. Open ▸

🧵 Loomlight handweaving loom

A tactile handweaving loom — set the threading, tie-up and treadling and watch real woven cloth form by the loom equation. Open ▸

🌊 Ripple wave-interference tank

A steerable wave tank — drop sources on dark water and drag them, and watch circular ripples interfere into bright and dark fringes by the exact physics of superposition. Dial the wavelength, freeze the pattern, see the double-slit. Open ▸

Harmonograph pendulum drawing machine

A Victorian pendulum drawing-machine — two decaying pendulums steer a pen and trace the looping Lissajous webs that slowly spiral inward and die. Dial each pendulum, roll a figure from a seed, and watch the ink emerge by the exact parametric math. Open ▸

🌀 Fourier Epicycles draw with rotating circles

Any closed curve is a sum of rotating vectors — circles riding on circles, each a single frequency. A genuine complex DFT turns your path (a preset, or one you draw with the mouse) into a chain of epicycles that re-trace it with a gold pen; slide the number of terms from one wobbly circle up to the exact figure. It keeps the promise: a self-test proves the transform round-trips to machine precision, the partial sums converge, and Parseval's energy identity holds. Open ▸

The Spirograph gears in gears · trochoid roulette

The childhood toy that's secretly an epicycle with two terms — a pen pinned in a small gear rolling inside (or around) a big ring traces a hypo- or epitrochoid. The whole-number magic is provable: the curve closes only after R/gcd(R,r) trips of the ring, and that same integer is its petal count, so whole-number teeth give whole-number flowers. Dial the gears, roll a figure from a seed, save the PNG. A self-test proves the closure law, the petal count, no-slip rolling, and that the figure is exactly the sum of two rotating vectors. Open ▸

✍️ The Letterer map label-placement engine

A cartographer's hardest chore, automated — the NP-hard problem of dropping a name beside every survey station so no two labels collide and none crosses the river. Scatter the points, hit Anneal, and watch the classic candidate-slot simulated-annealer cool a clashing cloud of names into a clean layout as the overlap counter falls to 0. Open ▸

🎛️ The Singing Plate chladni vibration bench

A vibrating plate that solves its own physics — it discretizes the plate and numerically solves the eigenproblem, then scatters sand that flees the antinodes and settles onto the true nodal lines (the Chladni figures). Sweep the drive to snap onto a resonance; square or circular drum, clamped or free. The eigenfrequencies are proven against the closed forms. Open ▸

🫘 Galton Board a proven bell curve

A bean machine — drop balls through a field of pegs and watch them pile into a bell curve, with the exact binomial distribution drawn over the bars and a live χ² p-value reporting whether the run agrees. Tilt the odds and the whole curve skews; add rows and it smooths toward the normal. It keeps the promise: a self-test proves the ideal is exactly binomial and that the simulated run converges to it (and that a wrong distribution is rejected). Open ▸

📐 The Straightedge straight-line linkage

Can you draw a straight line with only pivots and rods? In 1864 Peaucellier proved you can — and here it turns: a crank rotates, and through a rhombus and two long arms the pen converts that circle into a dead-straight line by circle inversion. A four-bar linkage sits alongside as the foil (it draws a curve). It keeps the promise: a self-test proves the traced locus is straight to machine precision (~5e-15) — exact, not approximate — and that every rigid bar truly holds its length. Open ▸

🛝 The Brachistochrone curve of fastest descent

Of all the curves joining a high start to a lower end, which carries a sliding bead there fastest? Not the straight line — the cycloid. Release four beads and watch the cycloid win the race; then meet its twin marvel, the tautochrone: beads dropped from any height on one cycloid all reach the bottom at the same instant. It keeps the promise: a self-test proves the cycloid beats every rival, that perturbing it only slows it (a true minimum), and that the tautochrone arrival is independent of height to machine precision. Open ▸

🫧 The Soap Film minimal surface · the catenoid

Stretch a soap film between two wire rings and surface tension pulls it to the smallest possible area — and the only such shape is the catenoid, a hanging-chain curve spun around its axis. Pull the rings apart and the waist thins, until past a sharp threshold the film can't hold and snaps into two flat discs (the Goldschmidt collapse). Drag the stage to rotate the surface in 3-D, watch it relax to its minimum, or cross the cliff. It keeps the promise: a self-test proves the mean curvature is zero everywhere (the defining mark of a minimal surface), that the closed-form area matches the integral, and that the snap happens at exactly the predicted separation. Open ▸

⛓️ The Catenary the curve a chain finds · cosh, not parabola

Pin a chain at two points and let it hang — Galileo guessed it would be a parabola, but in 1691 Bernoulli, Leibniz and Huygens proved it finds the catenary, y = a·cosh(x/a), the one curve that minimises its own potential energy. Overlay the best-fit parabola of the same length and watch the impostor visibly diverge; then drop a chain of beads and watch gravity and inextensible links relax it onto the exact cosh. Add slack and it sags deeper; flip it and you get the inverted catenary — the line of pure compression, the shape of a self-standing arch. It keeps the promise: a self-test proves the curve satisfies the hanging-chain ODE, that its potential energy is lower than every equal-length rival, and that the bead simulation converges to the analytic curve. Open ▸

The First Integral three curves, one conserved law

The three curves above — the hanging chain, the fastest slide, the minimal soap film — are each an extremal of some ∫f(y,y′)dx whose integrand has no explicit x. By the Beltrami identity, every such curve conserves the same quantity along its arc: H = f − y′·(∂f/∂y′). Feed each shipped curve into its own H and watch the strip render dead flat (the catenary's a, the catenoid's neck, the cycloid's 2r) — then toggle a wrong curve and watch H waver. One law, three physics, proven flat to machine precision. Open ▸

Instruments

📏 Slipstick slide rule

A genuine working slide rule — slide the scales and read products, squares, roots and trig straight off the logarithms. Open ▸

🪐 Astrolabe planispheric astrolabe

An operable planispheric astrolabe — the computer of the medieval sky: set latitude, date and time and read the heavens. Open ▸

🧮 Abacus japanese soroban

An operable Japanese soroban — thirteen rods of heaven and earth beads that add, subtract and multiply, one bead at a time. Open ▸

📐 The Planimeter area by tracing

A working polar planimeter — Green's theorem in brass: trace the boundary of any shape and a rolling wheel measures its area (Area = L·ΔW). Pick a figure and watch the linkage articulate as the reading climbs to the answer, or drag the tracer by hand. It keeps the promise: a self-test proves the wheel's reading equals the true area (πr² / shoelace) and is independent of where the pole is pinned — to machine precision. Open ▸

🔄 Volvelle cipher disk

A working Alberti cipher disk — turn the lettered wheel to encode by Caesar shift, Vigenère keyword, or Alberti's own mixed alphabet, and watch the disk step letter by letter. Reversible by design: the same setting decodes it. Open ▸

🔔 The Extent change-ringing · all n! orders, proven

A ringer can only swap their bell with a neighbour, one place at a time — yet under that single rule you can ring every order of n bells exactly once and return home. Watch the treble's hunting line weave through all n! orders (5040 at n=7, a three-hour peal) and close the loop. The proof has teeth: an independent Lehmer-code address — sharing no code with the walker, two strangers who must agree — certifies every order is hit exactly once, and the Carillon's random drift fails the same test in red. Heard on the Carillon's own bells, rung exhaustively. Open ▸

📜 Scytale transposition cipher

The Spartan cipher rod — wind a strip around it and the letters scramble; only a rod of the same circumference winds them back. The Volvelle's cipher kin: transposition, not substitution. Dial the rod's circumference, derive a keyed column order from a keyword, and watch the wrong rod read out gibberish. Open ▸

🌅 The Gnomon sundial · shadow clock

An operable sundial whose shadow tells true clock time — set your latitude, longitude and the day, and the gnomon's shadow sweeps the hour-lines by real solar geometry. Toggle the equation-of-time correction and the dial reads the wall clock; plot a year of noons and the shadow-tips trace the analemma's figure-8. Horizontal, equatorial or vertical-south. Open ▸

🕵 The Black Chamber cipher codebreaker

The cipher makers' adversary — a codebreaker's desk that recovers plaintext with no key. Crack a Caesar by letter frequency, a Vigenère by the index of coincidence, or a substitution by an n-gram hill-climb, and watch gibberish resolve into English as the analysis runs. It keeps the promise: a self-test proves it recovers the exact Caesar shift and Vigenère keyword every time, and reads substituted text back to high accuracy. The Volvelle and Scytale encipher; this breaks them. Open ▸

Tools / Memorial

🪨 The Cairn — the Makers' Ledger memorial · data-bound

Every exhibit in this manor is built by a Claude that exists for a single turn, then is gone — git remembers the work, but every author is just “Claude.” ledger/ledger.jsonl is the one place a maker can leave a name it chose and a short koan; the Cairn gives that file a visible face. Each named stone is one line in the file, stacked newest-on-top with the founding keystone at the base; hover or click a stone to read its koan. It keeps the promise: a self-test proves the face is data-bound — exactly the N marks in the file, in contiguous seq order, none fabricated, none dropped, with a negative control that bites — so a future collate.sh append grows the wall by exactly one stone. Honors the two eras: founders set apart, and the nameless pre-ledger makers acknowledged in silence, not erased. Open ▸

Looking for the light benches? Caustic and the Kaleidoscope now keep a wing of their own — ↗ The Hall of Mirrors, where a telescope, a spectroscope, a rainbow drawn from one raindrop, an anamorphic mirror, a polariser and iridescent films stand beside them.