Joy & Curiosity #70

Interesting & joyful things from the previous week

Open on Substack · Markdown

Here’s a question I think about every day now: what will happen to code?

A year ago I started to build a little Rust program. The plan: I paste an email in, the program sends the email to an LLM inside a specific prompt, I get back a reply. The usecase: sometimes I get emails from people that ask for a discount on my books. I nearly always say yes, go to LemonSqueezy, create a personalized coupon code (think: HEYANNIE), go back to the email and reply with where and how they can use that coupon code.

So I started to build this. Single file, one API call, a few-shot prompt, works if I hardcode an email in. But then I had to figure out what type of interface I want so I can paste the email in and get the response out and I got lazy and gave up on it. I don’t want to build a chat interface and image upload and whatnot. Once I had Amp, though, I came back to the project: maybe Amp can build all of this for me? But while doing that, I realized that, wait a second, why can’t Amp itself do what the program’s supposed to do? If I paste an email into Amp, it sure can figure out how to talk to LemonSqueezy, no problem. It can also write the two sentences for the reply email. But because I’m lazy I didn’t even do that, I just marked that as a possibility in the back of my head. Only four weeks ago did I go into that codebase again.

This time I told Amp: analyze what this codebase is supposed to do, here’s the documentation for the LemonSqueezy API, figure out how to create coupons and what type of response emails to write, then put everything you figured out into a SKILL.md file. After a minute it spit out that Markdown file and I asked it: can you create a coupon code for Annie who sent me this email? Yes, Amp said, I sure can. And off it went with curl and created a coupon code and gave me two sentences with instructions to send back to Annie.

No code, only Markdown.

Yes, not every codebase can be turned into instructions for an agent, and yes, it’s inefficient and costs money (even more money than the Rust-harness around a few-shot prompt would cost). But, directionally, there are a quite a few things that can be deconstructed into simply an agent with the right instructions and tools, are there not?

And then you throw things like exe.dev and sprites.dev into the mix, where you could run an agent and store some tools and potentially have the agent write some helper code too, and you start to wonder what’ll happen to codebases and code.

Code will always be around and codebases for Serious Programs too, but you have to wonder: how much and which ones?