Designs by Duhart
Working software, not recordings. The Billboard and BoxOffice players and the Dating deck are the real TheOne application, served from a container on my own Kubernetes node. Breach is a Transformer running in WebAssembly, NEURAL//RUN teaches machine learning by running it, and Vitals is my iPhone app ported to the browser. Six smaller interactive components from the case studies are at the bottom.
The real Billboard player, running. A Web Audio FFT over the decoded stream, a waveform scrubber, and audio by HTTP Range from R2, served from a pod on my k3s node.
The frame is the real web-platform Next.js app, running as a standalone server in one pod on my k3s node and reached through a Cloudflare tunnel to a NodePort. There is no ingress controller in front of it, so the route allow-list ships inside the image. Audio arrives by HTTP Range from R2, and the spectrum is an AnalyserNode reading that same decoded stream.
Real: the components, the audio engine, the API calls and the catalogue. Changed for the demo: a route allow-list, and a flag that lets an anonymous visitor's playback request reach the server. Liking a track or saving a playlist needs an account, so those fail quietly here, which is how they were built to fail.
BoxOffice, the running playerhls.js over a 480/360/240p ABR ladder
Dating, the Discover deck runningThe product's own Discover UI, not a model of it
Breach Protocol: a Transformer you can readOne C++ source: native to train, WebAssembly to run
NEURAL//RUN: machine learning you playTen modules, each a live demo on a C++ engine in WebAssembly
Vitals, the iPhone app, running in your browserTimers, protocols, PRs, goals and macros, all interactive
The swipe deck, running its real state machineGesture physics and prefetch at two cards remaining
One chat protocol, with a socket you can pullOptimistic send, reconciled on the server ack
The player's interaction model: scrub, seek, followAn actor owns position; the view only reads it
The moderator console, sorted by time remainingSorted by time left, not by filing time
The ingest that refuses to guessLabel-first qualification against the ontology
Every product mode, one Next.js appOne app, every product mode