Self-hosted virtualization & storage
Every service below runs as its own VM or container on a Proxmox VE host. The storage is a mirrored ZFS pool that heals itself, with scheduled snapshots and automated replication.
$ whoami
I'm a DevOps and platform engineer. I set up Kubernetes with GitOps and put security scanning into the pipeline, so a release goes out the same way every time and nobody has to babysit it.
About
I'm a DevOps engineer at Floor & Decor. Before this I was at Citi, where I helped lead the move of shared services and thousands of microservices onto Kubernetes. It's a bank, so everything was regulated. We standardized how software got shipped there, and the move also cut a good chunk of the run cost.
Outside of work I run a small datacenter at home as my own engineering lab. Proxmox and ZFS handle the storage and compute, and anything that needs to run reliably goes on Kubernetes with GitOps. It runs our family photo library, a voice assistant, this website and a few other self-hosted services. Most of the hands-on work in the lab, this site included, is done by Claude Code, an AI coding agent, working from what I ask for through the same merge requests and pipeline as any other change. It's where I get to try things out, because that kind of experimenting moves slowly at a big company.
I'm finishing a B.S. in Cybersecurity & Information Assurance at Western Governors University, and I expect to graduate in November 2026. Before that I got an A.S. in Computer Science from the University of North Georgia.
At home I've got a house full of cats and one very opinionated bunny.
Experience
Day to day I work in Azure, Kubernetes and infrastructure as code.
This was a part-time job. I designed the computer science and programming curricula and taught them to 100+ students.
I worked with clients from the first lead all the way to closing. I advised them, prepared offers and ran targeted listing campaigns.
Projects
Every service below runs as its own VM or container on a Proxmox VE host. The storage is a mirrored ZFS pool that heals itself, with scheduled snapshots and automated replication.
I moved our family photo library off an older PhotoPrism setup and onto Immich. It keeps the family's full-resolution photos and videos at home instead of on someone else's cloud storage. Phones back up automatically, and the web app sits behind a reverse proxy.
It's an Android app that talks to speech-to-text and text-to-speech (Whisper and Kokoro) running locally on a GPU box, with an LLM in the loop for the actual conversation. I kept the always-on parts on hardware I own on purpose. This one was pretty fun to build.
My gaming GPU does double duty. Local language and vision models load when a task needs them and unload as soon as they're done, and then the card is free for games again.
A small local embedding model turns my notes into vectors, so a search matches by meaning instead of by exact words. It holds around 7,500 chunks as 768-dimension vectors and reindexes itself every hour, all on my own hardware. One test asked why an earbuds app refused to work on a phone that wasn't a Samsung. The note that answers it never says "earbuds", and the search still found it. A plain keyword search for "earbuds" came up empty.
Claude Code does the hands-on work on this site. It works on its own branches, opens its own merge requests and merges once the pipeline passes. I decide what gets built and check its work. The AI page covers what it can do on its own, what needs my yes first, and how its work gets checked.
The important data gets encrypted on my side before it goes up to Cloudflare R2. If the hardware dies or something happens to the house, I don't lose everything.
AdGuard Home blocks ads, trackers and smart TV telemetry for every device on the network. When I'm away from home it follows me over a mesh VPN, and it runs DNS-over-HTTPS and DNSSEC.
I run my own Git server with its own container registry and pipeline runners. It's the same setup that builds and ships this site.
This site runs on Kubernetes with GitOps and a full scan, build and deploy pipeline, behind a Cloudflare Tunnel. The platform page has a live panel that shows exactly what's deployed right now.
Home lab
Everything above runs on hardware I own and take care of myself. I set it up the way I'd set up a production system at work, with monitoring on it, and I make a habit of writing down why I made a decision so I can go back and reference it later.
The configuration lives in version control instead of in my head. It's the same infrastructure as code I'd write for a cloud account, just pointed at a homelab.
Local snapshots are the fast way to recover, and the encrypted off-site copies are the slow way. I test both, because I want to know they actually work.
DNS filtering covers the whole network and the CI pipeline has scanning built in. Between services, each one only gets the access it needs to talk to the others. The platform page goes into more detail.
Contact
The best way to reach me is LinkedIn, or you can email me at [email protected].
Connect on LinkedIn