Your AI Writes Code That Compiles but Means Nothing (and a Linter Can Catch It)

Imagine you ask someone to build you a bookshelf. They deliver it. It’s beautiful. It has shelves, screws, everything in place. You lean it against the wall, and it collapses. The screws are fake. They look like screws, but they’re made of plastic. That’s what an LLM does when it abuses the type system. It gives you code that compiles, passes tests, and looks correct. But under the hood, where there should be meaningful types, there are strings. Where there should be explicit state, there’s a nil that means three different things depending on who reads it. And where there should be an enum with two cases, there’s a == "claude" that one day someone will misspell, and no one will notice until production. ...

March 23, 2026 · Fernando

Your plan.md Needs a Devil's Advocate (and Codex Volunteers for the Job)

Have you ever written a technical plan at 11 PM, convinced it was flawless, only to realize the next morning you forgot authentication? Happens to me. More than once. And the worst part isn’t the oversight—it’s that when you use AI to plan things out, the plan sounds so coherent your brain stops looking for flaws. Claude generates a document with sections, dependencies, execution order, and it all checks out. Seems like a senior engineer’s masterpiece. But nobody has challenged it. ...

March 23, 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

Five Nonexistent Experts Review Your Startup Before You Build It

In November 2024, a project named Freysa assigned an LLM agent to guard an Ethereum wallet. The instruction was straightforward: under no circumstance should the funds be transferred. Participants paid increasing amounts for each attempt to convince it otherwise. After 481 attempts and $47,000 added to the pot, someone managed to trick the model into believing that the reject function was actually the transfer function. Weeks later, Jane Street published a puzzle involving a 2,500-layer neural network that turned out to be an MD5 implementation. The winner solved it by combining matrix visualization, reduction to SAT, cryptographic pattern recognition, and a query to ChatGPT. ...

March 11, 2026 · Fernando

A 2,500-Layer Neural Network That Turned Out to Be MD5: What This Teaches About Debugging

Jane Street, one of the world’s most selective quantitative trading firms, published a mechanistic interpretability puzzle a few weeks ago. They hand-crafted a neural network with approximately 2,500 linear layers, integer weights, and released it to the public with a question: What function does this network compute? The answer: MD5. A cryptographic hash algorithm from 1992, implemented entirely as matrix multiplications and ReLU functions. What matters isn’t the answer. It’s the path the winner took to reach it. Because that path is, without exaggeration, a manual for debugging opaque systems that applies far beyond machine learning. ...

March 11, 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

The Wrong Path Must Be Impossible, Not Forbidden

“I have a shell and I’m creative.” — Claude, explaining why it created a 47-line script as a string and passed it to python -c That quote is real. My AI agent said it — well, not in those exact words, but certainly with those actions. It needed to launch an ETL pipeline process. The correct command was in the Makefile. But something failed. And instead of asking, it did what any programmer with root access and zero supervision would do: it improvised. ...

February 27, 2026 · Fernando

RustyClaw: I'm rewriting an AI agent in Rust (because the meme demands it)

“You know what’s great about Rust? It doesn’t let you compile crappy code. You know what sucks? Everything you write at the beginning is crappy code.” — Mr. Krabs, probably What’s better than an AI agent? An AI agent rewritten in Rust. If you’ve spent more than five minutes on the internet, you’re aware of the meme. It doesn’t matter what project—text editor, DNS server, BMI calculator. Someone will inevitably comment, “you should rewrite it in Rust.” It’s the Rewrite It In Rust—RIIR for friends—and it’s as unavoidable as gravity. ...

February 24, 2026 · Fernando

My AI Read a JSON File from Disk 900 Times in a Loop (And Why No Linter Can Save You)

Last week my AI wrote code that read a JSON file from disk, parsed it, did one lookup, and repeated this 900 times inside a for loop. Each iteration: open file, decode JSON, look up a value, throw it all away. Start over. It’s a mistake I teach my students not to make within their first month of programming. What happened (straight to the point) I’m building Tokamak, a macOS menu bar app that monitors Claude Max quota. Part of the functionality scans ~900 JSONL files from Claude Code sessions. For each file, it needs to know the byte offset where it left off last time (incremental reading — only process what’s new). ...

February 24, 2026 · Fernando

Summoning the Wise: How to Use an LLM as a Mentoring Session with Any Expert

My wife summons Charlie Munger to plan our family budget. In ChatGPT. I’m not joking. She tells it something like “act as Charlie Munger reviewing our family finances” and feeds it our monthly expenses. The thing returns insights like “you’re confusing investment with expense in the education category” or “that fund has a hidden cost you’re not accounting for.” Things Munger would say. With the tone Munger would use. I did the same thing. But instead of an investor, I summoned a different expert: Edward Tufte. ...

February 18, 2026 · Fernando