Uses
The stack I reach for to build and run things. Want the hardware behind it? That lives on the lab page →
Platform and infrastructure
- GitLab
Self-hosted on its own VM. It is the GitOps source, container registry, CI control plane, and durable operating record. Runner capacity spans Linux on x86-64 and ARM64, macOS, and Windows. The macOS and Windows runners stay powered down until a job needs them.
- Proxmox VE
Five-node cluster with Ceph underneath. The metal the whole lab runs on.
- Ceph
Storage for the cluster, on the order of 230 TiB raw. It taught me the most, mostly the hard way.
- Kubernetes on Talos Linux
The workload layer. Immutable nodes, API-driven, no SSH.
- ArgoCD
GitOps. A push to the repo is the deploy. Rollback is a git revert.
- OpenTofu
Provisions the Proxmox VMs and LXCs below the cluster.
- Ansible
Configures the platform underneath the cluster.
- Docker
Local builds and testing, on the workstation and the dev box both.
Networking and edge
- OPNsense
HA firewall pair with CARP failover. Routes the whole lab, and the one platform I have code merged into. Twice, six years apart.
- Cilium
The cluster CNI, doing L2/BGP so services get real routable IPs.
- Traefik
Ingress and TLS for everything the cluster serves.
- ·Technitium DNS
Internal resolvers. dnsweaver keeps their records honest.
- Cloudflare
DNS and edge in front of the public sites.
Data and observability
- PostgreSQL (Patroni)
HA Postgres on dedicated VMs, kept off the cluster on purpose so it stays rebuildable from git.
- MariaDB and Valkey
The other stateful backends the apps lean on.
- Prometheus and Grafana
Metrics and dashboards. If it runs, it emits.
- ·Infisical
Runtime secrets, kept out of git.
Languages and tooling
- Bash
The glue and the scripts that run the lab, and my preference anywhere it will run. PowerShell when I have no choice, with the reference docs open.
- ·GitHub Actions
Public-repository CI for linting, tests, CodeQL, documentation, and container health.
- Renovate
Keeps dependencies and container images current through reviewable pull requests.
- Linux
Everywhere. WSL on the workstation, Talos on the cluster.
How I work
- ·AI-assisted engineering
I set the architecture, standards, and acceptance criteria, then direct agents to implement. Scheduled work starts report-only; I promote it only after its output has been verified.
- ·Trunk-based GitOps
Small changes, reviewed, reconciled from git.
- ·Runbooks and ADRs
If it's important, it's written down. Decisions get recorded.