A Kalman Filter to Avoid Annoying the Server (or the Guilty Pleasure of Over-Engineering)

I have a menu bar app that needs to know a single number. A percentage from 0 to 100. To fetch it, it pings a server every 30 seconds. Do the math: 30 seconds equals 2 calls per minute, 120 per hour, 960 over an 8-hour workday. Nearly a thousand HTTP requests a day to check a number that sometimes doesn’t change for 20 minutes. That’s not monitoring. That’s harassment. ...

March 12, 2026 · Fernando

The Week When Boring Discipline Beat Magic

I published six articles this week. One about PostgreSQL. Another about AI agents. Another on context management. A tutorial on automation. An analysis of debugging. And an adversarial advice framework for evaluating MVPs. It wasn’t planned. Each article came from a paper, a talk, or a project that I found interesting individually. But looking at them together, there’s a common thread I hadn’t noticed while writing them. All six are saying the same thing. ...

March 11, 2026 · Fernando

I've Declared Email Bankruptcy (Again), but This Time I Have a Plan

In 2004, Lawrence Lessig sent out a mass email to his entire contact list saying, more or less: “Sorry, I deleted all your emails without reading them. If it was important, send it again.” He had spent 80 hours that week trying to empty an inbox cluttered with emails dating back to 2002. He was getting 200 emails per day. Lessig wasn’t disorganized. He was a Law Professor at Stanford. And even so, email defeated him. ...

March 11, 2026 · Fernando

Your AI Coding Agent is a While Loop With Delusions of Grandeur

The first time I used Claude Code to refactor an entire module, it felt almost mystical. I described what I wanted, went to grab a coffee, and when I came back, there was a pull request with 14 files changed, updated tests, and a decent commit message. “This is magic,” I thought. It’s not magic. It’s a while loop. Michael Bolin from OpenAI recently published an article dissecting the internals of Codex CLI. And it turns out that the secret behind AI coding agents isn’t a groundbreaking algorithm or an enigmatic neural network. It’s a loop that calls an LLM, executes tools, and repeats until there’s nothing left to do. ...

March 11, 2026 · Fernando

Your LLM's Cache Charges You Double to Save You Money (And It Makes Sense)

A few weeks ago, I published an article explaining why 99% of what you send to Claude is already cached. KV tensors, VRAM, local SSDs — the full internal machinery. But I left out the part that hurts the most: the bill. Because prompt caching seems like a sweet deal until you look closely at the numbers. And then you realize that you’re paying to save. The cost paradox Let’s crunch the numbers. With Claude Sonnet: ...

March 10, 2026 · Fernando

From /simplify to the Jedi Council: How I Built a Code Review with Kent Beck, Martin Fowler, and Mike Acton

Claude Code includes a slash command called /simplify that automatically reviews your code. I ran it on a hefty diff — about 500 lines across 8 files — and the results were… interesting. It found things I wouldn’t have noticed, but it also wasted my time pointing out stuff that didn’t matter. So, I took it apart and rebuilt it piece by piece. What Does /simplify Do? It’s a skill that comes bundled with Claude Code (you don’t install it). It launches three agents in parallel, each looking at the same diff from a different angle: ...

March 9, 2026 · Fernando

/loop in Claude Code: the cron that lives and dies with your terminal

For months, I’ve been running Claude Code tasks using a homemade cron. A Bash script that starts a headless session, feeds it a prompt, waits for it to finish, and then closes. It works. Barely, but it works. I’ve got it up on GitHub if anyone’s interested. Then on Friday, with version 2.1.71, Anthropic introduced /loop. A native scheduler. Built directly into Claude Code sessions. My first reaction was: “They killed my project.” ...

March 9, 2026 · Fernando

git-cliff: the changelog that writes itself (almost)

107 commits. Impeccable conventional commits from day one. Feat, fix, refactor, chore — everything perfectly labeled. And the CHANGELOG? Empty. Non-existent. A file that “I’ll write tomorrow” for two months straight. If this sounds familiar, you’re not alone. Writing a changelog by hand is an Olympic-level pain in the ass. It’s not that it’s difficult — it’s just tedious, repetitive, and there’s always something more urgent to do. And that’s exactly why git-cliff exists. ...

February 22, 2026 · Fernando

How to estimate your Claude quota when Anthropic cuts off the tap

I’m building Tokamak, a menu bar app for macOS that monitors your Claude Max quota. A couple of weeks ago, Anthropic published this in their Terms of Service: “You may not use OAuth or similar authorization mechanisms to allow third-party applications to access Claude on behalf of users.” And there I was, reading Claude Max quota using browser cookies to call an undocumented endpoint, staring at the screen thinking: “What now?” ...

February 22, 2026 · Fernando

macOS Notarization: the nightclub bouncer Apple put on your app

It’s 2 AM. Your app compiles. You sign it. You package it in a DMG. You run notarytool submit. Apple says “In Progress”. You wait 5 minutes. 10. 20. An hour. Two hours. The submission is still “In Progress”. You go to bed. The next morning: Invalid. With no more explanation than “The signature of the binary is invalid”. For both architectures. Thanks, Apple. Very helpful. Notarization is one of those processes that works perfectly… until it doesn’t. And when it fails, it leaves you with a .dmg that Gatekeeper won’t let open and an error that tells you nothing. After fighting with this for a couple of days with Tokamak (my menu bar app for monitoring Claude quota), I decided to document everything I learned and write a linter so I never have to go through this again. ...

February 22, 2026 · Fernando