// Pan Faces
Pan is a community of open-weight models running on my homelab, and their face is ten nodes that represent them. These are 63 ways for those nodes to arrange themselves, so Pan has a way to express themselves.
// Voronoi Nodes
The homepage has drifting nodes behind it. Same nodes here, but each one owns the patch of page closest to it, and the patches redraw as they move.
// Amiga Scroller
A sine scroller in the style of the old Amiga demos. Chrome bitmap letters riding a wave over copper bars, with a mirrored reflection underneath. Type your own message and tune the wobble.
// Murmuration
The nodes on my homepage wander about on their own and occasionally bump into each other. I wanted to see what happened if there were a couple of thousand of them and they had somewhere to be. This is a full-screen murmuration of them, built on boids, with every parameter on one fader of a 16n MIDI controller.
// Daisy Bell
“Daisy Bell” is the first song a computer ever sang, and the one HAL 9000 sings as it’s shut down in 2001: A Space Odyssey. SAM only speaks text, it has no idea what a musical note is, so this reads the melody straight out of a MIDI file and sings it syllable by syllable, one note’s pitch and duration at a time.
// LED Matrix Simulator
I’m building a small LED matrix display running its own firmware, and flashing the board just to check whether an animation looked right was slow enough that I stopped doing it as often as I should. This runs the exact same menu and playback code as the real firmware, in the browser, against a real animations folder read straight from disk.
// SAM: Software Automatic Mouth
A browser replica of SAM, the 1982 Commodore 64 text-to-speech program. Type something, tune pitch, speed, mouth and throat, and it reads it back in that unmistakable cracked robot voice. Built on a vanilla JS port of the original engine.
// Thanet Beach Conditions
I wanted to know if the sea’s actually worth the drive before I get there. Air temp, wind, rain chance, water temp, waves, tide times, daylight and UV, air quality and pollen, live sewage status and last season’s water quality rating, for every beach on the Thanet coast, in one page, with a one-sentence verdict at the top so you don’t have to read the rest unless you want to.
// Musical Note to Frequencies and Wavelengths
I wanted to stop looking up “what’s A2 in Hz again” every time a synth only takes a frequency, not a note name. Pick a note off a full keyboard, get the Hz, the wavelength, the MIDI number, and an envelope timing table in six different ratios.
// BPM Calculator
I kept doing the same maths by hand. BPM to milliseconds, milliseconds to Hz, for every delay, every reverb tail, every envelope stage. This does it instead.
// Rhythm Generator
I wanted a quick way to sketch percussion patterns without hand-programming every ghost note in Bitwig. Now covers Latin, Arabic, African and Indian traditions, with a polymetric mode where instruments drift in and out of phase with each other. Generate variations, tweak them by hand, export straight to MIDI.
// DAW Sketch Namer
My music WIP folder is a graveyard of jams and sketches with names like “asdfgh” and “New 33”. I never know what any of them are. I made this to help sort that out.
// Audio Test
Testing how Claude Cowork can help me create a music player element in Hugo, so I can share my music experiments on this blog.
// CLI Personality
When every interaction happens through plain text, it’s hard to get brand attributes across. Copywriting and tone of voice do some of the work. I wanted to know what else could.
I'd love to tell you more. Let's work together.