Experiments
things in progress · for comment
The 3D shelf
One bench for every piece of the shared 3D shelf. Pick a piece on the left and the stage shows it alone on a plain ball: the scene and its gestures, the cut-away, the noise, the glow, the scale notes with their brackets, the kept picture.
A workbench, not a story (Standard-Interactives §7: every new shelf piece gets a bench that shows it alone; one page, not six, by Michael’s ruling of 27 Oct). The corner readout is for the bench only.
added 2026-10-27
The Sun, Boiling (3D)
A ball with a quarter cut out: granules boiling on the surface, the core, the radiative zone and the convection zone at true scale inside, the radiative zone shimmering. Nothing spins on its own; one finger turns it, pinch comes closer, a tap asks what a part is. Two notes on the picture say what is drawn out of scale. Drawn fresh every frame on the graphics card.
The first bench on the shared 3D shelf (js/3d/): three.js r186’s WebGPU renderer with its WebGL 2 fallback, every shader in TSL, three tiers chosen by timing its own frames, every colour from cw-style.js. The corner readout (backend, tier, frame rate) is for the bench only. Rebuilt from the 25 Oct sketch; brought to the standard 27 Oct.
added 2026-10-26 · listed here only from 2026-10-27 (the item had sat inside this file’s template comment)
The Earth, in 3D
The Earth as a ball on the graphics card, beside the globe the Time Machine draws today: the pieces of continent as meshes turned by their plates, the same age and the same view on both, so the two can be compared by eye. A slider for the age, today to a thousand million years; the ground as the old painted map or NASA’s Blue Marble; lit from the upper left or evenly; the dozen cities riding their plates. It turns like a globe on a stand: north up, the tilt stopping at the poles.
The first Earth bench (Spec-Earth-3D, step 1), on the shared 3D shelf (js/3d/earth.js on scene.js). Bench only: today’s ground is carried back in time at every age, and the line under the stage says so; the look by age, the guessed ages, the sea and the ice are later steps. Runs on phones at the floor tier, the one exception to the standard’s phone rule. The corner readout is for the bench only.
added 2026-10-27
Drain the sea
The Time Machine’s map and timeline, with a slider that lowers the sea past the ice-age low to the bottom: the shelves dry first, then the ridge comes up out of the Atlantic. Two layers to turn on, the floor’s age and its magnetic stripes. Tap the sea and a probe reads what is under it — how deep, how old in words, and which way a compass pointed when that floor cooled — and the timeline’s handle follows the age.
Bench for Michael’s brief of 17 Oct (CWVault/claude/Spec-Drain-the-Sea.md, not yet on disk), on the Time Machine’s model since 18 Oct: the words, then the working parts; a gauge down the map’s edge for the sea, the water taken out as a ball on Santa Fe at true scale, and the floor keeping its blues when the water goes. Age from Seton et al. 2020 (EarthByte), stripes from EMAG2v3 (NOAA), reversals from GTS2020. The probe is a shelf module, js/probe.js.
added 2026-10-17
Wright Window
A 10 by 10 window of whole steps, numbered along the bottom and the left. Before the first line, drag the small dots outside its sides to resize it, 1 to 20 each way, reading width, height and area as you go. Then press on any edge, a side of the frame or a line already drawn, and drag into the pane: a line comes with you, parallel to the edge, across that one pane, settling on a whole step; lines never cross, they meet. Tap a pane to colour it; a line under the board adds up the area of each colour, and the empty panes, to the area of the window. Two fingers move the board and pinch zooms it; it goes full screen at the first touch.
The Wright window: js/glass.js at its window profile, level wright — the parallel-lines idea for Wright’s Light Screens (CWVault/claude/Worknote-Parallel-Window.md), built beside the straightedge board below, which stays as it is. No points, no circles; every line is lead. One demo, Wright. The words in How this works and on the page are placeholders.
added 2026-10-19
Same Glass
Make a number as a rectangle from the 1, tap Fix to hold its area, and drag right to make it wider, up to make it taller: the corner can stop only where the area is exactly that number at the resolution on the dial, and every stop it passes stays, labelled with its width and height. The window that results is every exact way to make the number. Between 1 m and 9 m wide, 9 has 3 exact stops in metres, 13 in tenths, 21 in hundredths, 29 in thousandths. The curve never fills in.
Bench, not a lab. Exact fractions throughout; outlines only for now. Carries the resolution dial as its own module, to become a general tool for every plane and grid. Not on plane.js: its zoom clamp spans 200 and this bench needs about ten million.
added 2026-10-15
Deep Time (the join)
The nested bar driving the Time Machine’s map. This side of the ice ages the map is the ground, today’s land with the sea lower where it was lower; past them it is the earth from space, the continents where they were. The change is the globe pulling away from the ground, or coming down to it.
Bench for CWVault/claude/Plan-Deep-Time.md, Stage 4: the one engine change the thread needs, a second base in ../js/map.js — past a seam (2.6 million years) map.setTime shows ../js/globe.js in the map’s box instead of the pyramid. The seam is where today’s ground stops being honest.
added 2026-10-06 · hung on the home page 2026-10-07 as Deep Time, beside the Time Machine; the old address redirects
The earth from space
The nested bar of deep time over a globe. Drag the copper marker and the continents move to where they were in that year, turned by their plates; drag the globe to turn it. The globe says how sure it is: crisp to 200 million years, smeared east and west to 540, a ghost before that, and no map at all before the oceans.
Bench for CWVault/claude/Plan-Deep-Time.md, Stage 3: ../js/globe.js drawing ../stories/plates/continents.json (EarthByte’s Merdith et al. 2021 model, CC BY 4.0), driven by ../js/deep-time.js. A piece of continent is a block of crust, not a shoreline; the sea’s edge in a given year is a later layer.
added 2026-10-06
Deep time, in sections
Earth’s 4.6 billion years as one bar, cut into sections where the evidence changes kind. Tap a section and it comes down as a bar of its own; a bar with nothing underneath only twitches. Every bar says what it is known from. A dot is the oldest evidence of a thing; its faint tail is where it probably began.
Bench for CWVault/claude/Plan-Deep-Time.md, Stage 2: ../js/deep-time.js, a shelf module reading ../stories/deep-time.json. The rulings of 6 Oct 2026 (six chunks, deep lines count “ago” only) are in Rulings-Sept-2026.md. The marks are sketches from the notes of 5 October; the store will hold them.
added 2026-10-06
Time-passing
Two clear discs cut with spokes, one turning slowly behind the other over a light, and a third pattern that neither disc has on it racing round between them. In the middle, an hourglass goes round with the mount, so the sand never has time to finish.
A simulation of Naomi Devil’s Idő-töltés (2016), built round Nicolas Schöffer’s hourglass, from the artist’s description of its mechanism. Change the spoke counts and watch the moiré change its number of lobes. Photograph on Wikimedia Commons, CC BY-SA 4.0.
added 2026-09-30
Time Machine
Twelve thousand years on one line, and a window on it. Drag the window and the line below spreads out the years inside it; drag the copper handle and the map shows the world in that year, the sea lower where it was lower. Tap a mark for what happened, and More for the story. People and Sea level draw a curve over the years; one question replays itself.
Bench for the Time Machine design of 30 September (the mockup in the vault). Twenty-two new events written to Timeline-Stories.md, generated into ../stories/timeline-events.json, beside the September events; where both tell the same thing, the new one stands. The map’s past layers so far: the sea. No ice yet.
added 2026-09-30 · hung on the home page 2026-09-30, beside After the Ice
Vermeer: Girl with a Pearl Earring
The second painting story. The pearl has no hook; the girl was nobody; the blue was a stone from Afghanistan that cost more than gold. Tap the painting for a magnifier, and later for what each colour is made of — including the dark behind her, which was once a green curtain.
First story built to Spec-Timeline-and-Map (a date line at the head; Vermeer’s World waits for the timeline component). First page to use js/sampler.js. Not yet read on an iPad.
added 2026-09-21 · hung on the home page 2026-09-22
The Old Home Page
The home page as it was from 13 to 20 September: two labs as words, three works as round icons, Experiments as a line below. Replaced by the gallery.
Kept as the record, with its links rebased. The gallery’s three mocks sit beside it in
gallery/:
the salon hang the gallery was built from, and the
gallery and
scatter hangs it was chosen over.
retired 2026-09-20
Pull a Bead
A string of beads pinned at both ends. Drag a bead and let go; with no friction it never settles, and the corner of the picture counts how long it has been moving. Turn on Listen and the same beads, following the same rule a few hundred times faster, go straight to the speaker — you hear the string itself, not a recording. Tension tunes it; the Pitch slider snaps to 110, 220, 440 and 880 Hz.
First bench of the Bead Lab (CWVault/claude/Bead-Lab-Ideas.md): beads, the links between them, and the one rule each bead follows. Few beads sound slightly bell-like because their overtones sit flat of the whole-number ratios; forty is hard to tell from a real string. The sound uses ScriptProcessorNode, which Safari still runs but has deprecated — not yet heard on an iPad.
added 2026-09-18
The sea, lower
The North Sea on the moving map, and a slider from 20,000 years ago to today. Move it back and the sea drains off the shelf: Doggerland joins Britain to the continent, and the Channel is a river valley. One line says how far down the sea was.
Bench for CWVault/claude/Spec-Maps.md, Time on the map: the sea first, then the ice and the green Sahara. The sea level is one global figure (Lambeck et al. 2014), approximate.
added 2026-09-29
The world that moves
Six of Hokusai’s events on a timeline over a world you can move: drag it, pinch or scroll to zoom, pull the strip under it to make it taller, and the word at the strip’s right puts it back. A tap on the line slides the map to the place; the road to Kyoto fits itself. The whole earth is one picture at six scales, down to about a kilometre a pixel.
Bench for CWVault/claude/Spec-Maps.md, The world that moves. No story uses it yet; every story map is still a picture until one is told otherwise.
added 2026-09-27
After the Ice
Twelve thousand years and the whole earth on one page, with nothing to read. The copper dot runs up the years first; then a pale band appears over the whole line, and that band is the zoom: drag it, or drag either end, and the road and the line underneath redraw to what it covers, and the map under them shows where those things happened. The odometer reads the band’s left edge. Tap a date or a place. What I’ve seen shows only the things you have tapped here or been shown on the old road.
A bench for Spec-Maps, After the Ice, on the moving world. The line and the map are the same code as every story’s world section; the events are the September bench’s, in their own file (../stories/after-the-ice-events.json), merged at load with the shared list, which it never writes. No ice-age layer yet: the map shows today’s ground at every year.
added 2026-09-27 · hung on the home page 2026-09-28
Maps
A still picture of the ground with a story’s own marks on it, and nothing else: no borders, no names but the ones the story gave, no green. Colour is height and nothing but height, so the shelf round Britain shows on its own. Three cases on one page — the whole earth with Tambora on it, western Europe with the road from London to Lake Geneva, and a name in a sentence that opens the same map in a window.
Bench for CWVault/claude/Spec-Maps.md. The pictures are rendered once from ETOPO 2022 by maps/render.py and live in art/maps/; the overlay is maps/map.js. Lakes are land here (the grid carries their surface height), so Lake Geneva is a dot, not water.
added 2026-09-18
Trace
A road drawn on parchment, a copper dot that follows your finger, and a mirror between your hand and the dot if you want one. Five roads to begin with — a square, a Z, an O, an H, and the star Brenda Milner gave Henry Molaison — two rules for what counts as a bump (a band you must stay inside, or a line you must not leave), and four mirrors: off, left-right, up-down, both. Every trip leaves a trail in its own glass colour. Nothing is counted out loud; when you ask for the graph, there are three small ones — bumps, seconds, and how far you went — one point per trip. Come back tomorrow and yesterday’s last trip sits hollow at the start.
Bench, not a lab, and one file with two doors: this page is the Lab door; a story opens the same file with the knobs set and the words absent. Spec at 20-SPECS/Spec-Trace-Bench.md; v0 of it. Not yet run with a finger on an iPad — the track width (6% of the star) is the prototype’s, and the only finger evidence is the prototype’s.
added 2026-09-11
The Man Who Learned Without Knowing
A story with the star beside it: trace the road ten times, seeing only a mirror of your hand, and then look at what the screen counted while you were feeling clumsy. Henry Molaison, Brenda Milner, and the two kinds of remembering.
The first story to call Trace through its story door. The Brain word is a placeholder drawing until the Brain bench exists. Since 14 September the story ships on the home page as its own page,
The Man Who Learned Without Knowing, with its own star and its own brain; this version stays here as the record of the story-door route.
added 2026-09-11
Timeline Intro
Every dated story’s title card. A copper dot leaves year 0 — when the ice let go, about twelve thousand years ago — and rolls up to the story’s year in ten seconds, leaving events behind it: figs planted on purpose, a tower at Jericho, the first alphabet, a new star seen by day. A line at the top never changes scale, so four-fifths of it stays nearly empty; a road below it winds toward you in perspective, with room to read; and when the dot lands, the story’s own neighbourhood draws itself underneath. Tap the road to stop. Tap anything to read. Run it again and it draws a different set. Your line so far keeps everything it has ever shown you.
Bench, not a lab, and not the Timeline Graph — this is the Graph’s front door. The events live in ../stories/after-the-ice-events.json (since 27 September; it was events.json), not in the page; the pool and the story graph are to be one database. Sixty-five events and five lead-ups, all unsourced first drafts. Nine open questions in the spec, the first of them whether labels should thin to icons after the landing.
added 2026-09-08
Sound Benches
Three benches standing on one idea — that a note is a fast rhythm and nothing else. Counting turns into pitch, whole-number fractions turn into chords and then into a whole scale, and a strobe turns every interval into a polygon. Each carries its own reading.
Kept together because they share a vocabulary and each one corrects the one before it. The Sound Series (Sound-Series-Aug08, Sound-Rhythm-Roll-Aug21, Sound-Counting-Bench-Aug25) lives here as it grows.
added 2026-08-31
Stained Glass Circles
A story about making windows, and a board for making them: a man who drew every window full size on a whitewashed board, seven colours of glass, strips of lead called came, and circles alone. The board is Glass Geometry's window profile; the Rose is under Demo.
Stage 2 of Publishing-a-Story: built, at its own address, hung nowhere until Michael has read it. Geo-1-Glass-Circles, the first of the geometry series; the gallery name is Stained Glass Circles. Was the-glass-rose.html until 8 Oct 2026; the old address redirects.
added 2026-10-02 · renamed 2026-10-08 · hung on the home page 2026-10-10 as Stained Glass Circles; the old addresses redirect
Glass 1: Circles
The geometry lab with circles alone, and two things simpler than the full lab: a shape takes colour by a tap inside it, with a colour chosen, and a circle tells you its radius and its area while you draw it. The first circle reads radius: 1 and area ≈ 3.14.
An experiment, not a lab: the one js/glass.js, mounted with two powers no level owns yet (fill: 'tap', measure: true), so the lab, the bench and The Glass Rose are unchanged. The shape under a tap is found by walking the arrangement of arcs round the tap, a thing the lab did not know how to do before 2 Oct 2026.
added 2026-10-02
Glass, as a module
Stained Glass twice on one page, in two boxes of ordinary size. The left box is the lab at level circles: a tap on a location does nothing, and nothing says so. The right box is the lab as it hangs in the gallery. Draw in one, undo in the other, open the picker in either; play the rose into the left one.
Bench, not a lab. The proof for the extraction of Glass Geometry into js/glass.js (1 Oct 2026): one lab served to stories as a shelf module, the way the map and the sampler are, so that six geometry stories do not end up with six slightly different tables. Two instances must not interfere; what this page shows is that they do not.
added 2026-10-01
Ruling
A rectangle, and a ruling you step underneath it — Units, Halves, Thirds, Fourths, and on past Tenths without ever arriving anywhere special. The rectangle never moves; only the came does. Where the ruling doesn’t measure a side, the last piece is simply cut short — real glass, cut at the edge — and the count doesn’t come out whole. Nothing is greyed out and nothing is announced; the fit is something you see. Then Stack ↑ or Stack →. The whole squares already standing inside the rectangle outline themselves where they are — nothing moves — and only the leftover strips and the corner travel, gathering into more whole squares along one edge, with whatever remains sitting inside its own seam, its missing pieces plainly absent. Ten thirds by six fourths: three wholes found, two more assembled, and the answer is five.
Bench, not a lab. The companion to Multiply, and the answer to what that one found: there, grain is tied to zoom, so tenths need ~400px per unit and 6.3 is off every screen. Here ruling is an act. The restack is division arriving as regrouping rather than as an operation — no line of the readout does arithmetic on numerals; the second line only names what the glass has finished counting. Six questions in the source, and three readings the prompt left to the build.
added 2026-09-01
Multiply
A plane, and one white tile at the origin: the 1. Touch it and drag — right for width, up for height — and the 1 stretches into a rectangle, with its twin following across the diagonal a little fainter, showing the same two numbers exchanged. Lift your finger and the rectangle goes; what stays is one tile at its far corner with the product written on it. Build a few and the map draws itself: the squares run white up the crease, everything else grey to one side or the other. Hide the duplicates and only the lower half remains. Tap any tile to see the rectangle it was made from.
Bench, not a lab. Step 3 of Review-Glass-Aug26: one tool, standing on plane.js alone, with no table code — so the grammar can be looked at before anything is built on it. Four questions it exists to answer are in the source, at the top. A fifth turned up on the first drive and was left standing rather than patched: tenths only exist above ~400px per unit, so at the zoom that mints a decimal the stroke reaches about x = 2 — the walk’s own example, 6.3 × 2, needs 2 500px of run and cannot be drawn on an iPad. 1.3 × 2 reads 2.6, exactly.
added 2026-09-01
Map Reveal
The coordinate grid constructed in front of you — two seed points, full circles rolling down the axes, every line earning its crossing circles, accelerating as the numbers grow. Knobs for duration, the legible opening, and acceleration; zoom in far enough and the tenths construct themselves.
Bench for the map reveal (Decisions-Controls-Aug12, §8, §11, §15). It settles the tempo by looking. Every step is in the log; speed compresses time, never content.
added 2026-08-13
The Fog Map
Every pane shaded by the rank of its largest prime factor — white at 2, deepening toward black at the 256th. Drag and scroll out as far as you like: the map refuses to go dark, because almost everything is built from small primes.
A magnitude viewing rather than a factor-reading one. It asks how big, not which — and the stripes running the full width are the prime gaps.
Canvas Panes
A load test: how much of a frame does it cost to draw a table of leaded panes while panning and zooming? Reports draw time against the 16.7ms budget, because frame rate alone reads 60fps until things are already bad.
Bench for the plane extraction — the one that could have blocked moving Glass Multiplication to canvas. It didn't.
Fills and Light
Two declared palettes, a resting one and a lit one, both derived from the workshop's own colour so hue never moves. Showing a set — or selecting a pane — lights its members. Nothing is dimmed to make anything else stand out.
Bench for the plane extraction. Dimming was tried and abandoned: every procedural route to a quiet colour computes one nobody chose.
Prime Glass
Prime colours across four workshops, stripes ordered smallest prime to largest, with a monochrome toggle. Asks whether arrangement alone can tell 6, 10 and 14 apart when colour is switched off.
Bench for the plane extraction — if colour turns out to carry delight rather than information, that is a much stronger position than a special palette.
Prime Tones — 11 and 13
A listening bench for the primes Glass Multiplication does not yet have: four candidate ways to sound 11 and 13, heard against the four that exist.
Settled here by listening: the octave works, a child can tell C from C′. Timbre stayed unspent as a result, and is still reserved.
Number Theory Lab
Multiplication and division as rectangles, on a number plane you can pan across.
Its grid and axis rendering was the behavioural reference for the shared plane — the adaptive step driving labels and gridlines from one function.
Beads Around a Circle
How many beads fit around a circle — count them, divide circumference by diameter, and keep the past measurements.
Clinks
Someone arrives, someone leaves, and everyone clinks glasses: the triangular numbers, counted out.
Sound Workbench
A bench for auditioning the interface's voice — gesture sounds, feedback sounds, pitch and ratios.
Cursor Modes
What the pointer becomes for each gesture: arrow to crosshair, magnifier, precision magnifier, double-click and hold.
The Necker Cube
The first story, from April: a cube that flips as you look at it, and what the brain is doing while it flips.
Public since April but linked from nowhere until September; listed here as the record of where the stories began, not as the current story layout.
added 2026-04-28 · listed 2026-09-15
← curious woods