Writing
Posts
All the articles I've posted. 136 total.
Sep 12, 2026 · 9 min readcaddy
Hardening Caddy with Coraza WAF and Fail2ban (And Almost Breaking Mastodon)
How I added the OWASP Coraza WAF to Caddy, caught a bot sending 29,000 requests, avoided breaking Fediverse federation, and banned repeat offenders with Fail2ban.
Continue reading →Jul 17, 2026 · 5 min readai
I Refuse to Let the Loop Ship My Code
Armin Ronacher's 'The Coming Loop' describes a future where harnesses decide when code is done. I'm keeping the human at the approval gate, using plannotator.ai to review agent output before it ships.
Continue reading →Jul 13, 2026 · 6 min readpi
Giving pi a Memory: Wiring claude-mem Into the Coding Agent
How I replaced pi's total-recall extension with claude-mem, backfilled 262 sessions, and made the shared worker self-healing. Real journey, real gotchas.
Continue reading →Jul 12, 2026 · 5 min readastro
When Your Template Ships the Upgrade You Just Wrote
AstroPaper v6.1.0 shipped their own Astro 7 upgrade three days before I shipped mine. Here's how I sync a forked template: take the patches, skip the rewrites, steal the features one at a time.
Continue reading →Jul 11, 2026 · 5 min readastro
Upgrading to Astro 7: A Real-World Migration From a Blog That Already Worked
Notes from upgrading this AstroPaper blog to Astro 7.0.7: Rust pipeline, Vite 8, the markdown-remark shim, and one dep dropped along the way.
Continue reading →Jun 18, 2026 · 6 min readpersonal
Why I Am Leaving Duolingo
The subscription was cancelled last month. Today the app gets uninstalled. Here's why the streak habit stopped being worth my time.
Continue reading →Apr 24, 2026 · 7 min readastro
Upgrading to Astro 6: What Changed and Why It Matters
A practical walkthrough of upgrading an AstroPaper blog from Astro 5 to Astro 6, covering Vite 7, Zod 4, the stable fonts API, and every breaking change I ran into along the way.
Continue reading →Apr 02, 2026 · 6 min readai
Demoware Is Killing Your AI Strategy
AI tools make it easy to build impressive demos. What happens when demoware becomes production code?
Continue reading →