Developing an App with My AI Intern
I got scolded for missing a message. That’s how this started.
Since moving abroad, Messages became my main IM. Problem is, Messages doesn’t have a menu bar icon. I hide my Dock. You see where this is going.
I found Doll, an app that puts notification badges in the menu bar. It worked. But the icon rendering was ugly — just color inversion that looked wrong on different backgrounds.
I could live with it. Or I could build something better.
I chose the latter. We shipped it as Badgeify.
The Intern
Electron felt like bringing a semi-truck to a bicycle race. Tauri was the obvious choice. One problem: Tauri means Rust, and I didn’t know Rust.
Enter Claude 3.5 Sonnet. My AI intern.
I call it an intern deliberately. It’s knowledgeable. It’s fast. It’s occasionally wrong. You don’t trust an intern blindly. You guide them.

The division of labor was simple: I handled the frontend. The intern handled the Rust parts I didn’t understand — macOS Accessibility APIs, SVG-to-PNG conversion, Dock status monitoring.
Most of its code didn’t work on first try. Wrong parameters. Deprecated APIs. I’d point it to GitHub repos, give it hints, let it iterate. Eventually, things ran.
Where AI Falls Short
One task: monitor menu bar background color changes. The intern produced elegant code. Clean abstractions. Proper API usage.
It missed every edge case that mattered.
We scrapped it and went with a completely different approach. My approach. This is the gap that matters — AI writes syntactically correct code. It doesn’t understand what the code is for.
When the intern got stuck in loops, I stepped in. I learned Rust on the fly. Not from tutorials. From fixing the intern’s mistakes.
By the end, I could write most of the Rust myself.
Thanks for teaching me Rust, intern.
Shipping
A few weeks later, the MVP was live on Reddit.
![]()
The image processing logic? Written by the intern, refined by me. It works beautifully now.
I kept the intern busy after launch. Custom icon uploads. Code review suggestions. Some suggestions were decent. Most weren’t. I ignored them.
Will AI Replace Programmers?
No.
If it could, I would’ve shipped this app in a weekend. Instead, it took weeks. The intern couldn’t handle deployment, infrastructure, product decisions. It couldn’t handle the parts that actually matter.
Here’s what I’ve learned: AI is a Swiss Army knife. Lots of tools. None of them are the right tool for every job. Sometimes the best solution is to close the AI chat and think.
The future isn’t AI replacing programmers. It’s programmers with AI interns. Those who can’t outperform the intern will have a problem. Everyone else will be fine.
AI didn’t replace me. It couldn’t.
But it taught me Rust, and for that, I’m grateful.
The best tools don’t do the work for you — they make you better at doing it yourself.