Posts

Jujutsu destroyed my Git workflow, and I'm not even mad!

I had everything and Jujutsu destroyed it. I had the perfect Git workflow with lazygit perfectly set up, aliases for the most used commands like gst for git status, gp for git push, and gloga for git log --oneline --decorate --graph --all. I used fixup commits and git absorb to automatically create them. I loved the feeling of a successful Git rebase and force push to my feature branch after discovering git rerere. It was all so comfy. Now with Jujutsu, none of that is useful anymore, and I’m not even mad!

Read more →

Gateway API Multi-Tenancy Is Awkward, and We're Migrating Anyway

If you’ve been running multi-tenant Kubernetes clusters with cert-manager and Let’s Encrypt, you’ve probably felt the friction when evaluating Gateway API. I certainly did. What looked like a straightforward migration path turned into a deep dive into API design trade-offs, experimental features, and some hard decisions about timing.

Here’s what we learned and why we’re migrating anyway.

Why This Matters Now

In November 2025, the Kubernetes project announced that ingress-nginx will reach end of life in March 2026. If you’re one of the many teams running ingress-nginx, you’re now on a timeline to migrate to something else.

Read more →

Fast Feedback Beats Late Inspection: The Economics of Developer Testing

Eight years ago, I sat through a project management lecture on systems thinking. It seemed abstract, theoretical, one of those academic frameworks you nod along with but never actually use. Then Will Larson reintroduced me to it through his blog, and suddenly it clicked. Systems thinking isn’t just theory, it’s a useful tool for understanding complex dynamics.

Recently, I encountered one of those debates that every engineering organization eventually faces: do we need a dedicated QA role? Not whether testing matters, everyone agrees it does, but whether we need separate people whose job is to test what developers build. The conversation went exactly where these conversations often go: passionate opinions, competing anecdotes, no clear resolution.

Read more →

Building a Swiss QR Bill Package (So You Don't Have To)

A few months ago, I needed to generate a Swiss QR bill for an invoice. A colleague had mentioned Typst in passing, a modern markup-based typesetting system gaining traction as a LaTeX alternative. What began as a simple invoicing solution evolved into an evening project that revealed Typst’s elegance and taught me much about its capabilities.

The Swiss QR Bill Problem

A colleague mentioned Typst to me as a modern alternative to LaTeX for document generation. I’d already read about Zerodha using Typst to generate 1.5 million daily statements in just 25 minutes, proof that it’s probably mature enough for real production workloads beyond academic papers. When I needed to generate a Swiss QR bill for an invoice, I thought this would be the perfect opportunity to learn it properly.

Read more →