rt-541

projects

Things I've built

A grab-bag of work and side projects. Click through for details.

Virtual

Software, infrastructure and the homelab.

about.rt-541.io

active

The site you're reading. A self-hosted personal site with a hand-built Saturn design system.

Astro and Tailwind, statically built and served by nginx behind Traefik on my own hardware. The Saturn glyph is a custom SVG: real ring colors, atmospheric banding, and an RT-541 wordmark sitting in front of the planet but behind the rings. No analytics, no trackers, no third-party hosting. It runs on the same box as everything else I self-host.

Game servers for friends & family

active

A rotating fleet of dedicated game servers, run for a small community of friends and family.

Whatever the group is playing that month gets a server. Each one is a Docker Compose service with its own resource limits, scheduled backups, and Discord notifications when it starts or stops. The goal is that a server is up before anyone asks for it and recoverable when something goes wrong, without me having to babysit it. Right now Project Zomboid and Minecraft: All the Mods 9 are live, with a deeper rotation configured and ready on demand. The heavier automation lives in companion projects: RCON tooling and world-reset scripts for Zomboid, and a Discord bot for status and remote admin.

see the gaming page →

Project Zomboid server tooling

active

Automation for running a Project Zomboid dedicated server: world resets, version migrations, and RCON-driven player recovery.

A growing set of scripts that handle the things a long-running game server eventually needs. World resets that preserve player progression. A migration path for the Build 42 jump. RCON-driven recovery that restores a player's items and XP from a backup without handing back a god character. It started as a one-off reset script and turned into a small operational toolkit, runbook included.

nemesis-configs homelab

active

The self-hosted estate this site runs on. Around 25 services behind Traefik on bare metal.

A single git repo that defines the whole estate: Docker Compose for every service, Traefik for routing and TLS, Pi-hole for internal DNS, and a wildcard domain that resolves to the LAN inside and the WAN outside. Game servers, a media stack, monitoring, and a handful of web apps, all managed the same way. The goal is that anything I run is reproducible from the repo and nothing lives only in my head.

nemesis-bot

active

Discord automation for the game and media estate: status, alerts, and remote admin.

The control surface for the homelab from inside Discord. Server status, start and stop alerts, and remote administration for the game and media stacks, so the people who use the servers can see what's happening without shell access. It ties into the same Compose-managed services as everything else in the estate.

ChurnCore — Project Zomboid mod suite

active

Three-mod suite for a private Project Zomboid B42 multiplayer server: an event engine, meta progression, and an Army relief narrative.

A framework mod (engine, stages, registries, UI, client/server state sync), an events mod driving missions, radio broadcasts, and music, and a bridge to the Bandits NPC mod. The world escalates through stages under an event director: supply drops, horde spawns, weather events, all steerable from an in-game admin panel and dashboard. Built in Lua against Build 42 multiplayer, with unit tests and a scripted deploy loop. In active development.

Advent Harvest

active

Turn-based creature-team battler with roguelite dungeon crawling, built in Godot 4.

The current focus is the overworld: seed-driven procedural generation that ranges from continents to archipelagos, a biome model layered over latitude and elevation climate bands, and hex-grid pathfinding. Saves are real progress rather than bookmarks, and the systems carry a headless test suite (GUT). Stand-in art while the systems mature. In active development.

milestones & screenshots →

MCP safeguards plugin

redacted

Guardrails for Model Context Protocol tool use inside an enterprise AI agent platform. Details redacted.

Built in a professional setting. Specifics are not public.

AI agent skills marketplace

redacted

An internal marketplace for sharing governed AI agent skills across an engineering org. Details redacted.

Built in a professional setting. Specifics are not public.

Bedrock RAG portal

redacted

A retrieval-augmented generation portal on AWS Bedrock for internal knowledge access. Details redacted.

Built in a professional setting. Specifics are not public.

Multi-tenant Ansible Automation Platform

redacted

Multi-tenant Ansible Automation Platform on OpenShift for org-wide infrastructure automation. Details redacted.

Built in a professional setting. Specifics are not public.

Porting and kitbashing Halo weapons

active

How I'm building a fan-mod weapon set by directly porting and kitbashing original Halo game art: the tools, the method and the review process. None of the base art is mine; this is the how, with the full arsenal as the worked example.

method, tools & renders →

Porting Halo armor into Zero Company

active

How Halo: Reach ODST armor gets ported into a Star Wars Zero Company fan mod: the tools, the steps, what went wrong and how it's going. None of the base art is mine; this is the how.

method, tools & renders →

Physical

Things built from plywood, steel and wire, with drawing sets.

Backyard

active

A backyard drawn from drone photos: a freestanding composite deck at the back slider, a 16 ft buff flagstone patio with a round fire apron and stone fire ring, a stone raised herb bed, a sound-damping screen around the AC, a stone walkway, a row of American Pillar arborvitae and a French drain.

