All that is old is new again

All that is old is new again

I started this blog back in 2005, after I wrote my book for SitePoint. I wrote a lot back in those days, still the early days of the Web. I was working for Mitch Kapor at the Open Source Applications Foundation. I stopped posting during my tenure at Yammer, now hilariously named "Viva Engage," as a part of Microsoft.

All the posts on this blog were long gone, originally saved in a Postgres database that I never backed up. (Let that be a lesson to you! Always back up your stuff.) But I have been getting the writing itch again lately, maybe because I am feeling the same kind of acceleration in the tech world as I felt back in those days when Netscape and Microsoft were constantly releasing new revs of their browsers, and breaking all your shit.

I have been using AI to code in some capacity for a couple of years now, mainly relying on Copilot as a very smart autocomplete. My first experience with code completion was in a really awesome text editor I used to use daily called HomeSite, originally by Allaire software, later bought by Macromedia (who created Flash) bought by Adobe. It was your standard issue text editor and developer tool, with a file explorer on the left, and open document on the right. It shipped with Intellisense-style code-completion, mostly trying to close your HTML tags for you. The first thing I always did in every coding environment I used was to turn that shit off, because it got in my way. I type really fast, and did not need to wait entire fractions of a second to get suggestions that were probably wrong. (This is probably why I ended up spending most of my career coding in Vim.)

All that changed once I started using Copilot in Neovim. It was the first code-completion tool I didn't turn off, and more to the point, felt crippled not having it on. It worked great for inline suggestions, it was fast, and stayed out of my way. I didn't feel like I was fighting it most of the time. But the larger blocks of code it suggested were usually dubious: the code looked plausible, but usually contained bugs. Still, awesome tool, game changer.

The end of this past year, I decided to give Cursor and Claude Code a try, since I'd been seeing a lot of chatter online about an inflection point occurring — (no, this was not written by AI; I have actually always used em dashes) to the point of getting messages from some of my friends, asking if I'd tried them out. I had a very large and messy rewrite of a large portion of the Suma codebase that I was kind of dreading, and wondered if that might be a good testbed for these tools.

I was thrilled and kind of amazed (everybody's reaction who isn't in denial) at what Cursor's agent was able to accomplish in a very short amount of time (yep, inflection point incoming), and within days I want from hand-coding everything, to prompting almost everything. Seems like a similar trajector for many programmers, which is causing a massive identity crisis, with people losing their shit daily on Twitter, CEOs of AI companies making pronouncements seemingly daily about the "end of coding," and luminaries like Steve Yegge creating crazy stuff like Gas Town.

I quickly realized this would change not only how software is developed, but the kind of projects that software developers (or non-developers) take on. The bar is extremely low for creating any kind of working app (for some definition of "working," anyhow). Just like my big rewrite/refactor, AI coding tools are extremely good at large, painstaking, tedious tasks. It feels kind of magical, a little bit like the very early days when I was teaching myself the code using Netscape Navigator, version 2. I originally got into coding because it was fun, and I wanted to build stuff. And now there's a whole universe of stuff that it's possible to build, that was either impractical, or soul-crushingly boring to build before. The mind begins racing, thinking of new projects to throw at the agents.

I also downloaded OpenClaw, and have been playing around with it locally. (The first thing I had the agent do was fix its own amnesia. It forgot it was supposed to read its memory file, and then forgot to write it. This kind of silliness will sound familar to anybody playing around with this stuff.) As I mentioned, I'd been feeling the writing itch, so I decided to get the agent to help me resurrect this blog. I sent it prospecting on Archive.org, and after a surprisingly short amount of time, it was able to locate every article I had ever published on the blog, download all 175 of them, convert them into Markdown, and save them on my local filesystem.

It also helped me with the tedious and annoying process of setting up Ghost on an AWS Lightsail instance. (I know I can pay the good people at Ghost to make that problem go away, but I wanted to play around with the code. I'm the kind of guy who used to run Sendmail or Postfix locally, and read my email on the gateway machine using Mutt in the terminal. I ran my own anti-spam using one of the earliest Bayesian libraries.) What would have taken me hour upon painful hour to accomplish, took about an hour, and once I had an API key for the local instance, Klugarsh (my OpenClaw agent) was able to pop all the old blog posts into place in a matter of minutes.

It was not a painless process. I had to remind Klu what he was doing, a lot. I had to tell him over and over that he has own browser that he can use, that he doesn't need to use the OpenClaw plugin in my browser. I had to ignore completely fictitious CLI commands, and tell him to stop nagging me about how I should just do things an easier way, and pay for a Ghost subscription. Models seem to love taking shortcuts. The contrast between the stuff agents are good at (finding and analyzing information), and the stuff they are not yet good at (tool use, remembering stuff) is pretty stark. But once you get the agent working on something they are good at, it's fucking magical to watch.

Anyhow, we're so back baby. My first new old blog post in almost 15 years. I'm so excited to see where all this is going.