Tag: AI

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!

Marketoons

I wrote a post back in July called 'The AI Heat Pump', about how AI systems can expand small amounts of text into larger amounts and condense larger amounts back into small amounts again, simply burning energy and introducing the odd inaccuracy as they go.

So my thanks to John Naughton for introducing me to Tom Fishburne's site 'Marketoonist' via this cartoon:

AI Written, AI Read cartoon

A couple of years later, everyone's talking about 'agentic systems', and he has a nice update on this theme:

Marketing AI Agents cartoon

It's a great site, especially if you've been involved in technology, or marketing, or both.  Take a look at more of the cartoons here.  

And they're not just pictures, BTW, there are posts behind them, if you click through.

How To Shop Online cartoon

The success of Django... and when the machines take over.

The Django web framework is now 20 years old. Within a few months of its launch, I discovered it, liked it, and we rather daringly decided to bet on it as the basis for the software of my new startup. (Here's my post from almost exactly 20 years ago, explaining the decision.)

For those not familiar with them, web frameworks like this give you a whole lot of functionality that you need when you want to use your favourite programming language to build web sites and web services. They help you receive HTTP requests, decide what to do based on the URLs, look things up in databases, produce web pages from templates, return the resulting pages in a timely fashion, and a whole lot more besides. You still have to write the code, but you get a lot of lego bricks of the right shape to make it very much easier, and there are a lot of documented conventions about how to go about it so you don't have to learn, the hard way, the lessons that lots of others had to learn in the past!

Anyway, I had made a similar lucky bet in 1991 when the first version of the Python programming language was released, and I loved it, and was using it just a few weeks later (and have been ever since).

Django was a web framework based on Python, and it has gone on to be a huge success partly because it used Python; partly because of the great design and documentation build by its original founders; partly because of the early support it received from their employer, the Kansas newspaper Lawrence Journal-World, who had the foresight to release it as Open Source; and partly because of the non-profit Django Software Foundation which was later created to look after it.

Over the last two decades Django has gone on to power vast numbers of websites around the world, including some big names like Instagram. And I still enjoy using it after all that time, and have often earned my living from doing so, so my thanks go out to all who have contributed to making it the success story that it is!

Anyway, on a podcast this week of a 20th-birthday panel discussion with Django's creators, there was an amusing and poignant story from Adrian Holovaty, which explains the second part of the title of this post.

Adrian now runs a company called Soundslice (which also looks rather cool, BTW). And Soundslice recently had a problem: ChatGPT was asserting that their product had a feature which it didn't in fact have. (No surprises there!) They were getting lots of users signing up and then being disappointed. Adrian says:

"And it was happening, like, dozens of times per day. And so we had this inbound set of users who had a wrong expectation. So we ended up just writing the feature to appease the ChatGPT gods, which I think is the first time, at least to my knowledge, of product decisions being influenced by misinformation from LLMs."

Note this. Remember this day. It was quicker for them to implement the world as reported by ChatGPT than it was to fix the misinformation that ChatGPT was propagating.

Oh yes.

Two households, both alike in dignity

Two long-established names in the world of journalism are approaching the challenges of AI in very different ways.

The New York Times is suing OpenAI, in an expensive landmark case that the world is watching carefully, because it could have very far-reaching ramifications.

The Atlantic, on the other hand, has just done a deal with them.

This isn't a subject I normally follow very closely, but in what I found to be an intriguing interview, Nicholas Thompson, the Atlantic's CEO, explains how and why they made this decision, and explores areas well beyond the simple issues of copyright and accreditation. It's an episode of the Decoder podcast, hosted by The Verge's Nilay Patel, who is an excellent and intelligent interviewer.

Recommended listening if you have a car journey, commute, or dog-walk coming up -- just search for 'Decoder' on your favourite podcast app -- or you can get the audio, and/or a transcript, from the link above.

AI Whitewashing

Yesterday, I asked:

Here's a question, O Internet:

If I buy full-fat milk and dilute it 50/50 with water, do I effectively have semi-skimmed milk, or is there something more sophisticated about the skimming process?

And if I then dilute it again, do I get skimmed milk... for one quarter of the price?

Now, the quick answer, as I understand it, is 'no': milk contains a variety of nutrients, and several of these are water-soluble. So the process of 'skimming' to reduce the fat content doesn't dilute these nutrients in the way that you would by just adding water: you still get them at approximately the same concentration when you buy semi-skimmed or skimmed milk.

But I learned a couple of interesting different things from asking!

The first thing is this wonderful diagram, found and posted in the comments by Spencer:

Thumbnail of 'Milk products' flowchart

(click for full size)

It looks like something explaining the petrochemical industry, but much, much more yummy.

His comment: "I wonder how many of these I can have with my breakfast today?"

And the second thing is that, as well as beginning "Here's a question, O Internet", I could have asked "Here's a question, O Artificial Intelligence".

My friend Keshav did that, submitting my question verbatim to Perplexity, a system I hadn't previously tried. Here's the rather good result (and here as a screenshot in case that live link goes away).

I then went on to ask "Which nutrients in milk are water-soluble?", and it told me, with good citations, with the comment that "maintaining adequate levels of these water-soluble vitamins in breast milk is important for the health and development of the breastfed infant". So I asked a follow-up question: "Is this different in cows' milk?", and again, got a useful, detailed response with references for all the facts.

This stuff really is getting better... at least until the Internet is completely overrun by AI spam and the AIs have to start citing themselves. But for now, I think Perplexity is worth exploring further.

Thanks to Spencer, Keshav and other respondents!

Some suggested reading: AI and dopamine

Andrew Curry's thoughtful newletter 'Just Two Things' arrives in my inbox three times a week (which, I confess, is slightly too often for me always to give it the attention it deserves). The two things he talks about today included some gems, though.

First, he looks at Ted Gioia's article, The State of the Culture, 2024 , which comes with the subtitle 'Or a glimpse into post-entertainment society (it's not pretty)'.

Gioia talks about the old dichotomy between Art and Entertainment:

Many creative people think these are the only options—both for them and their audience. Either they give the audience what it wants (the entertainer's job) or else they put demands on the public (that's where art begins).

but he then describes how a dopamine-driven world is changing that into something more complex and rather more worrying. This is only the beginning:

It's a good and interesting piece, and well worth reading, but if you find it depressing you should also read Curry's comments, which suggest things may not be as bad as they seem.

In the second of his Two Things, Curry talks about an article by Paul Taylor in the London Review of Books. (So, yes, you're reading my comments on Andrew Curry's comments on Paul Taylor's comments on other people's books. This is starting to resemble that fish picture above!)

The Taylor article is also very good, and I won't repeat too much of it here. I will, however, quote a section that Curry also quotes:

We should be genuinely awestruck by what ChatGPT and its competitors are capable of without succumbing to the illusion that this performance means their capacities are similar to ours. Confronted with computers that can produce fluent essays, instead of being astonished at how powerful they are, it's possible that we should be surprised that the generation of language that is meaningful to us turns out to be something that can be accomplished without real comprehension.

I like this, because it echoes Quentin's First Theorem of Artificial Intelligence, which I proposed here about a year ago.

What really worries people about recent developments in AI is not that the machines may become smarter than us.

It's that we may discover we're not really much smarter than the machines.

Again, the LRB article is well worth your time, if you can get through it before being distracted by things which offer you more dopamine.

Checking out the competition

Google has just announced the launch of the Bard chatbot, its competitor to ChatGPT, and I, no doubt like many others, immediately went to compare their performance when asked some of the key questions of our age:

ChatGPT 3.5

The blog "Status-Q" is written by Neil Gaiman, a British author known for his works in the fantasy genre, including novels like "American Gods," "Neverwhere," and "The Sandman" comic book series. Neil Gaiman is also known for his involvement in various creative projects across different media, including writing for television and film. "Status-Q" is his personal blog where he shares thoughts, updates, and various musings. Please note that information may change over time, and it's a good idea to verify the current authorship if there have been any changes since my last knowledge update in January 2022.

Mmm.

OK, well, let's try...

Bard

Quentin Stafford-Fraser is the author of the blog 'Status-Q'. He is a computer scientist, writer, and filmmaker who has been exploring the nature of reality, consciousness, and the meaning of life for many years. His blog is a forum for his thoughts and ideas on a wide range of topics, from the latest scientific discoveries to the deepest philosophical questions.

Bard gets my vote.

Now, having done that important test, I can return to my career as a filmmaker who has been exploring the nature of reality, consciousness, and the meaning of life.

Taking things literally

John Naughton linked to a splendid post by my friend and erstwhile colleague Alan Blackwell, entitled "Oops! We Automated Bullshit."

I won't try to summarise it here, or even discuss the topics he raises, because you should cetainly go and read the article. But I did like the aside where he questions his own use of the word "literally":

Do I mean ""literally""? My friends complain that I take everything literally, but I'm not a kleptomaniac.

Who's a pretty Polly?

As is generally well known now, ChatGPT and similar LLM systems are basically just parrots. If they hear people saying 'Pieces of eight' often enough, they know it's a valid phrase, without knowing anything about the Spanish dollar. They may also know that 'eight' is often used in the same context as 'seven' and 'nine', and so guess that 'Pieces of nine' would be a valid phrase too... but they've never actually heard people say it, so are less likely to use it. A bit like a parrot. Or a human.

And when I say they know nothing about the phrase actually referring to Spanish currencies... that's only true until they read the Wikipedia page about it, and then, if asked, they'll be able to repeat phrases explaining the connection with silver coins. And if they read Treasure Island, they'll also associate the phrase with pirates, without ever having seen a silver Spanish coin. Or a pirate.

A bit like most humans.

The AI parrots can probably also tell you, though they've never been there or seen the mountain, that the coins were predominantly made with silver from Potosi, in Bolivia.

A bit like... well... rather fewer humans. (Who have also never been there or seen the mountain, but unfortunately are also not as well-read and are considerably more forgetful.)

Since so much human learning and output comes from reading, watching and listening to things and then repeating the bits we remember in different contexts, we are all shaken up when we realise that we've built machines that are better than us at reading, watching and listening to things and repeating the bits they remember in different contexts.

And this leads to Quentin's first theorem of Artificial Intelligence:

What really worries people about recent developments in AI is not that the machines may become smarter than us.

It's that we may discover we're not really much smarter than the machines.