Tinkerings*.

Things I built. A working list. Sometimes years late, sometimes still warm.

№ 01

Chute.

A Kubernetes operator that turns one CRD into a public URL (Cloudflare Tunnel, DNS, Access OTP, and a cloudflared pod), all from a single kubectl apply. Built because I wanted to share an AI experiment on my laptop in five minutes.

2026Go / Kubernetes / Operator pattern / Cloudflare Tunnels / Cloudflare Access / koshipped
→ OPEN
№ 02

Drift Sector.

Browser-first multiplayer trading and territorial-control game on Cloudflare Workers, a spiritual successor to old space trading games. In private development.

2026TypeScript / Cloudflare Workers / D1 / Web Canvaswip
→ OPEN
№ 03

Frigate's camera wall on channel 1.

Getting Frigate's birdseye camera grid to play as a Live TV channel on a Roku through Jellyfin. Five stacked failures, and a root cause in a composite that renders slower than the 10 fps it claims.

2026Frigate / go2rtc / Jellyfin / ffmpeg / HLS / Roku / Proxmox / systemdshipped
→ OPEN
№ 04

mcp-home.

Go MCP server that lets Claude reach into my smart home and media stack (Home Assistant, Sonarr, Radarr, and Frigate) over a Cloudflare Tunnel.

2026Go / MCP / Home Assistant / Sonarr / Radarr / Frigate / Cloudflare Tunnel / Cloudflare Accesswip
→ OPEN
№ 05

nabkey.com.

This site. Static blog and tinkerings index on Cloudflare Workers, with MDX content, a global ⌘K palette, and a hand-built editorial design system.

2026Hono / Preact / MDX / Cloudflare Workers / Viteshipped
→ OPEN
№ 06

Nauracast.

A two-host podcast generator on Cloudflare. A seven-stage Workflow turns a list of sources into a twelve-minute briefing for about a quarter an episode, cheap enough for an audience of one.

2026Cloudflare Workflows / Workers / D1 / R2 / Containers / Gemini / TypeScriptwip
→ OPEN
№ 07

Pool thermometer via RTL-SDR.

A floating pool thermometer with no API, sniffed out of the air at 915 MHz with an RTL-SDR and a one-line patch to rtl_433. My sensor turned out to be the first unit to disprove a guessed entry in the upstream decoder's checksum table.

2026RTL-SDR / rtl_433 / FSK / MQTT / Home Assistant / Proxmoxshipped
→ OPEN
№ 08

trivai.

Jeopardy at home with an AI host. The TV shows the board, every phone is a buzzer and a microphone, and Trev reads the clues, judges spoken answers and comments between them.

2026Go / TypeScript / Vite / SQLite / WebSocket / Gemini TTS / Gemini Live / Playwright / k3swip
→ OPEN
№ 09

Garage door controller.

ESP32 + ESPHome controlling two garage doors with relay pulses, reed switches reporting true state, and a Bluetooth proxy thrown in for free. Talks directly to Home Assistant.

2025ESP32 / ESPHome / Home Assistant / Reed switches / LilyGO TTGO T-Relayshipped
→ OPEN
№ 10

Sprinkler and garage controller.

A 2018-era home sprinkler controller, a Raspberry Pi orchestrated by Jenkins, because Jenkins was already running on the home Xen cluster. Long since retired.

2018Raspberry Pi / Jenkins / Python / Xenarchived
→ OPEN
№ 11

Multi-zone audiobook player.

An audiobook playback appliance with one zone per room (independent MPD instances, a Go HTTP service, AngularJS UI, espeak greetings on boot). Built for a family member.

2014Go / MPD / Python / Ubuntu / AngularJS / espeakshipped
→ OPEN
№ 12

Wedding stream.

Real-time Twitter wall for a friend's wedding (crawler → message queue → Node.js displays) with admin filter mode and starred users (bride, groom, party).

2012Node.js / RabbitMQ / AngularJS / Twitter APIshipped
→ OPEN