Developing an App with My AI Intern
The story starts one afternoon when I got scolded for missing a message. Since moving abroad, I’ve been using Messages as my main IM, but unfortunately, Messages doesn’t provide a menu bar icon. For someone like me who usually hides the Dock, I have to constantly open Messages to check for new messages, otherwise I’ll miss them if I miss the notification.
After some searching, I found an app called Doll. It basically adds app icons to the menu bar and uses the Accessibility API to get message counts from the Dock and display them in the menu bar - pretty simple implementation. After using it for a while, I noticed that under different menu bar background colors, Doll just inverts the icon colors, which doesn’t look great. That’s when I got the idea to build something similar myself.
(We eventually built and shipped the app: Badgeify)
Tech Stack
Considering my tech stack and the fact that this app didn’t need to be cross-platform, my options were either Electron or Tauri. For such a small app, Electron was obviously overkill, so I went with Tauri. But developing with Tauri requires some Rust, which I’m not familiar with. Perfect timing with the AI boom - I decided to get Claude 3.5 Sonnet to help with development.
My basic approach was treating it like a knowledgeable but occasionally error-prone intern. That’s how I started building this little app with my AI intern.
Why Go with an AI Intern?
- AI learns new languages and frameworks fast, perfect when I’m not familiar with Rust
- AI can quickly handle tons of repetitive coding work with solid efficiency
- AI can complete small tasks I assign, and while it might mess up in the process, it eventually gets things right with my guidance
The key thing about using AI as a programming assistant is you need to jump in and guide it where you want it to go. That’s why I only treat it as an AI intern - its solutions might be right or wrong, and I won’t trust it blindly.
How We Split the Work
I’ve got years of frontend experience, so the UI part doesn’t need the AI intern’s help - I can handle it myself. In this small app, I mainly had it help me implement small functions that call macOS APIs, like converting SVGs to small PNGs for the menu bar, getting Dock status and app message counts through the Accessibility API, and other tasks I’m not familiar with but it can handle.
After it writes the code, I’ll drop it into the project and run it. Most of the time the code throws errors - probably wrong parameters or outdated APIs. That’s when I give it some hints, dig up related resources or code snippets on GitHub, and let it gradually fix things until it works.
One time I asked the AI to help implement code for monitoring menu bar background color changes. It came up with what looked like a clever solution using some macOS APIs, and the code was pretty clean. But it completely missed all the edge cases we needed to handle. Eventually, with my guidance, we went with a totally different approach. This made me realize that while AI-generated code is syntactically correct, it often lacks deep understanding of real business requirements - and that’s where humans can’t be replaced by AI just yet.
When it kept messing up and getting stuck in loops, that’s when I had to step in. Even though I wasn’t familiar with Rust, I’d learn about specific problems as they came up and help the intern work through them. Through this process, I basically picked up Rust and can write decent code now. Eventually, I could handle most of the Rust logic myself. Thanks to my AI intern for teaching me Rust.
Going Live
A few weeks later, with the AI intern’s help, I got the MVP done. After deploying some necessary services, I launched it on Reddit. This little app includes SVG icons for some apps and enables the macOS template image feature so icons adapt to different background colors. The image processing logic was written by the intern, and after some tweaks, it’s running great - pretty happy with it.
After launch, I immediately assigned new tasks to the AI intern and knocked out a few feature iterations together: added custom SVG menu bar icon upload functionality, so I could put all sorts of weird icons in the menu bar. Then I had it read my code and give modification suggestions. Sometimes the suggestions were decent, but most of the time they felt mediocre, so I didn’t adopt them.
This project not only solved the original problem but also gave me deeper insights into AI’s role in software development. It got me thinking about AI’s potential across the broader software development field.
Can AI Replace Programmers?
I’m pretty optimistic about claims that AI will replace programmers, because it really can’t replace me. Otherwise, I should’ve been able to rely on it completely and whip up this app quickly. But nope, I still spent several weeks on it. Over a week just on core functionality, and the rest dealing with other services and the website - stuff AI couldn’t help with.
After working with my AI intern for a while, I started thinking about AI’s broader applications in software development. While it performs well in some areas, its limitations are obvious and it can’t operate without my assistance. This makes me both excited and cautious about AI’s future in programming. As AI develops, we’ll still need tons of programmers doing coding work, but they’ll all have an AI intern assistant to boost efficiency. Those who aren’t as capable as the AI intern might get eliminated.
I’m increasingly convinced that AI isn’t a silver bullet, but a powerful tool. Like a Swiss Army knife - lots of functions, but you need to know which tool to use when. Sometimes the best solution might be not using AI at all.
Final Thoughts
I think as technology advances, AI will play roles in more fields, but completely replacing programmers is unlikely. More likely we’ll see new “human-machine collaboration” models where AI handles repetitive tasks and basic coding work, while programmers focus on high-level design, architecture, and innovation.
This is the story of developing an app with an AI intern. Hope my experience can give other developers who want to try AI-assisted development some inspiration.