Start with a solid foundation.
Servers, storage, networking, and the operating system. Understand the machine before deciding what to put on it.
LINUXNETWORKINGCONTAINERSI know the hardware. I build the platform.
I write and ship the software.
Then I automate the whole thing.
Servers, storage, networking, operating systems, cloud infrastructure, and the code running on top. I work across those layers and understand how they affect each other. When something breaks, I can follow the problem through the stack.
Servers, storage, networking, and the operating system. Understand the machine before deciding what to put on it.
LINUXNETWORKINGCONTAINERSInfrastructure as code, application tooling, and release pipelines. Build the platform and the software, then make the useful parts repeatable.
IaCCI / CDGood signals make complex systems legible. Understand the behavior before reaching for the fix.
METRICSOBSERVABILITYThe platform changes. The job is still to make it repeatable, know what changed, and prove the thing actually works.
Terraform, OpenTofu, and Terragrunt. Reusable modules, environment composition, dependency boundaries, and plan/apply workflows. Infrastructure I can read, change, and build again.
GoCD, Octopus Deploy, Jenkins, and GitHub Actions. Build it, package it, get it into the right environment, and keep the path understandable when something goes sideways.
Playwright checks for the parts a running container cannot prove: user flows, protected pages, keyboard controls, and layouts across desktop, tablet, and phone sizes.
Container images, versioned Helm charts, JFrog Artifactory, and Packer image blueprints. Build artifacts and machine foundations that are identifiable beyond “the latest one.”
Linux and Windows/IIS. Bash, Python, Node.js, PowerShell, and Ansible. If the useful fix starts as a script, give it clear inputs, useful output, and a way to run it again.
Kubernetes, ingress, DNS, TLS, secrets, telemetry, and data migrations. The interesting failures tend to cross a boundary. That is usually where I start looking.
My own source control. My own storage. Enough hardware to make a bad idea interesting. This is where the platform work gets very, very hands on.
1.4PB
Because “that should be enough storage” is apparently a challenge.124TB
SSD capacity for the things that do not need to wait on a platter.4Pi-holes
One resolver having a bad day should not become everyone’s problem.Storage totals across my homelab. Inventory figures, not live usage or availability readings.
Dual Xeon E5-2697 v3
377.8 GiB ECC · TrueNAS · ZFS
A Dell host for persistent services, GitLab, application datasets, and the operational fun that comes with running your own platform.
Dell DL1300 · Xeon E3-1240 v5
16 GB ECC · Proxmox VE · iDRAC
Virtual machines, Linux containers, workload migration, and a separate management controller for when the operating system has other plans.
Beelink ME Mini · Debian · Docker
Raspberry Pi 4 & 5 · Always-on services
Tardis hosts this site. The Pis keep lightweight infrastructure useful while the bigger machines get to sleep. Right-sized beats always-on-for-no-reason.
Pick a service. There is usually a deployment decision, a failure mode, and a note to future me behind it.
GitLab CE on TrueNAS, with ZFS-backed configuration, application data, and logs. Personal projects and infrastructure code have a home I operate myself. Port collisions, memory pressure, and upgrade planning come with the territory.
More of the lab work ↗If it’s worth doing once,
it’s worth automating.
AMATEUR EXTRA
I’m an Amateur Extra, callsign W5QJM. I build my own radios and antennas, and I’ve made contacts around the world running barefoot.
No amplifier. Just the station, the antenna, and figuring out how to get a signal where it needs to go.
Same curiosity. Different kind of networking.
Visit my shack at w5qjm.com ↗Mushrooms, forests, unstable magic, and a ball with deployment docs. Different ideas, same instinct: make it work, then stop doing the repeatable bits by hand.
The games have a home. Go have a look.
Mushroom tower defense. A growing game with a real build-and-publish path behind it.
Caps Lock on itch.io ↗Source on GitHub ↗A peaceful idle game about bringing a forest back. Progression, persistence, and a lot of “what if?”
Growing the systems before the forest.An arena roguelite built around spell reactions and increasingly questionable magical decisions.
The laws of magic are suggestions.A ball, closing rings, upgrades, and an unreasonable amount of thought about making numbers go up.
Yes, the ball gets engineering.Versioned releases move through GitHub Actions builds, Windows code signing through Azure, and itch.io publishing through butler. The goal is to make a release a repeatable workflow, not an evening of remembering which files to upload.
An explainer of my game release workflow. Selecting a track does not run a build or publish anything.
Music producer. Synth collector. Guitar player. The urge to make things does not switch off when I close the terminal.
Also on YouTube Music, Apple Music, and other streaming platforms.
My production setup pairs an Akai MPC One with Ableton as my DAW. Hardware under my hands, a session on the screen, and room to build an idea into a track.
AKAI MPC ONE / ABLETON
Same hands. Different kind of build.
Cloud foundations, delivery pipelines, the awkward migration, the missing signal. A few of the problems I’ve spent time working through.
A conceptual model of engineering patterns from my work. No live infrastructure or production data is connected.
Walk a release through the gates. Inject a readiness failure to see why deployment and successful rollout are different milestones.
❯ release plan No candidate deployed. The stable revision is serving.
Read the docs. Build the thing. Then figure out why reality disagrees with the docs.
Write it down. Make it runnable again. Future me has enough problems without guessing what past me did.
Get it working. Understand the rough edges. Come back and make the next version better.
Try help, stack, projects, or principles. ↑ and ↓ recall commands.
Welcome. This terminal explores the portfolio; it does not execute system commands. Type help to get started.
The hardware, the platform, the software, and how I connect them.