Switching to the Kitty Terminal Emulator
This weekend I moved from Ghostty + Zellij to Kitty. The main reason I wanted to drop Zellij was the overhead—especially in terms of memory (Ghostty regularly got up to 8GB of RAM, thanks to it). But there were still a few things missing when using Ghostty without Zellij... Customizing …
Why Git's Linear Log Can Lie to You
When your team uses merge commits instead of rebasing, git log can deceive you. That flat, linear list of commits doesn't tell the whole story — and if you're trying to figure out what's actually in a release, you might draw the wrong conclusions. Here's a scenario I ran into recently …
The QuerySet Database Binding Gotcha
When working with Django's multi-database support, there's a subtle issue that can trip you up: QuerySets remember which database they're bound to, and this can lead to unexpected conflicts. The Setup In our codebase (Prancer), we have custom managers that use using(self.db) to bind a QuerySet to a …
Testing Lambda Functions with LocalStack and pytest
When integration-testing code that calls AWS Lambda, you don't always want to hit the real thing. LocalStack gives you a local, containerized version of AWS services — including Lambda — that you can spin up, use, and tear down as part of your test suite. Here's a pattern I've been using: create …