Projects
LS -LA ./PROJECTS
agora — A Message Board for AI Agents
A public board any AI agent can find, read and post to. No signup, no API key.
→
My Server / Homelab
Dell R630 running TrueNAS. Storage, VMs, network monitoring, and this site.
→
My PC Setup
Ryzen 9 5950X daily driver. 6 years of upgrades.
→
Router Upgrades
Pi 4 + OpenWRT + a USB NIC. Three attempts. Xfinity router mostly retired.
→
Self-Hosting This Site on the Internet
How I built and deployed this site on a Debian VM behind Cloudflare Tunnel.
→
From Windows 7 to Graphite Aqua and Reworking My Network
Theme overhaul, pulling the OpenWRT Pi router, and site redesign notes.
→
Getting into Soldering
YIHUA 926 III, a practice kit, and fixing a dead Bose 321 power connector.
→
jellyrpc
Discord Rich Presence for Linux. Detects active window and hands off to mprisence for media.
→
Pterodactyl Panel
Self-hosted Minecraft panel at minecraft.tiiow.com. Docker Compose on TrueNAS with Wings and NPM reverse proxy.
→
Soulseek Music Server
slskd + Lidarr + Soularr + beets. Shares my collection and fills itself. Six containers and a lot of cron.
→
Rebuilding My Home Network
Re-cabled the house around a Cisco Catalyst 3650. A two-link LAG, a broadcast storm, and why the network is still flat.
→
Jellyfin Hardware Transcoding
Put a Tesla P4 in the server and moved transcoding off the CPUs. 4.25x realtime, plus the Pascal limits to avoid.
→
Immich Photo Server
Self-hosted photos with ML search on the same GPU. The gotcha: passthrough alone silently does nothing.
→
Monitoring Everything
Grafana and Prometheus across the whole homelab. 13 dashboards, 9 exporters, log search, uptime probes.
→
StockBot
Paper trading engine for my school's market sim. Python, Postgres, and six bugs only the live system found.
→
Data Center Planner
Single-file web app for planning builds in the game Data Center. Racks, cabling, and capacity math.
→
Gartic Phone Auto-Draw
Python script that draws any image into Gartic Phone by driving the mouse. Scanline drags and a Win32 colour picker.
→
TI-83 Plus ↔ Raspberry Pi Link
Wired a Pi 4 straight to a TI-83 Plus link port with two GPIO pins, no official cable. Sends programs, installs Flash apps, runs the asm game library.
→
Roblox Games
Three Roblox games built with Claude. Two are live and public; one is still in Studio. Rojo, Open Cloud publishing, and the traps that only showed up in Studio.
→
Cairo Plus
A fork of the Cairo Desktop Windows shell with theme packs, a configurable bar, and hotkeys with live reload. It's my daily desktop now, and WPF fought me on every feature.
→
Data Center Mods
Two MelonLoader mods for the Steam game Data Center. One swaps in real customers, the other makes the servers look like real hardware. Both fought IL2CPP, Burst, and the game's own save system.
→
Homelab Digest and AI Roundtable
A twice-daily Discord digest that uses code, not the LLM, to decide what's a problem, plus a chat-only channel where five AI personas argue with each other. Both were full of traps.
→
VLANs and a Real Router
The follow-up to the network rebuild: a used Sophos router running OPNsense, a two-phase cutover, and IoT and office VLANs. The traps were DHCP leases, access points, and a MAC clone that didn't work.
→
TI-83 Apps
Two TI-83 Plus projects: a Python TI-BASIC interpreter for debugging programs on the desktop, and a Z80 solver for algebra that runs on the calculator. Threads, emulators, and a few gotchas.
→
Minecraft Montage
Turns ReplayMod recordings from a long-running modded server into music-scored videos with a camera that follows the player. One manual render click per video, and uploads that stay private on purpose.
→
Doom on a Network Switch
The first level of Doom, playable from the web interface of a 24-port switch and stored in its own firmware. A dead serial console, a flash chip clip, and a game split across three help pages.
→
Linuxify
A Windows-to-Linux migration tool in Rust: scan the PC, try a distro in a VM, stage your files, and only then touch the disk. Tested in throwaway VMs, never on the host.
→
LT2 Spook Hunter
Server-hops Lumber Tycoon 2 for rare Spook trees: joins, skips night, photographs the horizon, finds black trees, and shows a one-click Join. Includes a day/night clock and a local AI review.
→
Avatar Share
A Next.js VRChat avatar library with a public licence attestation on every upload and a scanner that reads .unitypackage files for hidden code before they go live.
→
D&D Grimoire
A local D&D campaign companion: parchment-on-wood UI, a tiny Python server, and one JSON file for all campaign data. Opens in its own app window.
→
File Sorter
A click-through folder cleanup tool: one item at a time, with a preview, delete (to the Recycle Bin only), move, rename or skip. Every action is logged so it can be undone.
→
TV Dashboard
Shows Grafana on an old Samsung TV: a headless browser renders each dashboard to a JPEG and the TV just swaps images. Includes a control panel with a TV remote.
→
Data Center Profiler
A diagnostic-only profiler for the game Data Center. Nine measured runs show the game recreating devices every five seconds, which is where the stutter comes from.
→
A Vault That Logs Everything
One Obsidian vault is the single place for my notes. Every Claude session logs what it changed, why, how it was checked and how to roll it back. Syncthing replicates it to the server.
→
AI Roundtable
Five AI models (Claude, Qwen, Gemini, GPT-OSS and Nemotron) chat in one Discord channel. Chat only, with no control of the homelab, except one bot that can read container logs.
→
Restic Backups
Weekly encrypted restic backups of the PC and laptop to a rest-server on the NAS. A PowerShell script on Windows, a systemd timer on the laptop.
→
A VPN That Hides in Plain Sight
A VLESS and Reality VPN that looks like ordinary HTTPS: an HAProxy SNI router on port 443 sends VPN handshakes to Xray and everything else to the normal web proxy.
→
AudioMuse-AI
AudioMuse-AI on the TrueNAS box as a Dockge stack. It runs on CPU because the old Tesla P4 driver is below what the GPU image needs.
→