What a week!
Nearly all of Sourcegraph met up in Amsterdam for one of our bi-yearly Merge meetups. To summarize, even though the whole week’s a blur: a lot of very good and interesting conversation about AI and the future of programming & software, a lot of hacking, late-night pizza, a lot of Amp. It felt productive, it felt yes-glad-we’re-here-in-person, and I had a five minute bit in the keynote in which I managed to land a joke that made someone laugh-then-shake-head-then-laugh-some-more. I even got to stand on stage and said to a sales team: “always be closing”. (As a joke, of course!)
I also wrote and published this: How to Build an Agent.
And the reactions to it were the biggest surprise of the week. I mean, I knew it was good, I knew I had to get it out there, but writing on the Internet always has a bit of a coin-toss thing to it. Some things you know are good will get ignored, other things you shoot from the hip will get shared all around the world.
This one though? Nearly 1M views, thousands of likes, double-digit thousand bookmarks, and people wrote: “best read of the year”, “stop what you’re doing and read this”, “you need to see this”, “mind-blowing”. I’ve written things that were well-received before, but this is new. It makes me happy to see how many people get joy out of it.
This here — Michael's Hot Dog Stand: A Business Adventure — is one of those very special links that you click, think “Huh”, and then just can’t help yourself and have to read the whole thing. I also want to add something here that sounds very obvious and maybe even is, but it certainly wasn’t for me: people spend a lot of time working in businesses and judging decisions made in that business without having a mental model of how that business works, but it’s very beneficial for you to have that mental model because it allows you to make your work more valuable to the business.
Harper on An LLM Codegen Hero's Journey: "Writing skills have become critical. While we’ve always valued strong communicators on tech teams for documentation and collaboration, it’s doubly important now." One hundred thousand percent correct, I’d say. This week I gave a little talk on how to write better prompts when using Amp and I had a slide in there that said: what makes a good prompt are the same things that make a good ticket and good bug report.
As I already wrote elsewhere: I hope that this guide by Anthropic on how to better use Claude Code will help convince more engineers that, yes, you need to learn how to use these tools. It’s very hard for me to grasp that people who spend months learning a new keyboard layout, or tweaking and memorizing their shortcuts, or using Vim in hard mode to train themselves to not use arrow keys think that you don’t need to put any effort into AI tooling and can just write “fix this” and expect it to work and, if it doesn’t, blame the tooling. Sure, yes, the hype on the side of the AI builders is to blame here too, but, come on, I thought we don’t believe the hype?
In the context of my blog post on how to write an agent, Patrick mentioned a book called Computer Lib/Dream Machine, which I’ve never heard of but whose Wikipedia page sucked me in. I mean, come on: “His rallying cry ‘Down with Cybercrud’ is against the centralization of computers such as that performed by IBM at the time, as well as against what he sees as the intentional untruths that ‘computer people’ tell to non-computer people to keep them from understanding computers.”
A lot of gold in this GPT-4.1 Prompting Guide.
Very good: What the Hell Is a Target Triple? Leave a comment to say how this line made you feel: “But regardless, this is where target triples come from, and why they look the way they look: they began as prefixes for the names of binaries in autoconf scripts.”
Don’t want to touch the whole plain-text-vs.-html-in-emails debate, but I got sent this website by one of our (fantastic) designers this week and, hey, (1) it’s a very good name for a website, (2) it’s a very good URL, (3) it’s a one-job-one-website website, (4) some of those emails do look very good. Here it is: reallygoodemails.com
Josh W. Comeau on The Post-Developer Era. This line stood out, because I think it’s the one that nearly every discussion around AI hinges on: “AI works much better as a developer enhancer than as a developer replacement […]” That’s exactly how we see things. In fact, what I said multiple times this week: think of AI as a mechanical arm — you still need to know how to hit the ball, but once you do, it’ll go a lot further. I also think the whole “AI agent fixes my tickets” idea isn’t as cool as “AI turned me into an octopus that now has eight mechanical arms with which to code faster.”
Def Comedy Jam, a 90s HBO comedy show, was infamous for having an audience that would ruthlessly heckle and boo the comedians if they didn’t immediately kill. In 1992, right before Bernie Mac delivered a now legendary 5min set, the audience booed a comedian off the stage. Bernie Mac, though, decided to have none of that and — legend has it — decided right there to open by saying: "I ain't scared of you motherfuckers." The audience immediately reacts and you can see how they realize that this guy will, in fact, have none of it. Mac then goes on to repeat the line within his set, adding the even better “You don’t understand.” Every time I watch this bit I’m awed by his confidence. It’s one thing to watch this, it’s another thing to say you’ll do it, but it’s a completely, undeniably, could-be-from-another-planet different thing altogether to go out there on stage and actually do it. I think of it every time I talk on a stage. Go watch it.
How To Build An Agent is a wonderful post! Implementing each new step did indeed provoke "oh shit" and "holy shit" at exactly the right moments. I've had Avante with Claude in Neovim for a while now, and the confidence with which the AI agent can take the steering wheel has been quite stunning. I hadn't realised how accessible the API's tooling layer is. Can't wait to explore further – thanks for writing this
Hey, "How To Build An Agent" is a great post and I followed it while doing it in Ruby and with OpenAI instead ( Check it out if you like https://github.com/kfischer-okarin/the-lab/compare/84d63f1...90749aa )
One little concern I had (admittedly after I had already finished and played around with it) is that neither read_file nor edit_file seem to make any limitations on the paths you can pass to it - of course if you don't give dangerous instructions probably nothing bad will happen - but since the demonstrated version also just runs the tools without confirmation it could technically do something bad to your current user's files before you can react - just wanted to mention it....
Though I guess that among 1 million views and lots of reactions probably someone already mentioned that to you!