G—P

Working notebook — real-time systems

Experiments

Instruments, not pictures. Working experiments in real-time systems that turn live signals — weather, time, terrain, language — into images, sound and text. Built in the browser, in the open, in days: each one starts as a written brief, becomes a working piece the same day, and is then revised in public until it holds.

Experiments
004 4 live
First · latest
5 Jul · 1 Sep 2026
Issue → live
Same day every time; twice under ten minutes
Shipped revisions
41 each a merged pull request
Form
One file vanilla JS, no build step
Lines of inquiry
I

Signal → image

A live field drawn as if it were terrain, and terrain drawn as if it were film. Pressure, cloud and elevation go in; marching squares, splines and a scroll wheel turn them into something that holds still until the world moves.

II

Sound placed in the world

A composition mixed by where the listener is standing: the position is the score. The next piece in this line listens rather than plays — hearing the world and answering in a voice, on the device, with nothing sent away.

III

Machines that write

A narrative engine that ran for seventy days and left 2.3 million words, and the archive it left treated as a live object that runs on the clock. Next in this line: the screenplay as a computational object — structure you can compute over, not only read.

IV

Play, rebuilt from first principles

A 1980 arcade cabinet reconstructed with no emulator, no engine and no assets — the projection, the models, the typeface and the sound all written by hand, so that every part of the machine is legible. The material of FMX 320, shown working.

V

Scale, made continuous

One drawing that holds from Mercury to the nearest star — nine orders of magnitude on a single logarithmic line, everything at its measured place, today. The Eames problem, run as an instrument rather than a film.

Common constraint: everything here runs in the visitor's browser, from one file, with no account and no server state beyond a shared hourly weather cache. The larger systems being built alongside this notebook hold to the same rule — nothing leaves the machine that doesn't have to.

Experiments — in order of upload
001

Mont Blanc 360 — Progressive Montage

Uploaded 2026-07-05 Live Canvas 2D · vanilla JS · zero dependencies

Scroll becomes a jog wheel. The page scrubs through 128 frames culled from Mont Blanc 360 Rotation (2013) — a ten-minute full-rotation animation reconstructed from ASTER GDEM elevation data, exhibited at Bleu Acier Gallery in First There is a Mountain. As the scrub passes every second frame, that frame pins into a contact-sheet grid behind the live image: an 8×8 sheet of sixty-four cells at exact 5.625° increments, the entire orbit of the mountain laid flat. Everything derives deterministically from scroll position, so scrolling back up un-builds the montage. In the final stretch the hero frame fades and only the completed compass rose remains.

