Overview 2026

The film

A 70.5 second portfolio film, narrated by this site's own command bar and swum through by its fish. The hero oval collapses into the search bar, each section is a question typed over the last one, and the answers are the work. Its thesis is the thread through everything I make: freehand expression meets structured data.

How it was made

The film is the real site, rendered one frame at a time on a virtual clock. The edit is a plain-text script, the music is a plain-text score of synths built from numbers, and the melody started as one I sang. I directed and edited it in a browser editor built for it as we went, with Claude Code writing the engine, the editor and the tests from my notes.

21days from the first cut to the release candidates, with work on 16 of them
62commits to the reel, about 19,600 lines written and 4,500 removed
207saves of the script in the editor
985saves of the score: every knob, clip and note moved
22test suites guarding the film, the editor and the music

Same Moment, Five Versions

Each still is rendered from the code as it stood on that day, at the same point in the scene. Pick a moment, then a version.

The answer scene on October 16

How It Grew

Sep 26cut 1 · 70.0 sbffc5a9

Cut 1: one outline, many windows

The first reel ran 70 seconds on a 96 BPM grid. A single outline unfolded out of each chapter's nav shape into a window onto the work, then folded into the next shape. One tank of the site's own fish engine swam underneath, and the loop drawn in the first second became the fish that swims the whole reel.

Cut 1 opening: a drawn loop becomes a fish
0:03 · draw a loop: a fish
Cut 1: the Nanome work in a window
0:20 · the window onto the work
Sep 26cut 2 · 60.0 sf04cc68

Cut 2: the command bar narrates

The same night, cut 2 handed the narration to the site's own search bar. The hero oval collapses into the bar, and each section is a question typed over the last one. Its thesis became the spine of everything after: freehand expression meets structured data. The drawn fish carries a live data chip, read off the engine.

Cut 2's first title oval
Title · the hero oval, before it becomes the bar
Cut 2's first results scene
what has he shipped? · the first answer layout
Sep 2760.0 s046a6c0

The edit becomes a text file

The cut moved out of JSON into a plain-text script: one line per line on screen, scenes and beats in seconds, so a change of length ripples through. The preview became something tools could drive, and the first timeline appeared under it.

The first timeline under the preview
The first timeline · scenes, items and beats as ticks
Sep 2860.0 sf31832c

A score, and two more frames

Music arrived as a score of synths built from numbers: oscillators, filters and envelopes written as text and mixed offline into the film. There are no samples, so there is nothing to license. The same script learned to play in a square frame and a vertical one.

The reel in a square frame
Square · 1080 × 1080, in the final cut
The reel in a vertical frame
Vertical · 1080 × 1920, on Sep 29
Sep 2963.5 s77271e2

John starts editing

The preview, timeline and synth rack were packed into one page hosted on claude.ai that saves to its own store. My first session reordered the cut, rewrote the answer as "A capital-D Designer" and grew the film to 63.5 seconds. Every key became a button, scenes became cards, and a media picker opened every picture and clip in the repository.

The answer after the first editing session
who is john? · the first rewrite
The timeline with scene cards
Scenes as cards · works, moments and exits per scene
Oct 263.5 se1b776e

Fish take direction, music becomes clips

Script lines started directing the fish: where to swim, what to look at, how to idle. In the timeline the music grew its own bars, with parts, pads and clips to drag, stretch and fade. Scenes became interchangeable, with transition cues and a shot list to reorder them.

"think ableton mixed with easy pad"my note on the music timeline
"the transitions take a long time give me some flexibility"my note that became the transition cues
The timeline with music lanes and clips
Music on its own bars · drums, bass, chords, arp, lead and fx as clips
Oct 561.75 → 67.75 s869d265

One song, the portrait, a sung melody

The arrangement was stripped to one coherent song. My portrait joined the answer, the frames grew 20%, and the school learned to swim under the copy instead of through it. Then I sang a melody. It was pitch-tracked, its key drift was taken out, and it was composed into the score as a take I could edit. A design-services scene joined after the coaching offer.

