// LAB
Things we're still tinkering with.
WIP [ TYPESCRIPT · REACT ] DUOTONEAudioGraph
TypeScript · React · Vite
Patchable modular, node based synth in the browser. Drag, wire, play, record.
WIP [ TYPESCRIPT · REACT ] DITHERConsole Adventure Studio
TypeScript · React · React Flow
Visual editor for browser-console text adventures — node graph, live playtest, JSON export.
WIP [ TYPESCRIPT · WEBGL ] SHIFTINGIGB Web Pod
TypeScript · WebGL · Canvas2D
Browser simulator of the IGB projection-mapped pod. Build and test pod content without leaving your desk.
WIP [ DISTILBERT · PYTHON ] DITHERAI Attention Visualiser
DistilBERT · Python · transformers
Peek inside a real AI's brain — see which words it's paying attention to as it reads a sentence.
[ THREE.JS · SOCKET.IO ] DUOTONELego Multiplayer
Three.js · Socket.io · WebGL
Real-time multiplayer Lego sandbox — walk through a procedural brick world with other anonymous visitors.
[ CANVAS2D · WEB AUDIO API ] STATICRetro Gauges
Canvas2D · Web Audio API · AudioContext
Vintage instrument panel that's secretly a Web Audio synth — the wave on the scope is the sound you hear.
[ FFMPEG · FLY.IO ] STATICYou Little Ripper
ffmpeg · fly.io · yt-dlp
Bulk-rip audio from YouTube — paste a list, grab MP3, FLAC or WAV, all in-browser.
[ UNITY 6 · WEBGL ] DITHERWeb Assembly Spaceman
Unity 6 · WebGL · WebAssembly
Unity 6 WebGL experiment testing WebAssembly performance with animated gradients & offline support
WIP [ HTML · CSS ] STATICParallaxing in canvas
HTML · CSS · JavaScript
A multi-layer landscape in canvas2D — move the cursor to watch depth happen.