Engineering
My engineering work spans language-model infrastructure and PC emulation. Across both, I define the failure, preserve the evidence, build a test that can fail, and keep the claim no larger than the result.
Only public, independently checkable work appears here. Working forks are not listed as projects, and changes under review are not presented as shipped.
Upstream emulator work
I contribute fixes to 86Box, usually after reducing a guest-visible failure to a smaller implementation invariant. Selected merged changes include:
- SAA1099 noise generation and stereo output: replaced the incorrect noise state and feedback taps and corrected the right-channel amplitude path. The PR records a focused local harness for the sequence, period, and independent channel levels.
- ESC/P 2 raster graphics: implemented uncompressed and run-length encoded raster rows. The PR records a replay of the Windows 95 Epson test page that had previously terminated the emulator.
- macOS process-activity lifetime: reproduced an Objective-C ownership failure under Zombies. The PR records 1,000 local pause/unpause cycles with the production object linked into a focused harness.
- RAM-remapping eviction links: preserved live list metadata during conventional-memory remapping. The PR records repeated guest-initiated restarts through the path that had triggered the abort.
The merged contribution record is the source of truth for changes that entered the upstream project.
Reproducible machines
86Box VM Recipes stores versioned, media-free machine definitions rather than redistributing installed systems. Each recipe separates public configuration from operating-system media, keys, ROMs, firmware, proprietary drivers, and disk images. The checks cover the public-tree boundary as well as the scripts: a reproducible recipe that accidentally publishes private media has failed its more important test.
Retro Hardware Lab is a set of later-PC emulation experiments. Each experiment starts with a question, a test, and a stop condition. Results become short reports; platform choices become decision records. One early result deferred the 86Box path for the first probe phase and moved the primary probe to QEMU because CPU timing alone would not resolve the chipset, interrupt, PCIe, and graphics-model gaps.
Model pipelines
Model work appears here when it yields a public method rather than a project announcement. The notes below cover corpus-scale batching and provenance, low-rank adaptation, model design, and defensive local inference. Teaching material and smaller experiments live in the notebook collection; I keep them separate from research claims unless a notebook reproduces the relevant measurement.
Reading the record
Posts distinguish merged fixes, experiments, release notes, plans, and retrospectives. A merge date establishes when a change entered an upstream project. A post date establishes when I wrote the account. Neither proves a broader history than the linked evidence supports.
Engineering notes
-
27 Aug 2026 — Three Emulator Bugs, Three Different Tests — Printer output, audio hardware, and memory bookkeeping needed different tests—and the same discipline about what each fix established.
-
18 May 2026 — A Defensive Ollama Client for Local Judge Inference — A corrected native Ollama API example with schema-constrained output, non-streaming responses, timeouts, parsing, and validation.
-
08 Dec 2025 — Designing a 51M-Parameter Romanian Model from Scratch — The tokenizer, architecture, packing, checkpoint, and attribution decisions that preceded TF3-RO.
-
04 Aug 2025 — What LoRA Changes in the TF2 Translation System — The role of low-rank adaptation, quantization, and the 15K reference set in TF2.
-
10 Mar 2025 — What Breaks When Fable Generation Reaches Millions — The batching, retry, provenance, and storage decisions required to turn TinyFabulist from a prompt prototype into a corpus pipeline.