Building a Code Evolution Analyzer in a Weekend
What started as a 'quick script to visualize git history' became microservices, NATS message queues, and audio sonification. The anatomy of a one-day project that wasn't.
Identity, SEO, and a Lot of Polish
Building out the identity system—sessions, OAuth, passkeys—plus gopher content flow, Z-Machine expansion, and a huge formatting sweep.
Deep Dive: Passkey Authentication for a Retro BBS
WebAuthn meets 1980s aesthetics—implementing FIDO2 passkeys and biometric auth for a system that pretends to be a 300-baud bulletin board.
CC-40 Completion and IVR Launch
Shipping the TI CC-40 backend with authentic CALL commands and audio, plus a full IVR phone tree system.
Storage Peripherals and Audio Realism
Adding hard drive, floppy, and cassette peripherals with Kansas City Standard encoding, plus a peripheral audio bus for realistic sounds.
Deep Dive: Kansas City Standard Cassette Storage
Building a 1976-era cassette peripheral—FSK encoding at 2400/1200 Hz, tape transport simulation, and why saving 8KB took six minutes.
Deployment Prep and Backend Growth
Kubernetes/K3s deployment configs, CI/CD scaffolding, schema-driven API generation, and the Star Trek BASIC backend.
Three Languages, One Weekend: Building BASIC, Forth, and Scheme Interpreters in Rust
Implementing three classic programming language interpreters in Rust, compiled to WebAssembly. BASIC for nostalgia, Forth for stack machines, Scheme for elegance—and what I learned along the way.
The Big web/ Move and Parser Migrations
Moving the web app to a proper structure, migrating parsers to Pest/Pratt, and building the Z-Machine opcode engine.
Deep Dive: CTS Flow Control in the Serial/Modem System
Why you can't just shove bytes through a virtual modem—RTS/CTS hardware flow control, buffer management, and making dial-up feel authentic.
Z-Machine Foundations and Storage Sync
Pushing the Z-Machine interpreter forward with decoder work, text handling, and SAVE/RESTORE—plus content-addressable storage with S3 sync.
Deep Dive: The Z-Machine Interpreter
Building an Infocom Z-Machine interpreter in Rust—instruction decoding, Z-strings, call frames, and understanding what makes Zork tick at the bytecode level.
Feature Surge: Dungeon, Forth, and Core Polish
A big feature day across the dungeon backend, Forth interpreter, and CPU cores—plus the Intel 8008 calculator peripheral.
Emulation Milestones and TypeScript Migration
Intel 8088 demos, Zig-based 6502 experiments, and migrating the frontend to TypeScript for better type safety.
Deep Dive: PETSCII and the VIC-II Text Adapter
Translating Commodore's weird character encoding and VIC-II video memory into ANSI terminal output—box drawing, color mapping, and 40-column nostalgia.
Big Repo Restructure and Backend Migration
Splitting the repository into clear domains—cores, languages, assemblers, BIOS—and making future work less of a guessing game.
Deep Dive: Bell 212A and V.32bis Handshakes
When 300 baud isn't enough—simulating faster modem handshakes with phase modulation, QAM, and the beautiful screaming of USRobotics Sportsters.
Deep Dive: Bell 103 Audio Modem and FSK Implementation
Implementing the 1962 modem standard that made 300 baud dialup possible—FSK modulation, Goertzel demodulation, and the beautiful warble of two frequencies arguing over a phone line.
Build System Groundwork and Modem Plumbing
Tightening the build pipeline for modem-core WASM, dynamic backend loading, and making the modem behave like a real modem.
A Small Day That Mattered
Fixing CRT modem and BBS bugs—the quiet foundation work that keeps a larger project from getting weird later.