Kubernetes homelab
in production
Eight nodes bootstrapped with kubeadm across seven distributions and two
architectures. Flannel CNI, ingress-nginx, cert-manager against an internal
CA, Authentik SSO in front of every internal service, Vault for secrets,
Kyverno admission policy, and Falco for runtime detection.
The interesting part isn't the install — it's the recovery. Power loss means
manual Vault unseal, NFS remount ordering, and stale-IP hostAliases to chase.
I keep a runbook because I've needed it.
kubeadm · Flannel · cert-manager · Vault · Kyverno · Falco
Observability stack
in production
kube-prometheus-stack with Loki for logs and Grafana Alloy collecting from
every node, backed by S3-compatible object storage I run myself.
Alertmanager routes to chat, and the alerts are tuned enough that I read them.
Chased a Grafana memory leak to a duplicated environment variable where
last-entry-wins made the dynamic resourceFieldRef value inert.
The container had been ignoring its own memory limit for weeks.
Prometheus · Loki · Grafana Alloy · MinIO · Alertmanager
Homelab dashboard
in production
A single-pane operations console I wrote from scratch: Python aiohttp backend,
vanilla JavaScript frontend, no framework. Live Prometheus queries, node and
workload tables, SSO event feed, and a browser terminal for kubectl.
The first version took sixty seconds to load because each Prometheus query
was serialized behind flaky cluster DNS. Fixed with parallel queries, a
background cache warmer, and tuned ndots. Two seconds now.
Python · aiohttp · Prometheus API · vanilla JS
Catscript compiler
coursework
A full compiler in Java for a statically typed language: tokenizer,
recursive-descent parser, type checker, and a backend emitting real JVM
bytecode. Test-driven from the first commit.
Java · JVM bytecode · recursive descent
Colonist.io card counter
published
A Chrome extension that tracks hidden state in a browser board game by
reading the public game log and maintaining probability distributions over
each opponent's hand. Published to the Chrome Web Store.
JavaScript · Chrome extension APIs · DOM observation
Offensive security practice
ongoing
Binary exploitation, network security, and cryptography coursework, plus
capture-the-flag work on pwn.college. Buffer overflows, ROP chains, and
format-string bugs — the reasons the hardening on this page's deployment
is not decorative.
x86-64 · GDB · pwntools · Wireshark