Recent Posts
A chronological view of all content across the site - see how often I write and what’s new.
June 2026
My Growatt guest account kept getting rate-limit-locked by the Home Assistant cloud integration, so I built a local RS485/Modbus feed with an ESP32. Claude did the research, read the manual, wrote the ESPHome YAML, and helped me wire it. Then I forgot which wire color went where.
How I replaced my KCL code-generation layer with a library of hand-written Forgejo reusable workflows: semver-pinned, Renovate-fanned, self-releasing, and guarded by lint.
May 2026
A read-only dashboard for Forgejo Actions runners and the CI queue: a live TUI for humans, stable JSON for agents.
Patrick Debois (Tessl) argues that context, not code, is the raw fuel of AI coding agents, and lays out a Context Development Lifecycle to engineer it with the same discipline we give code.
A growing list of things AI said in my sessions that made me stop and screenshot. Newest at the top.
Running multiple Claude Code agents as a coordinated team via a native /agent-team skill inspired by Viktor Farcic's dot-agent-deck, which I've tried and am watching as it matures
Self-hosted PatchMon plus a small Ansible role for fleet-wide auto-enrollment.
How I built a 3-layer KCL template library to keep ~30 repos' worth of Forgejo workflows DRY, what it taught me, and why Forgejo v15's reusable-workflow expansion is making me retire it.
The journey off MinIO and onto two S3-compatible alternatives sharing a Synology NAS: what broke, what stuck, and which upstream issues I logged along the way.
AI tools, projects, and articles I'm tracking — some tested, some not yet
A nanoclaw-based chat agent that turns two-letter messages into orchestrated actions across the homelab
A Textual TUI that drives the blue/green Kubernetes cutover end-to-end: live dashboard, menu-driven actions, and the realization that I was actually building disaster recovery automation.
April 2026
Multiple branches checked out side-by-side, and why it pairs perfectly with AI coding.
A year running my homelab Kubernetes on Spectro Cloud Palette. Easy to get started with, deep when you need it: next-next-finish cluster profiles for day one, raw pack values and targeted replace() overrides for power users, and the uncanny Claude afternoon that wrote the Terraform
A Forgejo Action for Flux-based GitOps repos that generates DaemonSets to pre-pull container images for labeled HelmReleases, keeping critical images warm on every worker node.
How I built a Kyverno-injected sidecar to back up and restore PVCs to S3 during blue/green cluster reinstalls, and why I eventually replaced it with VolSync.
How a YouTube video made me realize my custom backup tool was a reinvented wheel, and the migration to VolSync that followed.
I built a 2,400-line bash backup tool for Kubernetes before realizing a well-maintained open-source operator already existed. Not a total loss, but a lesson in doing your research first.
A growing log of upstream OSS contributions I made with Claude Code that I could not have made without it
Left for KubeCon Amsterdam 2026, power went out at home, and a cascade of failures left my wife without WiFi, water, or any way to fix it
March 2026
Lessons from attending every European KubeCon since 2023, plus practical tips for first-timers and veterans alike
Making Prometheus AlertManager Slack alerts readable on Apple Watch and iOS: first with the attachment fallback, now with message_text after Slack's 2026 notification rebuild
Controlling Arc Browser from Claude Code using the Chrome DevTools Protocol MCP server
A Rust CLI proxy that filters noisy tool output before it hits the context window, saving 60-90% of wasted tokens
How I migrated 191 scattered permission rules to a single, readable config with guidance messages
From the Kubernetes Resource Model to Crossplane compositions, how I build platform abstractions that let developers self-service without waiting on ops
Using k8s-cleaner to detect unused ConfigMaps, Secrets, PVCs, non-GitOps deployments, and orphaned CNPG resources with Lua-based scan policies
Understanding the three ways to extend AI coding agents: slash commands, MCP servers, and skills
February 2026
Forking Anthropic's Claude Code GitHub Action to work on Forgejo, the adapter pattern, and keeping it synced with upstream
A two-line status bar for Claude Code with per-session colors, session topics, context/quota bars, and Kubernetes context
How replacing Crossplane KCL compositions with custom Go functions slashed CPU usage by 800x and memory by 31x — a lesson learned the hard way
Migrating Crossplane compositions from KCL to custom Go functions for dramatically better resource usage
The kubectl plugin manager that turns your CLI into a Swiss Army knife. Here are the plugins I use daily to manage Kubernetes clusters.
How I use CLAUDE.md files to give Claude Code persistent project context and instructions
A local-first Kubernetes visibility tool that runs on your laptop, supports all your contexts, and doesn't need to live on your cluster
Set up a dedicated Tailscale LXC container as a subnet router and exit node on Proxmox VE
January 2026
Migrating from ArgoCD to Flux — the why, the how, and what I learned
Model Context Protocol — the open standard that lets AI assistants use external tools and data
Why RSS is still the best way to consume content in 2026, and how I use FreshRSS + Fiery Feeds to escape algorithmic feeds
Viktor Farcic's AI-powered Kubernetes operations tool — what it does and how I use it for custom prompts
Using VPA to automatically right-size memory requests based on actual usage
Hard-won lessons from months of AI-assisted development
Blogs, newsletters, and creators worth following
Using Kubernetes PriorityClasses to control pod scheduling and eviction during resource pressure
Individual pieces worth bookmarking
Quick one-liner prompts for AI conversations
Custom AI prompts that encode domain expertise for Kubernetes, CI/CD, and infrastructure tasks
A detailed look at the homelab infrastructure — hardware, software, and services
How I built a zero-maintenance blog using Hugo, Forgejo CI, and GitHub Pages
Why GitOps-synced manifests with automated CI beat OCI package distribution for Crossplane compositions and functions