Recent Posts

Nowhere to Put the Current User

6 minute read

Adding authentication meant answering a question the first post in this series had only raised: if the action is a frozen object shared across requests, wher...

Green, and Injectable

6 minute read

I wrote a test for the one thing I had never thought to check, and it failed. Nothing my application rendered had ever been escaped, on any page, while every...

Everything Before the Click

5 minute read

Every tool my agent had until now could be run twice with no consequence. Adding one that puts something in my actual Amazon cart changed what the code aroun...

Sold Separately

4 minute read

I typed t.timestamps into a Hanami migration out of twenty years of habit, and it blew up. Declaring the two columns by hand fixed that and fixed nothing, be...

Fresh Forever

9 minute read

Three bugs in the same twenty lines, each one created by the fix before it. The last was the good one: two behaviours that are correct on their own, and toge...