Ribbonfarm Resurrected
As a museum blog with an AI curator that is
I’ve mentioned this project in passing a couple of times in recent posts, and some of you have been following my updates in the chat section, but it’s time for an official launch.
My old WordPress blog, Ribbonfarm, which I retired in 2024, has now been thoroughly reimagined, rearchitected, and rebuilt as an archival, static museum site.
I may as well be the first to make the obvious joke. It’s now a mummy blog.
This project has been occupying about half my vibe-coding time for almost four months now.
Whether you’re only started reading me recently, and are hearing of Ribbonfarm for the first time, or have been reading me for long enough that you think you are already familiar with the old blog and its long shadow, I have lots to show you.
If you’re completely unfamiliar with Ribbonfarm, the opening orientation blurb on the front page should get you oriented and on your way to making sense of it.
For long time readers who are still here with me on Contraptions (or who thought I was dead and got this post forwarded to them): If you just visit the site through a search hit or a bookmarked post, you probably won’t notice anything different besides a cleaned up visual feel, and subtle signs that suggest it’s no longer a standard WordPress blog.
It is not. It is now a bespoke static site, ridiculously over-scaffolded with AI affordances lurking in the margins and menus. It took less than a couple of hundred dollars in tokens to build, and provided me with a lot of fun over several months.
It has already more than paid for itself, since it is essentially free to host in its current form, and I was paying ~$1500/year in hosting fees to host it as a live WPEngine WordPress site (even post-retirement, it remained high-traffic enough it needed high-end hosting to be hassle free). Big debt of gratitude to the WordPress ecosystem for serving me so well for so long though.
The decision to keep the basic surface appearance the same was partly pragmatic (obviously, old link structures had to be preserved) and partly aesthetic. It’s fun to engineer an uncanny experience where the surface feels familiar, but something tells you an alien logic has taken over the innards.
Meet vgr_zirp
Not to bury the lede, the most alien piece of all is the curator of this museum-grade mummy blog, a digital ghost of myself, an archival self called vgr_zirp.
This is a chatbot backed by a fully digested set of source corpora — ribbonfarm itself, my full twitter archives (@vgr), my non ribbonfarm books from the era (Tempo, Be Slightly Evil, Art of Gig), and a complete bibliography of every book or essay ever mentioned on the blog, either by me, guest authors, or commenters.
If you’re interested in the technical details, it’s a RAG agent, backed by several vector embeddings, based on a modified version of the Aaron Mars’ soul document approach to generating personas, exposed as both a limited-turn chatbot and an MCP.
I was initially considering a fine-tuning approach (which would have involved training an agent to talk/write like me), but quickly realized that a RAG agent (which talks more generically, but in more on-point ways, on the basis of explicit content retrieval) would actually behave in a more interesting and useful way. Full details here.
Go ahead, try it out. I’m going to be slowly improving it as I understand the tech better. There are a couple of rate-limiters and circuit-breakers in place since I have to pay for API usage to host the bot and MCP, but it should be usably available most of the time, so long as there aren’t random traffic spikes.
Building this agent was a surprisingly trivial last step after I had done all the pre-work of processing all the content into multiple suitable AI-digested forms. But that digestion work required learning to use (via Claude Code of course), many non-trivial, non-retail AI tools, such as Voyage.ai for generating embeddings, Pinecone for hosting the vectors, the Claude API for tagging, clustering, and lexicon-mining, and so on. Merging and weight-balancing multiple source corpora also took some effort and still isn’t perfect. For a while it was way over-weighting twitter archives because that data is both voluminous and chunked up in ways that semantic search hits it more.
It is more than an anthropomorphic, narcissistic UI though. I’ve myself found it useful to talk to, to access tendencies of thought I’ve personally outgrown, but which haven’t outlived their usefulness.
As the name vgr_zirp suggests, this bot is meant to embody, and own, a ZIRPy outlook on life, the universe, and everything (ZIRP stands for zero interest rate policy, for those who don’t follow macroeconomics memes). It was Drew Austin (a significant early contributor to Ribbonfarm) who inspired this name with what is probably one of the best tweets ever.
I hope my naming convention catches on. If you have enough material from the 2010s to make your own soul-bot, I suggest naming it <your_handle>_zirp. Maybe it can be the horse_ebooks pattern of the early AI era.
For people who don’t like my more recent Act 2 tendencies of thought and style of writing, chatting with vgr_zirp might even be more interesting and valuable than talking to me live. I’ve seen at least a few people complain on X that my new writing sucks. Well, vgr_zirp is the best I can offer you now.
Documenting the Scene
The first 4 years of Ribbonfarm, it was just me blogging alone, and occasionally exchanging emails with readers. Starting in 2011 though, when I went on a cross-country road trip, moving from DC to Vegas, on a sort of budget book trip to promote my book Tempo, I began meeting readers regularly in person, and perhaps more importantly, they began meeting each other. And I started accepting guest posts.
A series of particularly well-attended meetups 2011 coalesced into Refactor Camp, and a couple of “Refactorings” Facebook groups that were, for several years, extremely active, and for many of the members, their main online hangout.
This is what people began to refer to as the “Ribbonfarm scene.” It grew somewhat by accident, and began to wind down after the last Refactor Camp in 2019, largely due to my own sharply declining social energy. I mostly do 1:1 coffee meetups these days.
You can explore the history of the decade-long scene and the blog on the new history page and the Refactor Camp page.
People who were part of the scene, do share any suggestions on how to improve these pages. If you have any interesting material to contribute, like better photos from Refactor Camp, feel free to send them over.
If you were a reader, but never part of the scene, you might enjoy this peek into it. If you’re too young to have been part of the scene, hopefully these pages will give you a sense of what the blogosphere was like back in the day.
X-Raying the Ideas
Looking back, and exploring the archives with the new tools (you can find these under the Explore menu on the home page, and there is also a proper semantic search), I’m struck by the extent to which the scene was both a product of its times, and of way more minds than I thought.
There were 60 contributors over 17 years. And while I was the most active contributor (875 of the 1116 posts), followed by Sarah Perry (45 posts), a great many less frequent contributors, such as Brian Skinner and Artem Litvinovich, had viral hits that disproportionately shaped the perception and influence of the blog.
It wasn’t easy to empirically assess the external impact beyond the scene’s insiders (many signal sources are now dead or too diffuse), 4 of the top 10 posts in the viral hits list are not by me. Right now, this list mainly relies on Hacker News and Reddit statistics, but many influential posts went viral via other pathways that aren’t captured. I’m pretty proud of this statistic. Posts that landed on Slashdot, HN and Reddit now have footer sessions linking to those discussions.
The new tools also allow you to explore the comments more thoroughly for the first time, and I feel some regret about not curating that better when the site was active. There is a lot of fascinating thinking in the comments, which has now been surfaced by an AI-driven quality-scoring algorithm that I think has done a surprisingly good job. The Top Comments page now makes for fascinating browsing.
Belatedly, I have to thank the commenting community (over 5000, contributing over 13k comments) for all the less visible thought and effort they put into making the blog what it was.
It’s already a bit passe to talk about the inside baseball of how you used Claude Code for a project, but for those of you interested in that, I had Claude keep a detailed Dev Log going throughout the project.
It’s not over yet. There are a few more major things I want to do, to turn it into a true mummy blog, future-proofed and preserved for all eternity, complete with a curse for whoever reads it. But it’s pretty close already.
Unlocking Act Two
When I wrote my Archival Selves post a few weeks ago, I didn’t think I’d literally have one up and running by now. As with every other AI project, things move far faster than you expect, by orders of magnitude.
That old meme I used to share as an excuse for procrastinating now needs to be flipped. My problem is now probably that I have to shut down my dev environment in order to get myself out of execution paralysis. AI has completely solved the problem of setting up at least digital dev environments.
One of my more popular posts from Ribbonfarm was The Key to Act Two. Finishing this project and setting up my archival vgr_zirp self feels like more than a project finished to my satisfaction. It feels a bit cathartic.
Externalizing and animating a whole long chapter of my life has created an odd sort of distance from it, and also a sense of increased freedom around things I’m doing now. You could say archiving my Act 1 self has unlocked my Act 2 self, which had been carrying baggage around. That baggage has now become pseudo-sentient and can take care of itself without me having to worry about it. It can even be my friend now, instead of a nagging to-do list.
The whole experience got me thinking about how AI has given us a new way of relating to ourselves, as a sequence of regenerated selves, like Doctor Who. I had a series going on Ribbonfarm called Regenerations, but creating an archival self is a real regeneration at some level, not a metaphoric one. Comparable to older phenomena like social death or being canceled, but positive. I highly recommend it.
I suspect I’m going to be using the vgr_zirp bot and MCP regularly from now on, to consult my archival self about ongoing projects for my current live self. If you end up using them regularly too, drop me a line about how and why.
I’m now tagging this project maintenance mode, but if you have good ideas about how to improve it, or spot serious bugs and issues, let me know.






Thanks for sharing the Dev Log. It may not be of interest to fully committed vibe coders but to the AI curious, it gives us a glimpse into the interplay between man and machine difficult to access despite the hype.
COOL!
will you be posting arguments with vgr_zrip?
also, i need to see if it can identify/surface changes in your thoughts over time.