Chris Collins

Chris Collins

Principal engineer. I build software, objects, and the occasional retro machine — and write up what I learn.

I am a principal engineer working on enterprise content platforms, search, and applied AI. Away from work I make things — in wood, metal, plastic, and silicon — and keep a few old computers running. This site is where I share what I build and what I learn along the way.

Pinned

Featured

Project ·

3do-dev: a modern 3DO dev kit

A modern development kit for the 1993 3DO Interactive Multiplayer: the original-style Norcroft toolchain in Docker, a patched Opera emulator with a GDB server and remote-control API, and MCP tools for Claude Code.

Retro computing

Project ·

Chief

A multi-project Claude Code orchestrator for macOS: it tracks the backlog of every project I work in and hands the next task to the right Claude session.

Applied AIDeveloper tools

Project ·

Mac Transformer

A macOS menu-bar app that turns documents into PDF, plain text, spoken audio, and AI summaries through a pluggable pipeline — and can publish the results to Books, Music, Reading List, Obsidian, or Notion.

Developer toolsApplied AI

Project ·

event_watch

A low-latency pub/sub service: back-end services publish state changes, and clients subscribe over WebSocket or long-poll to receive events plus a server-maintained snapshot of each object.

Data and event platformsElectronics

Project ·

CityMap

A TOGAF-inspired "city map" editor for enterprise architecture — districts, neighbourhoods, buildings, and rooms on a pan-and-zoom canvas, editable by people and by AI through REST and MCP.

Software engineering

Project ·

Amiga games and demos

Original games, demos, and test programs for classic AmigaOS and AmigaOS 4.1, built and debugged with Amiga DevBench.

Amiga

Project ·

Amiga DevBench (amiga_mcp)

A cross-development environment that connects a modern machine to an emulated or real Amiga over serial — live debugging, memory inspection, remote execution, and MCP tools so Claude Code can build and drive Amiga software.

AmigaDeveloper toolsApplied AI

Latest writing

All articles →

Article ·

3-D models

Figures, spacecraft and retro machines I have made as 3-D models with Meshy.ai and prepared for printing — mostly people as Lemmings, Amiga history and 1980s TV. This page grows as I add models.

3D printingAmiga

Article ·

AI Force

The administration is starting a new military force, so I designed the one I'd expect: the AI Force — a squad of very typical geeks in hero suits, with a nod to Atari Force from the 1980s comics.

3D printingApplied AIAtari

Article ·

Aliens in my house

I'm a big fan of the alien genre, so I wanted some funny aliens in my house: greys drinking coffee, on the phone, and doing see-no-evil — modelled in Meshy, printed, and hand painted.

3D printing

Article ·

Space: 1999

Space: 1999 was a show I loved watching as a kid, so two of my 3-D models are from it: an Eagle Transporter and a Moonbase Alpha astronaut.

3D printing

Article ·

gitwebsite is now open source

The engine behind this site — a Rust static-site generator with a CLI, REST API, MCP server, and desktop app — is now on GitHub under the MIT licence.

Developer tools

Project ·

warehouse-sync

Metadata-driven incremental replication from PostgreSQL into Apache Iceberg — the database counterpart to my structured-logger project.

Data and event platforms

Project ·

Lemmings, Lemmings everywhere

My friends from the Amiga community, reimagined as Lemmings — designed with Meshy AI from photos, printed in PLA on Bambu printers, and finished with felt-tip pens and UV resin. Plus a few guesses at what Lemmings would be up to now.

Amiga3D printing

Project ·

ELSA: entity-level sentiment

A Java library that finds the people, organisations, places, and products in text and works out the sentiment expressed toward each — and who holds it — using a layered ONNX model pipeline.

Applied AI

Project ·

Event Conduit (webhook_infra)

An outbound event-delivery platform: it consumes internal events from Kafka, matches them to subscribers, translates them to CloudEvents, and delivers them as signed webhook batches or WebSocket streams.

Data and event platforms

12 V and 24 V vehicle wiringWire a car, van, truck or motorbike: cable size in mm² and AWG from the current, the round-trip length and the voltage drop you allow, with insulation rating, under-bonnet heat and bundling; the fuse that protects it; relay circuits drawn as schematics with the 30/85/86/87/87a pins and the flyback diode; crimp terminals and connectors; parked battery drain and the alternator's load; a second battery on a DC-DC charger; and the DIN 72552 terminal numbers.2.5D CAMTurn an SVG or DXF drawing into G-code for a CNC router — pockets (offset or zig-zag), inside / outside profiles with tabs and lead-ins, drilling with pecks, engraving and V-carving — with a tool library fed from the router chip-load table, GRBL / LinuxCNC / Marlin output, a 3-D toolpath preview, a material-removal simulation and a time estimate.3-D printer farm dashboardOne page for every Klipper (Moonraker), OctoPrint and Bambu Lab (LAN mode) printer on your network — state, job, progress, time left, layer, temperatures with a graph, webcam, filament, and for Bambu printers the AMS spools and decoded HMS messages — with pause, resume, cancel and start, alerts when a print finishes, fails or a printer sits idle, and a job queue. Through a small relay you run, directly, or as a simulated demo farm.3D print cost quoterQuote 3D prints from the slicer's G-code (PrusaSlicer, OrcaSlicer, Bambu Studio, Cura), a sliced Bambu / Orca 3MF (one line per plate) or a model's volume — material and waste, electricity and heat-up, machine wear, failure allowance, setup and post-processing labour, extras, markup, a minimum charge and tax — with saved printer and material profiles and a printable quote.3D print troubleshooterFind a 3D printing problem by what it looks like — stringing, warping, ringing, layer shifts, under-extrusion, resin failures and more — then work through its causes, most likely first, with the fix and a quick test for each.3D printer calibrationExtruder e-steps (Marlin) and rotation_distance (Klipper), belt and lead-screw steps/mm, flow from a single-wall print, scale compensation, Z offset from a measured first layer, pressure-advance and input-shaping notes, and for Bambu Studio / OrcaSlicer the flow dynamics K, flow ratio, max volumetric speed and retraction tests.6502 assemblerAssemble and disassemble 6502 and 65C02 code in the browser, with labels, local labels, expressions, and an optional undocumented-opcode set; download raw binaries, Atari binary-load files, or C64 PRGs; search the full opcode table with cycles and flags.68000 assembler and disassemblerAssemble Motorola 68000 code in the browser and export S-records (S19/S28/S37), Intel HEX, raw binary, a C array, an Amiga hunk executable or an Atari ST .PRG; disassemble hex, binaries, S-records or Intel HEX with a byte-exact reassembly check; inspect and convert S-record files.

Learn by running things: explorations around live simulations, code to edit and run, and apps.

Exploration ·

From transistor to CPU

Start with one transistor switching an LED, wire switches into gates, gates into an adder, feedback into memory, and memory plus a clock into a tiny CPU — then watch a real 6502 run a program you can read byte by byte.

ElectronicsRetro computing

Exploration ·

How a brushless motor spins

From magnets and coils to a quadcopter in the air: how a brushless motor is wound, how an ESC switches it in six steps, how it finds the rotor without sensors, what field-oriented control does better, and what happens when you bolt four of them to a frame — with the simulators running alongside.

ElectronicsPhysics

Exploration ·

How a database survives a crash

Pull the plug on a database halfway through a write and it comes back with every committed transaction and none of the half-finished ones. How? Follow a write through the log, the buffer pool and the disk, compare B+trees with LSM-trees, watch compaction, and then see the other half of the promise — what concurrent transactions are allowed to see — with real PostgreSQL and SQLite running between the paragraphs.

Data and event platformsSoftware engineering