Personal Software
One of the most thought-provoking articles I've read on AI recently was by Oliver Roeder, writing last month in the FT. (Here, but behind a paywall). In it, he talks about his frustration with most text editors and word processors as being unsuitable for his daily job of writing articles for newspapers. "For decades", he writes, "I’ve chiselled through the thick accretion of features encrusting mass-market commercial writing software."
And so, with the help of OpenAI's Codex software, he decided to create his own.
Some extracts:
"Over a single weekend, entirely from scratch and heavily “vibe coded”, I created by some distance the best word processor I have ever used. I’ve named it vibedit. I’m writing in it right now. If there is an actually productive task for generative AI, it is as a creator of bespoke tools like this. Given this new, relative ease of app development, it is easy to imagine the atomisation of software into a mist of customised personal projects, droplets as numerous as users.
Aside from the software product, the experience had other benefits. I felt at liberty from corporate design, and could easily amend my own app as I thought of additions and deletions. And far from removing me from my work, this AI experience forced me to think carefully about how I work, and how to craft a fitting tool."
and
"Given its extensive tailoring, it is possible that vibedit would fit no one in the world except for me.
...
The only furniture in the window is a tiny word counter. There is only one typeface in only one size. More telling is what there is not: a window of templates, a title bar, a toolbar, a ruler, draggable margin setters, an option to insert tables or images, spelling and grammar check, AI 'suggestions'..."
There's more, but you get the idea. He created his own app, tailored for the job he does, and intended to be used only by him in just the way he likes.
I think this is very important.
As we enter an era where software development is much cheaper and easier, the number of people able to create their own bespoke apps will increase rapidly. Either you'll do it, or you'll pay your neighbour's son a modest amount to do it for you. Good and/or important software, to be used by large numbers of people, will still require experienced developers, though they may spend more time guiding the AI than actually typing the code. But software that is good enough for you to use yourself? That's becoming a different story.
Rather than a software company having to create one baroque and bloated product which includes every feature that might appeal to any of its customers, I think we will see a flourishing of smaller programs which leave out everything not needed by their small handful of users. To quote Antoine de Saint-Exupery, "You know you've reached perfection in design, not when there is nothing more to add, but when there is nothing more to take away."
Anyway, I've been doing the same thing as Roeder. You're looking at it.
As mentioned in my last post, I've long wanted to move my blog away from its WordPress roots. To be fair to WordPress, it has served me (and a significant chunk of the world's websites) pretty well, and for a lot longer than most pieces of software. I have had to rescue friends whose WordPress sites had been compromised by malware, but in recent years, as long as you don't install too many random plugins and are diligent about keeping both WordPress and any plugins up-to-date, it works fine.
But it also has a lot of code in it that I don't need, in a programming language I have long-since abandoned, and some of the recent design decisions weren't in a direction I would have taken. I have to adopt them, though, because I must keep updating for security reasons. And yet it is trusted with some of my most important data, and it defines the format in which that data is stored.
And so I settled on Wagtail, a Python-and-Django-based Content Management System (CMS). Unlike WordPress, which started as a blogging tool and then evolved to become a more general publishing system, Wagtail is a more general CMS, not tailored to blogging at all, but it is also a software platform which can be used to define whatever types of content you want to store, if that isn't just simple web pages. If you're creating a site advertising job vacancies, for example, you might create a JobVacancy page type which has form fields for storing metadata like location, salary, company name and description, and a template specifying how such a page should be converted into nice-looking HTML. The bits in that last sentence do require you (or somebody) to write code, so you need to be happy with that, but not very much code, since most of the hard work regarding storing, editing and publishing content under particular URLs is all done for you.
So I created content types for blog posts and comments, which largely mirrored the fields used by WordPress because I wanted minimal trouble importing my existing data. And at about this point I started enlisting Claude Code's help to do the rest of the work, and I have barely written a single line of code since.
I needed a script to import all of my past content -- posts, comments, categories and tags and any uploaded media -- preserving existing URLs, and doing various conversions as it went along, e.g. from the way WordPress stored embedded images or YouTube videos to the native Wagtail style of doing the same thing. I didn't at this point know what the normal Wagtail approach was for this, but Claude did: it had read a lot more of the documentation than I had! This script was very important to get right, but I could test it repeatedly on my development system before running it on the main site. I could also give Claude prompts along the lines of "Browse the old site, pick 250 random links and check that the same URLs resolve correctly on the new site." Once I was happy with it, this script was only going to run once and then be discarded.
Then it was a case of adding the features I wanted.
- I liked the 'Possibly related posts' links at the bottom of each article, so I asked Claude to look at the way the old PHP plugin worked and create something similar for this environment.
- I liked the calendar in the right margin (if you're on a wide screen), allowing you to see when there were posts, and jump to them by date.
- When I publish a new blog entry, I like to post a link on the social media platforms I use, so there's a one-button facility to put it on Mastdon, BlueSky and LinkedIn, editing the associated post text on each beforehand if wanted.
- Spam is a real problem with blog comments, so I needed a way to handle incoming posts effectively, which involved passing them through some rules of my own devising, some that Claude suggested, and finally calling the Akismet API (which, for a modest subscription, had been very effective on the old site). At the end of this pipeline, comments will have been either marked as 'accepted', as 'spam', or as 'pending', in which case I get sent an email with a link to review them.
- Lastly, I needed an RSS feed, both for people who read the posts using an RSS reader and because it's the basis for the email feed for those who subscribe that way.
And that was it. Though at present, on the surface, you should see very little difference as a result, my own unique blogging environment, 'Status-Q: The Platform', has all the facilities I want, none of the facilities I don't want, and I'm confident I can add or remove features in future much more easily than if I had to burrow into the WordPress source code. (Some of the changes are already planned -- watch this space!)
So far, I'm very happy with the results, and looking forward to tinkering more with my 'personal software' platform in future. Now let me click 'Publish' and see what happens...!