A new 25 by 20 ft composite deck at the sliding door in the bay of a brick ranch, running from the chimney to near the house's east corner, its outer corners cut at 45 degrees, a vented composite skirt below, freestanding on two beams because a ledger cannot hang on brick veneer. The Blackstone griddle and a smoker stand along the east rail, dining by the slider under a cantilever umbrella. One stair drops off the west side onto a 16 ft square of dry-laid buff flagstone holding the outdoor sofa set, with a 14 ft round apron and a 52 in stone fire ring centred on the patio's northwest corner and an 18 in stone seat wall curving around the ring's north half and along the patio's north edge. Between the patio and the house, a stone raised herb bed stands 4 in off the brick, and the AC is screened on its north and east sides with vinyl lattice over mass-loaded vinyl, left open to the west and on top so it still breathes. Five American Pillar arborvitae stand in one row along the back fence on the slider's line, and a French drain along the wet east fence ties into the existing corner drain. Revision A5, laid out from drone photos.

drawing set & PDF →

Garage shop

active

A one-car woodshop in an 18 by 20 ft attached garage with a 12 ft ceiling: locking wall-hung tool cabinet, a rolling flip bench carrying the table saw, miter saw and planer, mobile dust cart, a potting station, bulk storage on the landing, and a 100 A subpanel with a dedicated circuit for every stationary tool.

The truck parks in the center bay with its nose over the 6 in landing that runs across the back wall, the potting station and the machine bay take the west wall with the bulk rack on the landing behind them, and the shop takes the east wall. Everything that cuts is on wheels and parks against the wall: a 92 in flip bench with the DWE7491 table saw sunk flush at one end, the DCS785 miter saw on a flip section in the middle and the DW735 planer on a flip section at the other end, each flip turning on a 1 in steel shaft in flange bearings with a riser bench top on its back, and a dust cart with a cyclone on a shop vac. A 48 in birch cabinet on a French cleat holds the cordless tools behind hardened hasps and discus padlocks, pinned to the wall from inside. A 100 A subpanel fed from the basement carries eight circuits, with a 50 A EV circuit roughed in for later. About $2,400 in priced lines, every one a checked listing. Revision B, drawn on the measured garage.

drawing set & PDF →

Rock screen

active

A tilt-tray screen for cleaning a pool's worth of river rock: shovel it onto a hardware-cloth tray at counter height, bounce, pick and rinse it, then lift a handle and it slides down a funnel into a 50 lb burlap sack on a hand truck.

River rock that came out from under a pool, full of roots, leaves and dirt, going back into 50 lb burlap sacks. The tray is a 24 x 48 in 2x6 frame with 1/2 in hardware cloth on 2x2 slats, hung on two carriage bolts inside a 2x4 stand and resting on hockey pucks so it can be bounced to drop the dirt. Pick the junk, hose the load, then lift the handle: the tray tilts 35 degrees and the rock slides off a flashing lip through a plywood funnel into a sack cuffed on the spout, standing on a hand truck so nothing heavy is lifted off the ground. Three shovels a sack, 45 lb, about 60 sacks a yard. About $190 in lumber and hardware. Design complete, build pending.

drawing set & PDF →

Basement spool cabinet

active

A sealed plywood filament cabinet one IKEA BILLY wide, with two OXBERG glass doors, that holds 56 spools at 10 to 20 percent humidity on desiccant alone; drying is a bought dehydrator.

One box you build, one you buy. The cabinet is pocket-screwed from three sheets of plywood into a 30 in bay sized to a pair of IKEA OXBERG tempered-glass doors, sealed with EPDM bulb weatherstrip and magnetic catches, with 5 lb of indicating silica gel and a USB fan holding it dry. Spools stand on edge in cradle rails, two rows deep, seven per row at a 4 in pitch, 56 on rails plus overflow laid flat in the cubby. Drying happens in a used box dehydrator. About $450 in pine with every price a checked listing. Design complete, build pending.

drawing set & PDF →

Front Yard

active

A front yard drawn from drone photos: a dry-laid buff limestone wall running along the front walk, sweeping out of the lawn in front of the house and up the west side, a white marble bed behind it with stone window wells at the basement windows, a stone ring that keeps a mature weeping Japanese maple at today's grade, and two zones of drip irrigation from the hose bib.

A curved wall of buff Wisconsin limestone round the front and west side of a brick ranch, the same stone as the backyard's fire ring: it starts at the driveway end of the front walk, runs along the walk, sweeps out into the lawn in front of the west wing's windows, closes into a ring around the weeping Japanese maple and wraps the corner to run up the west wall. Behind it a bed of white marble chips over fabric falls gently away from the house, kept 4 in below the brick, with a drain behind the wall; each basement window on the west side gets a stone window well dug out of the bed. Inside the ring nothing is filled or dug: the maple keeps its roots at today's grade under shredded hardwood mulch, watered by its own loop of drip tubing, and a second drip zone waits under the fabric for planting. Revision A, laid out from drone photos.

drawing set & PDF →