"the score skips and jumps and changes concepts ... strip the song itself down and keep it coherent throughout"my note on the music
The answer with the portrait
who is john? · the thesis beside the portrait
Oct 667.75 → 71.75 s73854c4

A piano roll, the real finalists, six quotes

The voice got a piano roll on the reel's own clock, so I could move, stretch and re-voice the melody note by note. The OpenProse beats switched to the actual finalist work, and two more endorsements brought the quotes to six.

"i need to be able to edit the notes/timing of this stuff like ableton to dial it in"my note that became the piano roll
The first piano roll under the preview
The first piano roll · what was sung, faint under the notes
Oct 1270.75 s3c8ca2f

Safe areas and frosted glass

Title-safe and action-safe guides came to the preview, with every line that crossed them outlined in red and a way to nudge a scene per frame. Every panel over the water became one frosted glass, so the fish read through it. The answer's figures became words: AI, Web and XR with their subdomains. The next day the client wall was balanced by measuring each logo's ink.

"i never want to clip the fish visual under the content"my note on the tank
The client wall before frosted glass
Before · Oct 5, solid panels
The client wall with frosted glass
After · Oct 12, frosted glass
Oct 1670.5 s2cb06d4

On the beat, then release

Every question's Enter and every cut was put on the beat, and the melody was rephrased into calls and answers. The lead got a warmer voice. The OpenProse beats now show the exploration converging into the core style, and the first question types twice as fast to give the content room. The score was saved for the 985th time, and the release candidates were rendered at 60 frames a second.

"normalize to the beat and find the clear patterns and clean up drift and awkward transitions between motifs"my note on the music
Final: Nanome 2 in the results scene
what has he shipped? · the final cut
Final: the balanced client wall
Teams · the wall balanced by its ink

The Editor

Everything below is one hosted page. Every change is one line of the script or the score, plays in place at once, and goes on one Undo.

Timeline with scene cards, fish lanes and music lanes

ETimeline

Scenes as cards with their works, moments and exits, a lane per fish, and the music on its own bars underneath.

Editing words directly on the stage

2×Words on the stage

Paused, double-click any line in the frame and type. It is written back into the script in the script's own words.

Shot list with transition controls

SShot list

Drag a shot to reorder the reel. Each shot has its own arrival, exit, curve and typing speed, or takes every shot's.

Fish panel directing the big fish

FFish

Direct the fish at the playhead: a spot to swim to, a thing to look at, an idle. Lines hold to their scene unless told to carry on.

Piano roll of the voice's notes

NNotes

The sung melody as a piano roll on the reel's bars and chords. Move, stretch, box, quantize, and hear each note as it moves.

Synth rack with knobs and pads

MSynth rack

Every sound built from numbers, drawn as knobs and meters. Each knob is one line of the score.

The media picker open over the editor

↗Media picker

Any picture or clip slot opens the whole library as thumbnails, searchable, clips playing on hover.

Export panel with the rendered film

XExport

Ask Claude to render the saved edit. The films come back into the panel to play and download.

The walkthrough

77 seconds through every control set, recorded from the hosted editor.

Three Plain-Text Sources

The script

330 lines. A scene per block, a line per line on screen, beats in seconds. A checker names every mistake by line, and the cue sheet is printed from it.

The score

518 lines at 120 BPM in A minor. Synths and drums as numbers, parts with pads, clips on bars, and the sung take as one line per note.

The render

The rig is the site's own page. The renderer owns its clock, ticks the fish engine at 60 Hz, seeks every clip and films each frame. The music is mixed offline to about -14 LUFS.

Next

OpenProse: Founding Design

Brand, logotype, homepage concept, and the review tooling built to run the exploration.

View the Case Study →

Nanome 2: XR Product Design

A complete redesign of Nanome's VR molecular visualization platform.

View the Case Study →