惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy International News Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
V2EX - 技术
V2EX - 技术
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
O
OpenAI News
Cloudbric
Cloudbric
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Help Net Security
Help Net Security
Cyberwarzone
Cyberwarzone
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
N
News and Events Feed by Topic
T
Tenable Blog
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
P
Proofpoint News Feed
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
L
LangChain Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东

Yuexun J

Native macOS Updates in Tauri Why MCP Matters How to Make Your Tauri Dev Faster My Journey with Vim How the Notion Editor Works The Vim Guide for VS Code Users
Developing an App with My AI Intern
Yuexun Jiang · 2024-07-24 · via Yuexun J

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.

Some small functions written by my AI intern

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.

Adding some app icons to the menu bar

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.