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...!

Goodbye Wordpress...

This blog has been running for just over a quarter of a century now, and for a significant part of that time, it has been powered by Wordpress (which I host on my own servers - I don't use wordpress.com).

I've long wanted to switch it to something else, and over the last two or three weeks I've been building a replacement based on Wagtail, which, for those who don't know, is a content management system written in Python and layered on top of the Django framework. It's a popular replacement for older PHP-based systems like Wordpress and Drupal.

This post is being published on the Wordpress site. All being well, it will be the last one before the switch, and the transition should be mostly invisible. But if you follow these posts using some other system and suddenly find, in a couple of weeks, that this is the last post you've received, please let me know!

Starting a website using Wagtail is not too hard, though it's very likely to involve some coding to get it the way you want it. But converting an existing site, which has a fair number of readers, 25 years of history, 3500 posts, various categories and tags, a custom theme, subscribers who follow it using RSS readers and others who get it in their email inboxes, and so on, is quite a different challenge. I also wanted to replicate the functionality of certain Wordpress plugins which don't exist for Wagtail, to transfer all the uploaded media, posts, comments and categories, and, most importantly, of course, to preserve the original URL structure so that all the historic posts will still be found in the same place!

All of this explains (a) why it's taken me so long to get around to this job, and (b) why I have become a convert to the use of AI for tasks like this. Because after I created the basic structure, almost everything else has been a joint effort between me and Claude Code.

I've been telling it about the components I need, it has been adding them to my framework, and I've been checking the code. There's nothing I couldn't have done myself, though it would almost certainly have taken a lot longer. But for me, the key benefit has been that small things which would be nice to have but tedious to code are now worth doing. Status-Q is now not just my own blog, it is my own software platform tailored to do the things I want it to do, without too much clutter.

I'll be writing more about this concept of 'personal software' soon. If you see any posts in the days and weeks after this one, you'll know it worked!

When DOES it make sense to use AI?

I created my first neural network back in the late 90s, as part of my Ph.D, to do handwriting recognition on images of whiteboards. It wasn't a very good network; I had to write the whole thing from scratch as there weren't any suitable off-the-shelf libraries available, I didn't know much about them, and I didn't have nearly enough training data. I quickly abandoned it for a more hand-tailored system. But one of the early textbooks I was reading at the time had a quote, I think from John S Denker, which I've never forgotten: "Neural networks are the second-best way to do almost anything."

In other words, if you know how to do it properly, for example by evaluating rules, or by rigorous statistical analysis, don't try using a neural network. It will introduce inaccuracies, unpredictability, and make it very much harder either to prove that your system works, or to debug it when anything goes wrong.

The problem is that there are many situations in which we don't know how to do it 'properly', or where writing the necessary rules would take far too much time. And 'machine learning', the more generic term encompassing neural networks and similar trainable systems, has advanced amazingly since I was playing with it. For many tasks, we also now have masses of data available, thanks to the internet. (I was playing with my toy system at about the same time as I was experimenting with these brand new 'web browsers'.) So while it remains the case, as a Professor of Computer Science friend of mine likes to put it, that "Machine learning is statistics done badly", it can still be exceedingly useful. It would almost certainly be the right way for me to do my handwriting-recognition system now, for example, and over the last few decades we've discovered lots of other pattern-matching operations for which it is essential - analysing X-rays for evidence of tumours is just one example where it has saved countless lives.

But all of this is nothing new. So why the current excitement about 'AI'? After all, 'artificial intelligence', like 'expert system', is one of those phrases we heard a lot in the 70s and 80s but had largely abandoned in more recent decades, until it came back with a rush and is now the darling of every marketing department. Every project that involves any kind of machine learning (and many things that don't) will now be reported with 'AI' somewhere in the title of the article, even though it has nothing to do with ChatGPT, Claude, or Gemini.

And the reason is that, by appearing to have an understanding of natural language, generative LLMs have opened up the power of many of these systems to the non-technical general public, in the same way that the web browser in the 90s opened up the power of the Internet, which had also been in existence for decades beforehand, to ordinary users. (Many people ended up thinking the Web was the Internet, just as many people probably think ChatGPT has something to do with newspaper headlines about AIs diagnosing cancer.)

But it's not an analogy I'd like to push too far, because the technology of the World Wide Web did not invent new data, did not mislead people, did not presume to counsel them or tell them that it loved them. The similarity is that you needed to be something of an expert to make use of the Internet before the web, and you were therefore probably better able to judge what you might learn from it. If machine learning is statistics done badly, then 'AI' is machine learning made more unreliable, sounding much more plausible, and sold to the more gullible. Take any charlatan and give him skills in rhetoric, and you make him much more dangerous.

Regular readers will know that I am quite a cynic when it comes to most current uses of AI, and I consider myself fortunate that I was able to spot lots of its failings very early on. A few recent examples from ChatGPT, Gemini and other systems, some of which have been reported here, include:

  • Telling me that one eighth of 360 degrees was 11.25 degrees. (Don't trust it to do your financial planning!)
  • Telling a teenage friend that the distance from Cambridge to Oxford was 180 miles; she swallowed that whole and repeated it to me confidently. (It's actually more like 80 miles.)
  • Telling me that my blog was written by... well, several other people over the years, some of whom were flattering possibilities! (But there are several thousand pages here which all say "Quentin Stafford-Fraser's Blog" at the top.)
  • Suggesting a Greek ferry to a friend, as a good way to get to Santorini in time for our flight. (It didn't actually run on the days suggested, and we would have missed our flight if we had relied on it.)
And of course, the press has regular reports of more serious problems: So, some time ago, I announced Quentin's AI Maxim, which states that
"You should never ask an AI anything to which you don't already know the answer".
And for those who say, "But the AI systems have got a lot better recently!", I would agree. Some of my examples are from a few months ago, and a few months is a long time in AI. But I would also point out that, on Friday, when I asked the latest version of Claude to suggest some interesting places for a long weekend in our campervan, within about 2 hours' drive from Cambridge, one of its suggestions was Durham, which would probably take you twice that if you didn't stop on the way. I pointed this out, and it agreed.
"You're right to question that...I shouldn't have included it. Apologies for the error..."
Now, if I had been asking a human for suggestions, they might have said, "Mmm. What about Durham? How far is that from here?" But the biggest danger with these systems is that they announce facts just as confidently when they are wrong as when they are right, and they will do that whether you are asking about a cake recipe or about treatment for bowel cancer. Fortunately, I already knew the answer when it came to the suitability of Durham for a quick weekend jaunt! But here's the thing... Thirty-four years ago, I was very enthusiastic about two new technologies I had recently discovered. One was the Python programming language. The other was the World Wide Web. In both cases, more experienced research colleagues were dismissive. "It's not a proper compiled language." "We've seen several hypertext systems before, and none of them has really caught on." They were probably about the age that I am now. So, I don't want to be 'that guy' when it comes to AI. (Though I'm glad I *was* when it came to blockchains, cryptocurrencies and NFTs!) All of which brings to mind that wonderful quote from Douglas Adams:
"There's a set of rules that anything that was in the world when you were born is normal and natural. Anything invented between when you were 15 and 35 is new and revolutionary and exciting, and you'll probably get a career in it. Anything invented after you're 35 is against the natural order of things."
So in the last few weeks I have been doing some more extensive experiments with AI systems, mostly using the paid-for version of Claude, and the results have often been very impressive. They can be great brainstorming tools; I have to admit that some of the suggestions as to where we might go in our campervan were good ones... I'm just glad I didn't select the Durham option. They can be great search engines... just don't believe what they tell you without going to the source, or you too may have to call the coastguard. But perhaps I should modify the 2026 version of Quentin's AI Maxim to say something like:
You should never ask an AI anything where you don't have the ability, and the discipline, to check the answer.
And one of the areas where checking the answer can sometimes be an easier and more rigorous process is in the writing of software. I've been doing that a fair bit recently, and will write about that shortly. In the meantime, I leave you with this delightful YouTube short from Steve Mould. His long-form videos are always interesting - he has 3.5M followers for a good reason - and though I tend to avoid 'shorts' in general, this is worth a minute and half of your time.

A little younger and a bit more wise?

There's an old saying that if you're not a communist at the age of 20, you haven't got a heart. And that if you're still a communist at the age of 30, you haven't got a brain.

I was pondering this when I read about the proposals in the UK to lower the voting age to 16. In general, thinking back to my youth, I'm in favour of raising the age requirements for most things, even though it might shift the popular vote in a direction I wouldn't encourage! Student politics, while an entertaining way for the young to let off steam and learn about public speaking, are hardly the basis for running a civilised democracy. No, I thought; most people shouldn't be allowed to vote until after they have a degree certificate (or an equivalent number of years of real-world experience).

And then I remembered there are also proposals to block social media for under-16s. And that gave me pause for thought.

Because maybe 16 year-olds will soon be the only people capable of sane independent decision-making! So perhaps lowering the voting age wouldn't be so bad after all, as long as it didn't come into force until about six years after the social media ban...

A Kindle for the Press?

You know how, if you find a really good restaurant, or holiday location, or B&B, you wonder whether or not to tell the world, because it might be spoiled if too many people knew about it?

Well, I have similar feelings about a service which is available for free to many, perhaps most, UK residents, but which I fear might become prohibitively expensive for the provider if too many people actually took it up. So, ssssh!   Don't tell everyone!  But...

I discovered, almost by accident, that when I re-joined our local town library recently, this gave me not just a card for borrowing books and paying the fines when I return them late, but also a username and password to prove I'm a member.   And one of the things they let me use is PressReader, a site through which you can access a vast number of newspapers and magazines.  For free.

So, for example, if I have the urge to read the New York Times or Le Monde,  The Economist or The GuardianCondé Nast Traveller or Good Housekeeping, The New Yorker or New ScientistPractical Boat Owner or Amateur PhotographerMacworld or What HiFi?, Popular Mechanics or Gardeners' World, Wired or Cosmopolitan... well, you get the idea.  They're all there, with dozens, perhaps hundreds, more, and as far as I can gather, all free, courtesy of my local library! (Update: Other libraries may offer different selections, I gather...)

Anyway, I guess the idea is that if I took a stroll into town, I could read them for free there, but I do wonder, even then, whether it would be as easy to pick up current and back copies of La Cucina Italiana or Toronto Life, should I have the urge, as it is through this service.

Now, of course, it's not as enjoyable reading these on a laptop or desktop computer screen as it would be plucking a paper magazine from your coffee table, but if you have an iPad or similar tablet, you can get a good experience, and there's a PressReader iPad app which makes it pretty smooth.

I have always loved my iPads, and use them much more than my phone.  I think I was one of the first people in the UK to own one, because sixteen years ago I happened to fly into the States on the day it was launched there and had pre-ordered this exciting new device which wouldn't arrive in Europe until a few months later.  Some of my friends dismissed it at the time as just being a device for content consumption rather than creation, but that never bothered me, and I pointed out that I quite liked books too!

So I'm interested to see, looking back, that my post the following morning began as follows: "Apple has created a new kind of device – the coffee-table computer."   Well, perhaps PressReader is the perfect embodiment of that!

Shakespeare on ICE: The strangers' case

Sir Ian McKellen was on the Stephen Colbert show a couple of nights ago, and gave an entertaining interview, but the final section has taken social media by storm, where he recites a speech from the Elizabethan play "Sir Thomas More".

The full interview is below (or available here if your browser or email reader doesn't display it), but the key bit starts at 20:00.

(The clip is also here for posterity.)

A fascinating biofuel thought experiment

Hannah Ritchie has a splendid substack/newsletter called By The Numbers, and last week she published a very interesting thought experiment.

If you took the land that's currently used for growing biofuels, and, while still keeping it devoted to energy production, used the space for solar panels instead, how would they compare?

As she says,

"The numbers were quite staggering. So staggering in fact, that I doubted myself. I ran the calculations many times, convinced I’d accidentally added a zero somewhere. I asked Pablo to also come up with an estimate, without telling him how I got to my numbers. As it turns out, we took slightly different approaches, but landed somewhere similar."

The world uses about 32 million hectares of land for biofuels, which is pretty amazing in itself.  That's about the size of Germany.  And the main use of biofuels is in transport, where they currently meet about 4% of global demands.

But when she ran the numbers, Ritchie discovered that using the land for solar instead would generate about enough electricity to meet the world's needs.  Note - that's not the world's transport needs, it's the world's entire electricity consumption! 

Now, she wasn't proposing that you actually could or should do this simple swap; there are obviously all sorts of extra factors like infrastructure, environment, battery storage, etc.  But it's a very effective illustration of just how inefficient biofuels are as a way of generating energy.  (And it's worth remembering that you can often grow crops or graze animals under solar panels as well.)

Their second idea was to suppose that all of the world's road transport was to be decarbonised; something that skeptics often say could never be done because of the energy requirements.  What would that take?

Well, it would take about one-quarter of the land currently used for biofuels. The space that, at present, provides 1% of global liquid fuel.

Speaking truth to power

There has been a great deal written about Trump's long-winded and childish ramblings at Davos.  Even if you ignore the stuff about Greenland (which he mistakenly called 'Iceland' four times), here are a couple of paragraphs selected almost at random.

"Because of my landslide election victory, the United States avoided the catastrophic energy collapse which befell every European nation that pursued the Green New Scam – perhaps the greatest hoax in history. The Green New Scam: windmills all over the place, destroy your land. Destroy your land. Every time that goes around, you lose $1,000. You're supposed to make money with energy, not lose money."

and

"China makes almost all of the windmills, and yet, I haven't been able to find any wind farms in China. Did you ever think of that? That's a good way of looking at it. They're smart. China's very smart. They make them. They sell them for a fortune. They sell them to the stupid people that buy them, but they don't use them themselves.

They put up a couple of big wind farms. But they don't use them. They just put them up to show people what they could look like."

Just FYI, China has the largest wind-power generation of any country, more than twice that of the US, and gets rather more of its power from wind than the US does from coal.

If, on the other hand, you'd like to read the speech of somebody who has a brain, take a look at what Mark Carney, the Prime Minister of Canada, said at the same event.

If I lived in the USA, those two links on their own would be enough to make me emigrate northwards.

Living without America... continued

There was a lovely story back in 2022 about how Russian troops stole $5M-worth of tractors, combine harvesters and other agricultural machinery from a John Deere dealership in Ukraine. They took them over the border, presumably thinking it was an excellent day's work. But... farm vehicles are not as primitive as they used to be: the theft was tracked remotely using their built-in GPS, and when the thieves tried to start up these machines, after transporting them 700 miles, they found they couldn't. The manufacturer had disabled them remotely using an in-built kill-switch.

Though there were many appealing aspects to this tale of thwarted Russian criminal invaders, others, including Cory Doctorow, cautioned at the time that any such systems are generally very bad news.  "It’s important not to get swept up in the industry’s self-serving cheerleading about these kill-switches working in ways we like, because of all the ways they can go wrong."  And he cites the example of similar kill-switches in Medtronic's medical equipment.

I was thinking about this as I got into my Tesla after writing last week's article about European dependence on American IT systems.  I've written before about the embarrassment now of owning an (otherwise excellent) Tesla, so it's also sobering to think that, of all the kill-switches in all the vehicles in all the world, I had to have Elon Musk's finger on mine!

As an aside, when I told my wife last week that China's BYD had overtaken Tesla as the world's largest EV manufacturer, and that their cars were rather good, she said, "Oh great!  Now we'll have to choose between a fascist car and a communist car!"  So, I thought, perhaps our next one will one of those fine European vehicles from Volvo or Polestar.  Or the cute newelectric  Renault 5.  And then I remembered that their software comes from... Google.  And into my mind flashed that picture of Sundar Pichai standing between Bezos and Musk at Trump's inauguration...

I had some interesting responses to my post.  Rory Cellan-Jones wrote about it in his newsletter.  Extract:

"It would not take more than a few hours for us to realise how totally dependent we are - at home and at work - on American technology. Tens of thousands of my photos and videos would be trapped in the iCloud, my email account, provided by Google, would become inaccessible, even this Substack would sputter to a halt - Google’s AI Overview (something else I wouldn’t be able to access) tells me most of Substack’s servers are located in the United States.

This set me thinking about the digital revolution finally happening in UK healthcare and how reliant on American technology it is...."

Yes, the NHS would be one of the first casualties.  I'm less concerned about Cory's kill-switches in individual medical devices than I am about every other aspect of its IT infrastructure.

Juho Vepsäläinen pointed me at this European Parliament Draft Report indicating that they have been starting to take ‘technological sovereignty’ seriously. It notes that "92% of the West’s data are stored in the USA [and] 69% of Europe’s cloud market share is held by US companies".

These discussions have been going on for a little while; a search for 'EuroStack', for example, will turn up various events at the European parliament in the last few months with titles like "Building Europe’s Tech Resilience".

But, as John Naughton points out after linking to Rory's post and mine in in his Observer column:

"...as we acknowledge how comprehensively we’ve embedded US tech into our critical infrastructure, it’s clear that we should have been paying more attention to the implications of where we were headed."

There is, however, evidence that the big cloud infrastructure providers are very aware of these concerns and the effect it might have on their revenues.  Just today, Amazon announced the 'AWS European Sovereign Cloud', which you can read about at https://www.aws.eu (Yes, note the URL).

"An independent cloud for Europe

The AWS European Sovereign Cloud is a new, independent cloud for Europe entirely located within the European Union (EU), designed to help customers meet their evolving sovereignty requirements.

Built in Europe for Europe, it is the only fully-featured, independently operated sovereign cloud backed by strong technical controls, sovereign assurances, and legal protections."

And if you read the rest of the website, it sounds like a pretty thorough attempt to provide isolation.   "Excellent!", I thought, "I can see whether my clients would be interested in taking advantage of this."

I read on:

"The first AWS Region of the AWS European Sovereign Cloud is located in the State of Brandenburg, Germany. We have also announced plans to extend the AWS European Sovereign Cloud footprint from Germany across the EU to support stringent isolation, in-country data residency, and low latency requirements. This will start with new AWS Local Zones located in Belgium, the Netherlands, and Portugal."

Sounds good!  I wonder if Microsoft and Google will follow suit?

And it was then that I remembered.  

The UK isn't in the EU any more.  And, in fact, our GDPR regulations say that we shouldn't really store our data there, any more than we should store it in the US.  This probably won't buy us anything.  Everyone else may get independence from America, but what about us?

Sigh.  Don't you just love Brexit?  You know, that thing that people voted for because it would give us back our sovereignty?