Up to no good

When I'm ruler of the world — something which is, by the way, on my list of retirement projects, but keeps getting usurped by urgent tasks like booking an MOT for my mum's car, so I haven't got around to it yet — one of my first actions will be to ban the phrase 'up to' from all marketing materials.

Last year, I complained here about our bathroom cleaner, which announced that it removes 'up to 100% of bathroom grime and limescale', presumably to avoid disappointment for customers who thought it might remove 120% of either. It might actually only remove 80%, but that's fine, because they said 'up to', and it's still clearly a superior product to any competitor which did the same but only claimed to remove up to 90%.

Then a week or two ago, I was sent something that said, if I remember correctly, "Did you know your toilet could be costing you up to £581?" Well, I did, because it might be leaking through the floor, one drip at a time, into the dining room below and the water could seep from there into the secret trunk full of lost Gainsborough paintings that I have hidden below the floorboards. Oh, but, wait... then, it would be costing me much more than £581. So, no, I didn't know it could only be costing me up to £581. Perhaps I was the target market for this advertisement after all.

So I read a little bit further, where I discovered that what they meant (but hadn't said clearly) was £581 per year, but they made no mention of damaged masterpieces, and were really talking to people about the water bill incurred if their WC had a perpetual leak from the cistern into the bowl... people who presumably had previously assumed that this could only be costing them up to £580 per year!

So what I want to know is who came up with the precise £581 figure, and how they could be confident that the cost could never be, say, £600? I couldn't find the notice just now, and, doing a Google search for similar warnings, I discover pages stating that my loo could be costing me up to £200 per year, or up to as much as £1000. But, of course, it could be costing me 5p per annum, and all of their claims would still be valid.

So do watch out for these dubious phrases, but you only need to be on your guard for the next eight months or so, because by the end of this year I shall be ruler of up to 100% of the entire globe.

Debt

"Credit", I remember reading many decades ago, "is a nice new word for the nasty old situation we used to call Debt".

I've always liked that, and I can't remember its origin. I probably read it about the time that credit cards were first becoming popular, and it's stayed with me ever since!

In the world of IT, there's a thing called 'Technical Debt'. If you spend all of your software development budget creating quick shiny new features, and never maintain, update and improve your existing software architecture, then it will eventually come back to bite you, in much the same way as if you spend all your money on cleaning your car and neglect the basic maintenance of your engine, tyres and brakes. It often takes senior management to recognise this and overrule the demands of the sales and marketing department.

I was particularly impressed, back in 2009, when Apple released the latest version of their operating system and named it 'Snow Leopard'. It was two years after the previous release, 'Leopard', and they marketed it as having "zero new features"... focusing instead on performance and bug fixes: it was just a better version of Leopard. And this was back in the day when your OS upgrades came on a DVD and you had to pay for them (albeit only $29 for this one). If only more companies had the honesty and discipline to do this more often.

Mind you, we can't blame all technical debt on marketing departments. Generally it's more fun for developers, too, to create new code than to tidy up old code. They are more aware of the need for ongoing maintenance, but it can also be a tedious job. One of the most important benefits of AI coding assistants, I believe, is that they can make the tedious tasks less tedious. This gets less attention than the "we can create new stuff really fast" stories, but I've found real value in asking Claude to look at old code and say "I need to upgrade this software to be based on SomePlatform version 8.5 rather than version 5.6. What issues will I need to resolve?" It won't always find everything, but it will almost certainly do a better job than you will when it comes to looking at all the Release Notes of every version of SomePlatform between 5.6 and 8.5 and working out how each change might affect your software.

AI development comes with its own, new kind of debt, though, when you're creating new features: Cognitive Debt. This is where you describe what you want the AI system to build, and it creates it for you, and it all seems to work fine, but no human has actually taken the time to understand what it's doing 'under the hood'. And this requires a new kind of discipline, but now at the time of creation. At Telemarq I would try, though not always successfully, to ensure that the basic operation of any of our systems was understood by at least two people, so there was less disruption when somebody left or moved onto other projects. Now, it has become ridiculously easy for a single, junior developer to create vast amounts of code that not even they understand, and that can just as easily come back to bite you somewhere down the line. Are you really happy to ship software to customers when nobody in your organisation actually knows how it works? That's what today's senior software management people will need to appreciate when setting priorities.

Meanwhile, in my retirement, I have become painfully aware of the quantity of Office-Tidying Debt that I have built up over the years. I really will get down to fixing that soon. Really.

Retournant chez nous

Well, at 1am on Saturday morning, we arrived home from our 'Tour de France' in the campervan. We had planned to travel for a bit longer, but having stayed in 15 different places for our first 17 nights, we were in danger of overload and so decided to turn for home and save some of the other places for a future trip! One of the joys of campervan travel, and especially in France, and even more so in France outside the peak season, is that you don't need to book anywhere in advance, and so can make the trip up as you go along, and change it on a whim. But we had a lovely time and clocked up nearly 2000 miles on the lovely, smooth, quiet French roads.

france_trip_map_2026

Some of our destinations were chosen for literary reasons. We love Neville Shute, and wanted to see Brest, Douarnenez, and the submarine pens at Lorient, mostly because they feature in his books. A fondness for Alexendre Dumas, and the references in The Three Musketeers to the Isle de Ré, and the siege of La Rochelle, added those locations to the list. As a fan of Shakespeare's Henry V, I am still looking forward to a future visit to Agincourt, but we did go once more unto the breach, dear friends, in Harfleur: it's now a roundabout, called La Brèque, at the place where the breach in the old city wall used to be!

We visited harbours and grottos, lighthouses and cathedrals, beaches and Roman villas. We stayed mostly on campsites, but sometimes at an Aire de Camping-Car, which, for the uninitiated, is a parking area where a local authority allows you to stay overnight, often for free. There are huge numbers of these in France, often in small villages, and they encourage visitors to visit local shops and restaurants. We now have warm fuzzy feelings about a little village named Locmaria-Plouzané, in the Finisterre region, of which we would otherwise have been completely ignorant, simply because they kindly let us pass a very peaceful night here, a short walk from the village centre:

Locmaria-Plouzané aire

Very few British authorities are this enlightened, though CAMpRA, the Campaign for Real Aires, is working to get more aire-like facilities in the UK, and we've stayed on a couple of delightful ones.

Some French aires provide a few more services and require modest payment. Some are privately owned: we stayed at a lovely one in the Dordogne that was surrounded by a wire mesh fence with a sliding gate, and the owners asked us to make sure it was closed at night. I was surprised... I looked around at the rolling farmland and thought it didn't look like a high-crime area. No, no, they explained, the gate was to keep any local wild boar out so we weren't disturbed in the night...

We spent one night, for free, in a vineyard, courtesy of the France Passion scheme.

Chateau Coustolle Vignobles

Complete, of course, with a small chateau...

Chateau Coustolle Vignobles

And in Honfleur we stayed in what was basically a large car park... but which was absolutely peaceful at night, provided an electric hook-up, and was 5 minutes' walk from the wonderful old harbour.

Honfleur vieux bassin

For those contemplating the relative comforts of a car park and a hotel room, it must be admitted that our ensuite facilities in the van are somewhat compact. But we also have the benefit of sleeping each night in our own bed, with our own pillows and duvet, and our clothes conveniently in the cupboards without a suitcase in sight.

Our range of activities was a little constrained on this trip by the presence of Betsy, our five-month old puppy. At one point we came back to the van to find she'd realised the view was better from Rose's seat than from the floor. Bother. I fear this means we'll now have to purchase some seat covers...

Betsy on the van seat

Anyway, we're now back, and have tamed the jungle that just three weeks ago was our nicely-mown garden, so I can soon get round to editing my many hours of video footage into a YouTube video, which I do, primarily, to help me relive the trip and remember it for longer!

I feel the need, the need for (just a bit less) speed

Well, yesterday's post got a lot of responses! Thank you, everybody!

Some of them are visible in the comments and some were by email. But most of them were from drivers rather older than me who said that my formula would have them driving at 40 on motorways (or something like that).

Now, notice that I did talk about the maximum speed you like driving rather than the maximum speed you would consider driving, but clearly I have more high-velocity octogenarians amongst my readership than I had previously realised, for which I feel duly honoured.

Ian Clark suggested an amendment which was essentially

Vmax = 103 - (age * 2 / 3)

which would still suit me and give older readers a few more mph to play with, but I think I'll need an exponential component to get anything reasonable, perhaps something more like:

Vmax = 100 - 0.6 *age0.95

Anyway, there was agreement from several readers that the desire to break the speed limit certainly decreases with age, and Andy Davy observed that toddling along at 50mph is often fine as long as you have an interesting podcast playing; an assertion I can definitely support. In my case, though, it's often an audiobook: we're currently touring France to the accompaniment of The Count of Monte Cristo. (I'm now contemplating my next theorem about the duration of any journey being inversely proportional to the quality of your listening material...)

All this reminds me of, in my younger days, getting stuck in completely stationary traffic on the M25 while heading for an airport to catch a flight. The minutes ticked by, my anxiety rose, and then I realised that the pumping drumbeat of my music probably wasn't helping. I replaced it with some nice Brahms cello sonatas, and, all of a sudden, my equanimity was restored, my blood pressure declined, and I gazed calmly at the surrounding vehicles (about which I could, in any case, do nothing). And yes, I arrived in plenty of time.

I feel the need, the need for (less) speed

When we started towing a boat behind our car, and were consequently limited to 60mph rather than 70mph on major roads in the UK, I found I rather liked travelling that way. Yes, it took a bit longer, but it was more relaxing.

And I've noticed that, whether due to a growth in wisdom or to a decline in testosterone -- I prefer to think it's the former -- I now tend to drive rather more slowly than I did a decade or two ago. Rose suggests I may just be subconsciously aware of slower reaction times...

But this has led me to propose Quentin's Law of Optimal Velocity, which is the maximum speed in miles per hour at which you like to drive, and is given by:

Vmax = 120 - age

but I freely admit that this is based on a rather small sample size (errm... one, to be precise) so would be grateful for more data.

Does it correspond to your own experience?

We'll rant and we'll roar

Kermorvan Lighthouse

This morning, we visited Kermorvan Lighthouse, just across the river from the delightful Le Conquet.

This is the most westerly point of mainland France, on a delightful headland, and definitely worth a visit, especially if you're lucky enough to get the kind of weather we had today.

By the way, from here to the Scilly Isles is a little over 100 miles. How do I know this without looking it up?

Well, slightly off to the right (not visible in this photo) we could just see another lighthouse on the horizon: on the island of Ushant, about 15 miles offshore.

And as all good sailors know, when you've had to say farewell and adieu to those fair Spanish ladies, adieu and farewell to those ladies of Spain, because you're under orders for to sail to old England, then you'll come past this point on the way.

You'll probably rant and you'll roar, like true British sailors, and you'll rant and you'll roar all on the salt seas, 'til at last you strike soundings in the channel of old England (and Ushant to Scilly is thirty-five leagues).

A retiring sort of chap...

Well, here's an announcement...

The day before yesterday, I retired.

Not a particularly exciting announcement for my readers, but, as you can imagine, a fairly significant one for me! Though it's a rather black-and-white statement for something which in fact involves rather more shades of grey. I decided that a binary transition from not-retired to retired was perhaps not entirely healthy, and so nearly two years ago, I informed my consultancy clients that I'd like to retire about now, and I've been gradually reducing my workload since then, until I was down to just one or two days per week.

I definitely recommend this approach, if you can do it. For one thing, it gave me confidence that I wasn't going to have any trouble filling my time when I was no longer working. And secondly, during that period, we've been living pretty much on the budget we expect to have in retirement, and have found it quite doable. Both of these make the transition much less scary than it might otherwise be!

If you had told me, in my youth, that I might retire before I even hit 60, I would have been surprised. I have always enjoyed my work, and been blessed with some great jobs and splendid colleagues, so I had no particular desire to leave that world behind. I've also spent most of my 'career' in start-ups or in junior part-time academic posts, which has made for a more modest income than that enjoyed by many of my friends, and correspondingly smaller pension contributions, never quite benefitting either from big corporate schemes or the (also often rather generous) ones enjoyed by many full-time long-term academics. So I assumed early retirement would be unaffordable for me.

But when it became apparent a few years back, to my surprise, that it was a real possibility, without either excessive luxury or frugality, I started to think about the trade-offs between time and money. I have always had many more hobbies than I have time to spend on them, and much as I've always enjoyed my work, I enjoy doing some of these even more! So I started doing a lot of reading, and YouTube-watching, on the subject of early retirement and retirement finance planning. Some of these had comments from people saying things like, "I retired in my early 50s and I'm so glad I did!", which made me feel a bit less decadent about considering it at my rather more advanced age.

There was also a persuasive argument I read somewhere that went roughly along these lines: If you retire in your mid-to-late 60s, as many people do, the chances are that you'll have 10-15 years of reasonable health; maybe rather more, if you're lucky. But if there are two of you, and you want to do things together, the probability that both of you will be fit and healthy drops significantly: perhaps the balance of probabilities might put it closer to 10 years. There's an acronym I've seen used by pension advisers: JOMY, which is short for the rather common 'Just One More Year' syndrome: "I'm going to retire very soon, but I think I'll give it just one more year before I do." If you consider that every 'just one more year' might take 10% of the time you have to enjoy significant retirement activities with your spouse... well, you can do the maths.

Anyway, all of the above explains, to some degree, why we are now in our little campervan, in unexpectedly glorious sunshine, just a short walk from the charming old harbour of Honfleur on the Normandy coast. And we're doing something which I've always wanted to do: leaving home for a vacation without knowing exactly when you'll be coming back...

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!