About Me

I am a platform engineer who builds infrastructure the way it should be built — reproducibly, from code — and who teaches the next generation to do the same.


Technical expertise

My homelab is not a collection of tutorials followed to completion. It is a working platform that hosts real services, breaks in real ways, and gets fixed properly.

Infrastructure & automation

  • Terraform — VM provisioning on Proxmox, Cloudflare DNS and tunnel configuration, remote state management.
  • Ansible — cluster bootstrap, Kubernetes installation, Helm deployments, secret injection from a single source of truth.
  • Docker — containerised pipeline so the entire build runs identically on my laptop and on the CI runner.

Kubernetes

  • Three-node cluster built with kubeadm — control plane and two workers.
  • Calico CNI with NetworkPolicy enforcement — the database accepts connections only from the specific workloads that need it.
  • MetalLB for bare-metal load balancing, ingress-nginx for HTTP routing.
  • cert-manager issuing Let’s Encrypt certificates over DNS-01, because there is no inbound HTTP path to validate against.

GitOps & delivery

  • Argo CD reconciling the cluster against Git, with automated sync, pruning and self-healing.
  • GitHub Actions on a self-hosted runner, because a cloud runner cannot reach a private LAN.
  • Path-filtered pipelines so infrastructure changes and application changes take different routes.

Observability & operations

  • Prometheus and Grafana via kube-prometheus-stack, with Alertmanager routing genuine alerts to email — tuned down after learning what alert fatigue actually feels like.
  • Encrypted, off-cluster backups with restic — including a restore drill that has actually been performed, not just written down.
  • Zero-trust public access through a Cloudflare Tunnel. No ports are open on my network.

Teaching

I run holiday tech camps for kids. Teaching technical subjects to young people is the fastest way I know to find out whether you actually understand something — children ask the questions adults are too polite to ask.

That same instinct shapes how I document my work. Every significant failure in this platform is written up with the symptom, the diagnostic steps, the wrong turns, and the root cause. Not a summary — the actual reasoning.


How I work

  • Reproducible over clever. If it cannot be rebuilt from code, it is not finished.
  • Backups before features. The first thing I built on this platform was an encrypted off-site backup with a tested restore — before any data existed worth losing.
  • Design for rollback. Reversibility is a property you build in deliberately, not something you hope for during an incident.
  • Document the wrong turns. A clean commit history hides the reasoning. The failed attempt is usually the instructive part.

Find me

GitHub · LinkedIn · YouTube · Dev.to