Anatomy of a Retro BIOS
Designing firmware for emulated retro computers—reset vectors, service calls, UART I/O, toolchains, and the boot theatre that makes it feel real.
Deep Dive: Audio Bus Architecture
Centralizing modem, line, backend, and peripheral audio in a single bus system, after a demo where the volume knob only worked on half the sounds.
Deep Dive: Building a Canada Goose Simulator
A deadpan text adventure about mild chaos, built on a time budget: 79 tests, procedural honk audio, and a migration ending instead of a game over screen.
Deep Dive: Audio Sonification for Code Visualization
Mapping code history onto sixteen oscillators: why a harmonic series turned to mud, how gain has to follow perception, and the double-ramp bug behind the pulsing.
Deep Dive: Custom Canvas Charts for 30fps Animation
Chart.js redraws the full scene on every update, which is right for a dashboard and wrong for playback. Replacing it with a Canvas 2D renderer.
Deep Dive: Balancing a Goose Game
The iteration that turned a text adventure into something playable: balance tuning, achievement scaffolding, and the 1081-line manual that made it legible.
Assemblers, Memory Maps, and Madness
Building cross-assemblers for retro CPUs in Rust, migrating to Pest parsers, and discovering why load addresses matter more than you think.
Deep Dive: Simulating DATAPAC, Canada's Forgotten Internet
Rebuilding the DATAPAC PAD experience in code: the command loop, X.25 NUAs, and five period-authentic hosts behind a 300-baud prompt.
Deep Dive: Lazy Loading 42 Backends with Dynamic Imports
Shrinking the emulator's main bundle from 1.1MB to 104KB by lazy-loading backends, and hiding the fetch inside the dial tone.
Deep Dive: Worker Heartbeats and Job Recovery
JetStream redelivered the message and the work was still lost. Moving job ownership out of the queue and into the database.
Inside Five CPU Emulators
Five classic CPU cores in Rust, compiled to WebAssembly: 8008, 8080, 8088, Z80, and 6502, and the edge cases that keep emulation honest.
Video Chips and Serial Streams: Rendering C64 Graphics Over a Modem
Emulating the VIC-II's text mode and forwarding its screen memory as ANSI escape sequences over a serial connection.
Serving Gopherspace from a Rust Backend
Building a Gopher server that serves RFC 1436 content through a modern API layer, so the emulator's BBS has something to browse.
Deep Dive: The Microservices Migration
A BBS emulator that outgrew localStorage: gRPC services, NATS messaging, a gateway, and the question of whether any of it was necessary.
Server-Backed Backends and Peripherals Go Physical
Migrating backends to server APIs with NATS pub/sub, adding microservices, and building the peripheral slot system alongside the Canada Goose game.