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
Centralising modem, line, backend, and peripheral audio in a single bus system, and why fewer hops beat fancy decoupling.
Deep Dive: Audio Sonification for Code Visualization
I mapped code history onto a small audio graph and treated volume as a data contract, not a vibe.
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: Building a Canada Goose Simulator
How a deadpan text adventure about mild chaos became the BBS system's most extensively tested game—79 tests, procedural honk audio, and a migration ending instead of game over.
Deep Dive: Custom Canvas Charts for 30fps Animation
Chart.js redraws the full scene every frame—correct for dashboards, wrong for playback. The fix was to treat the chart as a video surface.
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
How I shrank the emulator's main bundle from 1MB to 104KB by lazy-loading backends during dial tones—and why users never notice the delay.
Deep Dive: Worker Heartbeats and Job Recovery
A database-first ownership model for long-running jobs, with heartbeats, stale detection, and deterministic recovery.
Inside Five CPU Emulators
Building five classic CPU cores in Rust for WebAssembly: 8008, 8080, 8088, Z80, and 6502, with shared state formats, cycle timing, and the edge cases that keep emulation honest.
Video Chips and Serial Streams: Rendering C64 Graphics Over a Modem
How I emulated the VIC-II video chip and forwarded its framebuffer as ANSI escape sequences over a serial connection—turning a 40-year-old graphics architecture into something a BBS terminal can display.
Serving Gopherspace from a Rust Backend
Building a Gopher server that serves RFC 1436 content through a modern API layer—because sometimes you want to browse the internet like it's 1991.
Deep Dive: The Microservices Migration
How a BBS emulator grew into a distributed system with gRPC services, NATS messaging, gateway routing, and real backends instead of localStorage.
Server-Backed Backends and Peripherals Go Physical
Migrating backends to server APIs with NATS pub/sub, adding microservices, and building the peripheral slot system with the Canada Goose game.