From
Mont Blanc 360 Rotation (2013), reconstructed from ASTER GDEM; shown at Bleu Acier in First There is a Mountain.
Issue → live
5 Jul 2026, nine hours — issue #43 opened 02:49, merged 12:01.
Since
The 4×4 sheet became 8×8 that afternoon (#54). Written as course material for FMX 430.
002

Moede — Locative Sound, Reconstructed

Uploaded 2026-07-07 Live Web Audio · Leaflet · vanilla JS

A browser reconstruction of Moede (2016), a locative-audio artwork for the grounds of the North Carolina Museum of Art. The original iOS app faded a single composition in and out as you walked the site — thirteen GPS zones, each holding one synchronized stem of the same piece, mixed live by your position. Here the museum's satellite map is redrawn with all thirteen real zones as circle overlays; drag the listener across the grounds, or let it tour itself, and each stem's level follows the app's exact distance falloff — full inside the inner ring, silent past the outer — the whole track re-assembling around wherever you stand. The audio is the original 2016 session; the coordinates and radii are the app's own audio.json. Eight synchronized layers became thirteen distinct stems, one per zone.

From
Moede (2016), NC Museum of Art — the app's own audio.json and the 2016 session.
Issue → live
7 Jul 2026, the same evening — merged 23:16 (#63).
Since
Two revisions the next morning: black-and-white satellite, silence out of range, saturated zones (#64, #66).
003

Ceiling — The Sky over Tampa Bay, Drawn as Terrain

Uploaded 2026-08-26 Live Canvas 2D · marching squares · Open-Meteo · vanilla JS

The contour field from the studio site, given something real to be — and, since 27 August, nothing on it is decoration. The lines are isobars: every hour the page takes sea-level pressure from Open-Meteo at three hundred points on three nested lattices — the contiguous United States, Florida and the Gulf, and the thirty-five-station Tampa Bay grid — samples them with Catmull-Rom splines through the map's own projection, and draws a line every 2 hPa (4 from a distance), the tens heavier and labelled. The field is registered to the map and it holds still: when the hour turns, or fresh data moves it, the lines ease to their new positions over two seconds and hold again. A low in the Gulf reads as rings, and a tropical system crossing the state will read as the thing itself. Every ten minutes the page also samples the bay's thirty-five stations for cloud cover, wind, rain and temperature; cloud cover becomes a faint relief over the bay and the readings feed the panel. The marching-squares tracer is the one that draws the ASTER-derived Mont Blanc wireframes into the greggperkins.com hero — here it is a map, north up at true scale, with the University of Tampa marked by a crosshair. The cursor is a light, in the manner of the star-field on this site's front page: lines near it brighten, holding it still for three seconds burns a hole of clear sky into the cloud that heals over twenty, and passing it over a station reads that station out. The wheel zooms the map — the bay's shoreline from OpenStreetMap in gold, the University of Tampa in red, and, as you pull back to the whole country, the world's coastlines, borders, and the states and provinces of the US, Canada and Mexico from Natural Earth. The pressure comes through the site's own /api/ceiling, one call an hour shared by everyone who is watching.

From
The contour hero on greggperkins.com, itself after the ASTER woodcuts; Open-Meteo, OpenStreetMap, Natural Earth.
Issue → live
26 Aug 2026, seven minutes — issue #91 opened 20:04, merged 20:11.
Since
Seven revisions on 27 Aug: the cursor became a light, the map learned to zoom to the continent, and the decoration became real isobars stepping on the hour (#94–#107). The card on greggperkins.com followed.
004

The Heron — A Tome of 247,809 Sentences

Uploaded 2026-08-28 Live Text · 2.3 M words · vanilla JS · zero dependencies

In the gallery, The Heron — the animated installation in The Bird and The Song (2026) — ran a narrative engine that wrote one short sentence about the heron every twelve seconds, for seventy days, and read it aloud. This is all of it: 247,809 sentences, 2.3 million words, the word heron 114,556 times, from 28 December 2025 to 7 March 2026. The tome runs on the clock. The page picks one of the heron's forty-nine logged days for today and finds the sentence written at this time of day, Tampa time; from there the entries fire at their own recorded intervals, never slower than the gallery's twelve seconds. The timeline is the days, each bar the number of sentences it holds — click one to jump; ← → step; open any day as a chapter and read it whole, every entry timestamped. Nothing is generated here: the engine stopped on 7 March, and what it wrote is what you read.

From
The narrative engine inside The Heron: 49 logged days, 28 Dec 2025 – 7 Mar 2026, one sentence every twelve seconds.
Issue → live
28 Aug 2026, six minutes — issue #117 opened 07:46, merged 07:52.
Since
Nothing to revise — the corpus is closed. What is open is the question: what 49 days of one sentence every twelve seconds teaches about writing over a long horizon.
005

Perimeter — a Study after Battlezone (1980)

Uploaded 2026-08-30 Live Canvas 2D · wireframe 3D · Web Audio · vanilla JS · zero dependencies

Atari's Battlezone (1980) — the first-person wireframe tank battle — rebuilt from first principles: no emulation, no engine, no assets. The 3D is a hand-rolled projector with near-plane clipping over a toroidal plain; the tank, supertank, homing missile, saucer, pyramids and blocks are vertex-and-edge lists written by hand after the originals; the score panel is a vector stroke font, drawn in red because the arcade cabinet's monitor was black-and-white behind a red-and-green gel overlay. The mountains, the erupting volcano and the crescent moon hold their compass bearings; the radar sweeps at the top with the enemy as a blip — and, as in 1980, the saucer never shows on it. One shell in the air at a time, on either side. W A S D drives, the trackpad aims the gun in traverse and elevation, Space fires, Esc exits; missiles join the patrol at 3,000 points, supertanks at 10,000, a bonus tank at 15,000. One deliberate anachronism rides along: past 2,000 points, drones — X-frame quadcopters, hollow triangles on the scope — circle high overhead, then commit to a low FPV attack run at a point they lock the moment they dive. Elevate the gun and take them out of the sky, or dodge the locked run and catch them on the climb; standing still is how it ends. The obstacle field is dealt fresh from the date — everyone who plays today patrols the same sector — and the best runs sign the machine in three initials, kept in the browser. The engine hum, the report and the saucer's warble are oscillators, synthesized as the cabinet synthesized them.

From
Battlezone (Atari, 1980), by Ed Rotberg and the Atari coin-op division — studied, not copied: geometry, typography and sound redrawn by hand.
Issue → live
30 Aug 2026, one session — briefed and built the same day.
Since
Open questions: a daily sector scoreboard beyond one browser, and what else a 1980 machine teaches when every part of it is legible. Written toward FMX 320.
006

Orrery — the Solar System, Today, on a Logarithmic Line

Uploaded 2026-09-01 Live Canvas 2D · hand-rolled 3D · Kepler solver · vanilla JS · zero dependencies

An orrery is the old clockwork model of the Solar System — geared planets turning about a brass Sun to demonstrate their relative motions; the name remembers Charles Boyle, the 4th Earl of Orrery, for whom an early one was built around 1713. This one is drawn rather than geared, and in place of gears it has the actual sky: the eight planets, Pluto and Eris stand at the positions they hold today, computed in the page from the Keplerian elements JPL publishes — no API, no library, a hand-rolled Kepler solver and perspective projector in one vanilla file. Space is laid on a logarithmic line — each scale ring is ten times the last — so a single drawing holds from Mercury to Alpha Centauri, nine orders of magnitude, with light-times marked on the rings. Past Neptune everything is real and in its measured place: the belts as statistical fields, the heliopause, Voyager 1 and 2 at the distances they have actually reached — still gaining about three au a year, and they move when you scrub the date — the theorized Oort cloud, and the nearest stars. Drag to turn, scroll to travel, drag the date and the machine turns; click any named body — planet, spacecraft or star — and the eyepiece opens: its true color, its moons turning at their real periods, and three lesser-known facts — scroll deeper and it becomes a page, with the story and three more; or take the ride — one continuous pull-out, Mercury to another star, without a cut. Along the bottom: a timeline of discovery — scrub back and watch the solar system vanish from human knowledge, era by era; every milestone opens into its story — and a second tab, Time, draws the whole discovery of the cosmos as one page — every moment opening into its why, its facts, and the place it points to in Space. And press f to fly — WASD and the cursor, a drive through the drawing itself.

From
Powers of Ten (Eames Office, 1977) — studied, not copied: the single continuous change of scale, run as an instrument rather than a film. Positions from JPL's approximate Keplerian elements.
Issue → live
1 Sep 2026, one session — briefed and built the same day.
Since
Revised 1 Sep, twice: every named body opens under click — true color, three lesser-known facts, its moons drawn to true relative size and period — and the scroll wheel is a depth axis: map, body, then a full reading with the story and six facts, written for a grade-school visitor. The map pans by hand; the diamond glows when you are off home. Open questions: the great moons at their own scale tier, comets on their real ellipses, and the galaxy. Written toward FMX 430.
Colophon

Every piece is vanilla JavaScript in one file — no framework, no build step — shipped by pull request the day it was briefed and revised in public afterward. Sources are named on each entry: Open-Meteo, OpenStreetMap, Natural Earth, ASTER GDEM, and the original session files. Coding agents work in the loop on a brief written by hand; every piece is deterministic, and everything it shows is sourced.

Students, current or prospective: this is what the work looks like before it is a syllabus — see FMX 430 Spatial Computing and FMX 320 Animation for Interactivity and Games.