How I moved my photo library from Google Photos to a self-hosted Immich instance, accessible from my phone anywhere via Tailscale.
How and why I added an optional birthDate field to systemd's userdb, the privacy-respecting architecture behind it, and why I think it's the right approach for Linux distributions facing upcoming age verification laws.
My reaction to Google's new "advanced flow" for sideloading Android apps, and why the extra friction is worth it to protect people from scams and surveillance.
How to work around ECR's lack of pull-through cache support for dhi.io by using regsync to automatically mirror Docker Hardened Images into your own ECR repositories.
How I set up Headlamp, metrics-server, and kube-prometheus-stack to get full observability into my OKE cluster without deploying a single web UI into the cluster itself.
A neat Git trick to configure multiple push URLs on a single remote so you can mirror your repositories with every push.
How I replaced self-signed certificates with automated Let's Encrypt TLS on my Kubernetes cluster using cert-manager, DNS-01 validation through Cloudflare, and External Secrets Operator for secure token management.
A quick tip to configure Git to automatically use SSH instead of HTTPS for GitHub and GitLab repositories.
How I used Claude Opus 4.6 via Kiro CLI to build GemMatch, a fully-featured match-3 puzzle game in Godot 4.x, with zero lines of hand-written code.
How I built a custom RSVP form for our wedding website using Eleventy, Nunjucks macros, Cloudflare Turnstile, and Google Forms as a free serverless backend
