-
Your Agent Doesn't Need a README
Your AI agent is reading your README right now. It’s on paragraph three of the “Getting Started” section, trying to figure out whether npm run dev or make dev is the current way to start the project. It will get there eventually. That’s the problem.
-
How I Gave Claude Code a Deterministic Toolbox (and Stopped It Guessing How to Run My Project)
If you’ve spent any real time pairing with Claude Code, you’ve seen the dance.
-
Integration Test Isolation in a Next.js App with Drizzle ORM
1. Introduction: The Complexity of Modern Integration Testing The evolution of web application architecture has precipitously increased the complexity of ensuring software quality. In the era of the monolithic, server-rendered application—typified by frameworks such as Ruby on Rails or early ASP.NET—testing strategies were relatively straightforward. The application ran in a single process, connected to a single relational database, and served HTML directly. Integration testing in such an environment was a solved problem: wrap the test in a database transaction, execute the logic, and roll back the transaction at the end of the test. This approach, often referred to as the “transactional rollback” strategy, provided a clean slate for every test case, ensuring isolation and determinism with minimal overhead.
-
Why I Built Another Task Runner
Yes, I know. Another task runner. In 2026. Let me explain why.
-
Offline Encryption Using WebAuthn
I’ve been diving deep into browser-based cryptography lately, and implementing truly secure offline encryption is frustratingly complex. The core problem? Getting consistent key material across sessions without storing anything sensitive.
-
Loading tmux when loading shell
This is something I’ve had mixed success with in the past. I’ve had things that worked but not quite in the way I wanted them to, and other things that just didn’t work! (Try sticking an exec before an error in .zshrc, and you’ve just nerfed your shell startup!)