Author: Douglas Ireland

  • The Race I Wasn’t Ready For (I Was Ready For)

    Soundtrack to this post.

    Who gets a cold in August? Me, apparently.

    Wednesday, three days out, I woke up with that first sniffle that you know is going somewhere bad. By Thursday I was fully snotty and sneezy, and Friday wasn’t much better. I very nearly pulled a sickie from work. Then it occurred to me that phoning in sick on Friday and then bragging about a 10K on Monday wasn’t a good look, so I persevered instead.

    I don’t get colds. I’ve always thought I had a strong immune system, right up until I got diagnosed with MS and started to wonder if that same immune system turning on itself was the reason I got MS in the first place. And the medication I take for it works by knocking back part of that immune system on purpose. So I looked it up, and it turns out that’s not just me being dramatic: picking up more colds is a known side effect of the drug. Which was a strange thing to make peace with three days before a race.

    Anyway. The cold had cleared by the time I woke up on Saturday morning. Lucky.

    Douglas standing in front of an Up and Running Events photo backdrop, holding a printed sign reading 'I'm only here for the medal'.
    Setting expectations early.

    I got to Bellahouston Park in good time, picked up my number, took the obligatory daft photo with the sign, and then had about forty minutes of standing around trying not to think about it too hard.

    Close-up of Douglas standing among other runners under trees at the start area, wearing a cap and glasses, looking slightly tense.
    One minute to go.

    I’ve written before about why I signed up for this one at all and how I built the plan to get round it: run nine minutes, walk one, repeat, and don’t chase anybody in the first kilometre. Two laps of the park. I knew the plan. I’d tested the plan all week. Standing at the start line a minute before the start, none of that made me feel any less nervous.

    The start came. I stuck to it. First lap felt exactly as easy as it was supposed to.

    Douglas running along a tree-lined park path, smiling, with race barriers and other runners visible behind him.
    Still enjoying myself at this point.

    Nobody warned me about the hill just after the start line. It’s nothing on lap one, legs fresh, you barely notice it’s there. On lap two, with five kilometres already in my legs, it was a different story entirely. That hill, second time round, was the closest I came to just stopping and walking the rest of the way in. I didn’t. I put my head down, shortened my stride, and got up it.

    Douglas running with a strained, focused expression along a leaf-covered path lined with event barriers.
    Pushing it, last stretch.

    After that it was just a case of holding on. The last kilometre or so I ran the whole thing in, no more walk breaks, because by that point stopping felt harder than not stopping.

    Bellahouston Park 10K 299
    Official finish time
    1:06:05
    chip timed
    Distance10 km
    Course2 laps
    Date22 Aug 2026
    VenueBellahouston Park, Glasgow
    Up and Running Events · Perfect Timing Scotland

    Official chip time: 1:06:05. My phone had me at 1:06:29, so somehow I ran faster than I thought I did, which has never happened to me before and may never happen again.

    Douglas standing on grass near the finish area, smiling and holding up his medal, with his race number still pinned on and a water bottle in his other hand.
    Well chuffed.

    None of this happens without Stephanie. This whole thing was her idea, not mine. I wasn’t sure about it when she first suggested it, if I’m honest, ten kilometres felt like a lot to sign up for off the back of nothing. She talked me into it anyway, and then she stood in the cold at the start line at half past nine on a Saturday morning to see me off, and was there again at the finish.

    Douglas in his running kit and race number with his arm around Stephanie, who is wearing a hoodie and holding a long cane, on the path near the start line.
    Waiting around at the start. She was cold even then.

    And here’s the thing: she’d picked up my cold off me the day before. So the woman who talked me into this stood outside in August, unwell, to cheer on someone who was only running because she’d talked him into it. I’m genuinely glad she pushed me into this, because I’d never have signed up for it on my own.

    Douglas sitting in a café booth drinking from a cup, still wearing his finisher's medal over a hoodie.
    Kept the medal on for the coffee. No regrets.

    Three months ago I couldn’t run for three minutes without stopping. Today I ran ten kilometres. Whatever comes next in the run-up to Paisley, I’ll take that.

  • Seizing the Means of Listening

    Soundtrack to this post.

    For years, Tidal had a very good idea of what I listened to. Every play, every skip, logged on a server I’d never see, feeding an algorithm I didn’t ask for, ready to hand me a glossy year-in-review graphic every December whether I wanted one or not.

    A few weeks ago I cancelled it. What I actually wanted was already sitting on my own server, in a library I’d spent months getting properly tagged, playing through a media server that already reaches every device in the house. Tidal wasn’t giving me anything my own kit couldn’t, once the kit actually worked properly. So I switched it off and set about rebuilding, on my own terms, whatever streaming had been giving me.

    Mine’s on my own server now. Every play, every skip, every 3am replay of the same Erasure track fifteen times in a row, logged by me, stored by me, shown back to me on my own website. Nobody else’s business.

    This is the story of how that happened, and it took a lot longer than I expected.

    The library had to actually be correct first

    None of this works if the files don’t know what they are. I’ve got a couple of thousand tracks on a Hetzner storage box, ripped from CDs going back years, and a lot of them had tags that were, generously, vibes-based. Artist names spelled three different ways. Compilation albums where every track thought it was the album artist. No MusicBrainz IDs at all, which meant no service anywhere could reliably say “this is that song” rather than “this is a song with a similar name.”

    Fixing that meant beets, a command-line tagger that’s less well known than it deserves to be. Point it at a folder, it fingerprints the audio and matches it against MusicBrainz’s catalogue, then writes the correct IDs straight into the file tags. No renaming, no moving things around, no gambling with a library that has no backup (a fact I am extremely careful about).

    It did not go smoothly on the first attempt. The MusicBrainz plugin isn’t even enabled by default any more, so my first real import returned nothing for every album and I spent an embarrassingly long time wondering why. Then, once it was working, I found that turning on audio fingerprinting (as opposed to matching on the existing text tags) actually made matches worse, dropping a known-good album from a perfect 100% match down to 93%. Counterintuitive, but the numbers didn’t lie, so fingerprinting only comes out now for genuinely hopeless cases.

    For freshly ripped CDs there’s a second layer to this: Picard, which handles the initial tagging before the files ever reach beets. Load a whole album onto one confirmed release before saving, every time, or Picard will happily scatter your tracks across three different pressings of the same record without telling you. And for the properly obscure stuff, like a 55-track singles box set that exists in several barely-distinguishable editions, the only reliable way to pick the right one turned out to be reading the barcode off the physical case and matching it against the MusicBrainz API directly. Title search alone just isn’t trustworthy once the tags are already a mess.

    (For the record: I’m still two tracks short on that box set. If anyone has a spare copy of the Pet Shop Boys’ “Smash”, get in touch.)

    Giving myself a proper name

    Small detour: my ListenBrainz account had been sitting under an old username, a leftover from some long-forgotten forum registration habit. One email to the MusicBrainz team and it became douglasireland, keeping every listen already logged. Nice to have your own name on your own listening history.

    Building the page

    With the library actually tagged, and my media server serving it to the house, and a scrobbling plugin sending every play to ListenBrainz, I had real data flowing for the first time. So I built /listening-log: what’s spinning right now, a running ledger of recent plays grouped into runs when I’ve clearly put a whole album on, and a chart of what’s had the most airtime lately. Styled to match the rest of the site rather than looking like a bolted-on widget, because a bolted-on widget is exactly what it would have been otherwise.

    Cover art turned out to matter more than I expected to how alive the page felt. Real sleeve art, pulled by MusicBrainz ID, made the ledger feel like a shelf of records rather than a spreadsheet. One entry kept showing a plain white box instead, which took a bit of hunting to run down: I’d built the image URL without ever checking whether the artwork existed, so a 404 quietly painted nothing. Now it tries the media server first, falls back to the Cover Art Archive, and only gives up to a plain sleeve icon if genuinely nobody has art for that release.

    There were smaller bugs too, the kind you only find by actually living with a thing. A run of exactly one track was silently hiding its own artist name, a leftover edge case in the “don’t repeat the artist for every track in an album run” logic. Box-set compilations were briefly crowning “Various Artists” as my most-played act, because the code trusted the album-level tag over the actual per-track one. And my phone’s scrobbler fires two or three near-identical “finished playing” events for a single track a second apart, which is a fun way to accidentally double your own listen count if you’re not watching for it.

    The bit where I stopped trusting someone else’s server

    Here’s the part that actually earns this post its title. ListenBrainz is a good project, run by a small non-profit, and I like what it stands for. But it went down. More than once, in the space of one day, and the second time it wasn’t just missing data, it was actively making my own front page slow, because every visitor was quietly waiting on a request to a server I don’t control and can’t fix.

    So I asked myself the obvious question: every track I listen to gets played through my own media server first. Why is my website asking a third party what I’ve been listening to, when the honest answer is sitting right there on my own infrastructure?

    It took an afternoon to switch the whole thing over. The “now spinning” widgets, the ledger, the charts, all of it now reads straight from the media server’s own session and activity data, over a private network connection that never touches the public internet. ListenBrainz still gets scrobbled to in the background, because I like having a public record too, and because it means this isn’t a single point of failure either way. But my own site no longer depends on it staying up. If ListenBrainz is down, mine just doesn’t notice.

    That, more than the tagging or the widgets or any of the rest of it, is the actual point of self-hosting. Not that it’s free, or that it’s more private, though it is both of those things. It’s that nothing about my own website’s uptime is someone else’s problem to have on a bad day.

    There was a knock-on bug from the migration worth admitting to, because it’s a good one: the switch briefly made the “now spinning” widget flash “nothing’s playing” for up to forty-five seconds every single time a track actually changed, because it trusted an empty reading the instant it saw one, with no allowance for the ordinary gap between one song ending and the next one registering. It now holds the last confirmed track for a minute, quietly flagged as unconfirmed, before it’ll admit the room’s gone quiet. Small fix, but it’s the difference between a page that feels alive and one that flickers like a loose wire every three minutes.

    Wrapped, but it’s mine

    The last piece was a proper year-in-review page, the kind Tidal used to send me every December, glossy and pre-packaged. Mine’s at /recap, rebuilt on a rolling 365 days rather than a calendar year, so it’s always current rather than sitting stale for eleven months.

    As of today it’s showing 1,209 listens, across 347 different artists and 845 different tracks, with just over 77 hours of confirmed listening time. A ten-day streak earlier this month. My single busiest day so far ran to 116 plays. Garbage are comfortably my most-played artist right now, on both the 30-day and 365-day view, which is either a sign of good taste or a sign I need to broaden my horizons. Possibly both.

    None of those numbers are borrowed from anyone. They’re not an estimate, not a “stats aren’t ready yet” placeholder, not something calculated by a batch job on someone else’s schedule. They’re read straight off my own server, whenever the page loads, because the data was mine the whole time.

    Douglas Ireland, Self-Hosted
    Listening record · no. 001174

    Listens logged
    1,209
    Unique artists
    347
    Unique tracks
    845
    Hours played, confirmed
    77.4
    Longest streak
    10 days
    Busiest day
    116 plays

    Top artist
    Garbage
    ×50

    Subtotal
    everything
    Third-party fee
    £0
    TotalMine, kept

    *** served from my own server ***
    *** no subscription required ***

    LB · DOUGLASIRELAND

    Go have a look

    The listening log updates live. The recap page is the honest, unglamorous version of Wrapped. Between them they represent a genuinely stupid number of hours spent on something that, at the end of the day, just tells me what I already knew: I listen to a lot of Erasure.

    Worth every hour, though. It’s my data. Might as well be my website too.

  • In the Automatic Promotion Zone

    Soundtrack to this post.

    Two nil.

    Even at half time it was nothing, and it had been a fair old scrap, both sides having a go and tempers going up a notch before the break. Then Calum Kavanagh scored on the hour, running onto a Norburn free-kick taken before anybody in a Vale shirt had finished arranging themselves, and again on 75, when Fondop got an overhead kick on the end of an Appiah-Forson cross and put the ball exactly where Kavanagh happened to be standing. Mat Hudson kept a clean sheet, which is how he spent most of last season. Five of the summer signings made their debuts. It was, by any measure available to me at half twelve on a Saturday in August, perfect.

    Third. Above the line. In the automatic promotion zone.

    I am aware of what I am doing here. Eight teams are on three points. We are third because we scored two and let none in, and by teatime next Saturday the table will have rearranged itself into something with less to say. There are forty five games left. September is derbies almost the whole way through.

    But look at it. It is right there.

    Here is the thing I keep turning over. England went to the World Cup this summer and finished third in the world, which is the best they have managed in sixty years, and it landed on the country like a dropped plate. Lost the semi-final to Argentina having been in front. Then beat France six four in the third place match, four up at half time, pegged back to within one by Mbappe and Dembele, a Saka hat-trick, Bellingham finishing it off in the ninety eighth minute. Ten goals. The most anyone has scored in a bronze final, ever. And I would guess a fair few people reading this had forgotten the game was even played.

    Meanwhile Oldham beat Port Vale in the middle of August and I have taken a screenshot of a league table.

    The feeling has almost nothing to do with the size of the achievement. It is all about what you were expecting. England were supposed to win it, so third felt like something being taken away. Oldham are supposed to be somewhere in the middle of the fourth tier, quietly, so one Saturday afternoon can put us in the promotion places and I get to sit with that for a whole week. Neither of those reactions is wrong. They are just two different arrangements of the same hope, and mine happens to be the one that pays out more often, in smaller amounts.

    Four years ago we were out of the Football League altogether. I will take a Saturday like this and I will not be doing any of the sensible arithmetic about it until at least Friday.

    Come on you Latics.

  • Here We Go Again

    Soundtrack to this post.

    The fixture list came out in June and I have had this date in my head ever since. Saturday 15 August, half twelve, Boundary Park. Oldham v Port Vale, one of the two games chosen to start the whole EFL season off, which means it is on Sky Sports+, which means it is on in my living room in Paisley.

    A television screen showing the Sky Sports pre-match graphic for Oldham v Port Vale, with both club badges either side of the Sky Bet League Two logo.
    The season starts here.

    Second season back in the Football League. It is still worth saying that out loud, because for three years it was not true. Tenth place last time out, which reads like a shrug on paper and absolutely was not one. Ten games unbeaten through February and March with two goals conceded in the lot of them, the table doing something lovely, and then April arrived and took four games off us in a row. The play-offs went from a live prospect to a thing we talked about. Micky Mellon signed on until 2028 anyway, and that felt like the more important result of the spring.

    Port Vale come up the road as one of the sides everybody expects to go straight back to League One, which Mellon has more or less said himself: we will find out quickly where we are. September is derbies almost all the way through, Rochdale included. So the answer is coming whether I want it or not.

    But none of that has happened yet. Nothing has been conceded in the 89th minute. Nobody has been sent off for something daft. Right now, at half twelve on the fifteenth of August, we are level with everyone and it is all still in front of us.

    Time for the emotional rollercoaster to start again.

    Come on you Latics.

  • Bellahouston 10K plan

    Soundtrack to this post.

    Race week Bellahouston Park 10K · Sat 22 Aug
    1. Sat 15 rest A walk if I fancy it.
    2. Sun 16 Long run, outdoors 40 to 45 min, 9 run / 1 walk. Roughly 6.5 to 7 km at about 7:00/km. The one session this week that changes anything.
    3. Mon 17 rest
    4. Tue 18 Easy 30 min Outdoors, same 9 / 1 rhythm. Keeping my legs turning over, nothing more.
    5. Wed 19 rest
    6. Thu 20 Shakeout, 20 min Very gentle. I cut it short or skip it if it feels like effort.
    7. Fri 21 rest Kit out, start time checked, water on.
    8. Sat 22 Bellahouston 10K Two laps of the park. First one should feel too easy.
    Pace band 9 run / 1 walk · target 70 min
    Clock Doing Roughly at
    0:00 to 9:00Run1.4 km
    9:00 to 10:00walk
    10:00 to 19:00Run2.9 km
    19:00 to 20:00walk
    20:00 to 29:00Run4.3 km
    29:00 to 30:00walk
    30:00 to 39:00Run5.8 km
    5K around 35:00
    39:00 to 40:00walk
    40:00 to 49:00Run7.2 km
    49:00 to 50:00walk
    50:00 to 59:00Run8.7 km
    59:00 to 60:00walk
    60:00 onwardsRun it in10 km
    I take the first walk break at 9 minutes even though I will not want to.
    I walk briskly. I do not stop, and I start running the second the minute is up.
    If 9 minutes feels long on the second lap, I drop to 5 run / 1 walk and keep going.
    If the phone fails no audio cues · course signs only
    1. 2km
    2. 4km
    3. 6km
    4. 8km
    I walk for one minute after each of these markers. Four breaks, read off the course signage.
    Two laps of the same 5 km loop, so the 6 km break is at the sign marked 1 km on my second lap, and the 8 km break is at the sign marked 3 km. Worth working out which physical signs those are before the start.
    A walk minute that runs to seventy seconds costs me nothing.
    Between breaks I run at whatever feels conversational.
    From the 8 km break I run the last 2 km all the way in.
  • A Race I’m Not Ready For

    Soundtrack to this post.

    I signed up for the Bellahouston Park 10K this evening, and I regretted it almost immediately.

    It wasn’t my idea. Stephanie talked me into it0, though I won’t pretend the bespoke finisher’s medal didn’t help. I’ve never had a running medal before, and there’s something almost embarrassing about how effective that turned out to be as an incentive.

    Her reasoning went something like this: I’m not going to run it in fifty minutes, or even an hour, so there’s no point going in with any real expectations. But that’s exactly what makes it useful. It’s a fixed point on the calendar, a number I can look back at in a year and measure everything else against. Not a race to win, just a race to have run.

    I’m seven weeks into Couch to 5K. Last week I ran my fastest ever Linwood parkrun, 29:15, a proper PB and comfortably inside the 30-minute 5K target I set myself. That’s the good news. The less good news is that Bellahouston Park is a 10K, on the 22nd of August, and I’ve still got two weeks of Couch to 5K left to run. The race lands right as I finish the programme, not after it.

    Couch to 5K Week 7
    • Day 1 completed
    • Day 2 completed
    • Day 3 completed
    WEEK 7 COMPLETE

    So the honest arithmetic looks like this: double a 29:15 5K and you get somewhere near 58 minutes for 10K, if pace held perfectly over double the distance, which it never does. Distance takes more out of you than a calculator thinks it will, and I’m still closer to the start of a training plan than the middle of one. An hour is not a sensible target for the 22nd of August. It might not even be a realistic one.

    But that’s sort of the point, and it’s why I said yes even while I was regretting it. This whole year is built around one number: a sub-50-minute Paisley 10K, twelve months from now. I’ve written before about starting that plan from a standing stop, and about the parkrun that turned into an unplanned checkpoint along the way. Bellahouston is the first time the plan has been tested against the actual distance rather than a fraction of it. It’s not a rehearsal I chose for myself. It got handed to me, earlier than I’d have picked, at a stage of training where I have no business expecting a good time.

    And that’s exactly why it’s a benchmark and not a race. A benchmark only tells you anything if the first reading is allowed to be a bit rough. If I waited until I felt ready to run a 10K, I’d never get a number down early enough for it to mean anything later. Stephanie’s version of that idea was kinder than mine, when I put it that way to her, she pushed back: “Yeah but can we make it a wee bit more positive? My thought process wasn’t that you were going to be fabulous, you have done really well but this is to see how far you will go.” She wasn’t wrong, and it’s a better way of putting it than mine was. The value isn’t in the time on the day. It’s in having a time at all, from this exact point in the plan, to set against whatever I run in the months after.

    The Doric portico from the demolished Ibroxhill House, standing in Bellahouston Park, Glasgow.
    The portico from the demolished Ibroxhill House, now standing in Bellahouston Park, where I’ll be running on the 22nd of August
    Photo: Rosser1954 Roger Griffith, public domain, via Wikimedia Commons

    So on the 22nd of August I’ll turn up at Bellahouston Park having just finished Couch to 5K, and run further than I’ve ever run in one go, at whatever pace that turns out to mean. I expect it to be slow, and probably uncomfortable somewhere around the seven or eight kilometre mark where the programme hasn’t taken me yet. I’m not signing up to do well. I’m signing up so that next summer, on the actual Paisley start line, I’ve got something honest to compare it to.

    I’m still not entirely sure I should have said yes. But I think Stephanie was right to talk me into it anyway.

  • Seizing the Means of Computation

    Soundtrack to this post.

    A hand-coloured 1812 etching showing a large figure in a long dress and bonnet standing above a group of small figures, with a mill burning in the background.
    The Leader of the Luddites, May 1812. They were not against machines. They were against what the machines were being used to do to them.
    Working Class Movement Library catalogue, via Wikimedia Commons. Public domain, copyright expired.

    Three years ago I put up a post about a Buckminster Fuller quote, the one about inventing jobs because of a false idea that everybody has to be employed at some kind of drudgery. I said then that “automation is taking away people’s work” reads to me as an argument for automation rather than against it. Who actually wants to work? If work was the thing we wanted to spend our lives doing, they would not need to pay us to turn up. We work because we need to eat and to have somewhere to live.

    I still think that. What has changed is that I now use AI most days, and the political question has stopped being abstract. So I want to set out why I think the left, and the greens in particular, are on the wrong side of this, and what it would take for me to be wrong.

    First, a caveat about the framing. It is tidier to say the left is against AI and the right is for it than it is true. Plenty of the right hates it too, for reasons about national labour markets, or Silicon Valley, or the politics they believe is baked into the models. And some of the loudest enthusiasts would describe themselves as being on the left. What is true is that almost every objection I find persuasive comes from the left, and almost nobody on the left is making the case for.

    The objection that nearly changed my mind

    Keynes wrote in 1930 that his grandchildren would be working fifteen hours a week by about now. Output per hour is several times what it was then. The fifteen hours never arrived. The gains were not distributed, they were captured, and everything else follows from that.

    There is a harder version of this. Every reduction in working time we actually enjoy, the weekend, the eight hour day, holidays, sick pay, was won by organised workers with leverage, and that leverage came from being difficult to replace. AI is precisely a technology for making people easier to replace, including the people whose scarcity used to give them a bargaining position. So the machine that could pay for the leisure is also the machine that dismantles our ability to demand it.

    I do not have a rebuttal to that. I think it is correct. What I dispute is the conclusion. If the problem is that the gains get captured, the answer is to contest the ownership, not to oppose the machine. Opposing the machine is the one strategy that has never worked, and it leaves the ownership question untouched.

    I also want to correct myself. In an earlier post I wrote that data is the primary resource of the AI era, and that reclaiming our data was the first step. I was wrong about that, or at least I was a year late. The models are already trained. Withholding my files from now on does not untrain anything. The binding constraints are compute, capital and electricity, and none of those are in citizen hands or heading there. Hyperscaler capital spending this year is over six hundred billion dollars, around ninety per cent of the accelerator spend goes to one company, and roughly nine tenths of leading edge chip production happens at one foundry in Taiwan. That is a narrower chokepoint than oil ever was. Self hosting my files while renting my thinking is not the answer I thought it was.

    The carbon

    This is the objection I take most seriously, partly because I made it myself in that same post. Datacentre electricity was around 415 terawatt hours in 2024 and the IEA expects it to roughly double by 2030, reaching about 945 terawatt hours, which is a little more than Japan uses today. Emissions in the sector are rising while every other sector is supposed to be falling. Those are the facts and no amount of enthusiasm dissolves them.

    The reply I hear most often is that the carbon spent now buys carbon saved later, through better materials, better grids, better science. The IEA has actually modelled this, and existing applications could deliver reductions several times larger than datacentre emissions by 2035. But the same report says there is currently no momentum that would deliver those reductions, and that without deliberate conditions the effect could be marginal. So it is not a fact about the technology, it is a promise about policy, and we have all heard promises of that shape before from people who wanted to keep drilling.

    There is a better argument available here and it is sitting in Scotland. Last year turning Scottish wind down cost around £350 million, and the replacement generation, mostly gas, cost over a billion. Of the ten terawatt hours curtailed across Great Britain, northern Scotland alone accounted for 8.8 of them, meaning only 61 per cent of the wind power that region could have generated reached the grid. We generate clean power we cannot move and then pay twice for the failure. Compute that can be sited near constrained generation and switched off when the wind drops is a genuinely good use of that. Publicly owned compute soaking up wasted Scottish wind is a better answer than anything I have heard from the industry.

    So here is my limit, since a green position without one is just enthusiasm wearing a green coat. Compute buildout should not exceed the clean generation added to the same grid over the same period. If datacentre demand keeps outrunning clean supply, then the carbon is not being invested, it is being borrowed with no plan to repay it, and I would oppose it.

    The training data

    The models were built out of other people’s work without consent or payment. That is true and I am not going to pretend otherwise. The UK government’s preferred fix was a data mining exception with an opt out, which would have put the burden on every illustrator and session musician in the country to go round asking not to be scraped. The consultation drew over eleven thousand responses, a Lords committee called unlicensed training on creative work a clear and present danger to the sector, and in March the government confirmed it no longer has a preferred option and is not proceeding with any of the four proposals for now. That is not a settled victory, because the opt out is parked rather than buried. But it is a win, and it was won by organised labour, which rather proves the point about leverage above.

    My position is that this was expropriation for the common good. That is a respectable argument on the left with a long history behind it, and it is the argument I want to make. But it only works on one condition, which is that the thing expropriated ends up commonly owned. Taking from freelance illustrators to enrich shareholders is not the common good. It is just taking. Aaron Swartz went to war against paywalls around knowledge, and the same argument cuts against a private lab enclosing the commons in weights it owns and renting the access back. If I am going to use him, I have to follow him all the way, and that lands on open weights and public models rather than on a defence of the companies as they are.

    I should also concede the part that hurts my original argument most. The first work this technology took was not the drudgery. It was illustration, session music, translation, copywriting. Those are the jobs people do for less money than they could earn elsewhere because they would rather do that than anything else. My whole case rests on work being something we would drop if we could afford to. The people hit first are the exception to it.

    What it has given me, and to whom

    Part of my job is getting utilities reconnected to empty properties so they can be prepared for someone to live in. A chunk of that is chasing suppliers, waiting on hold, and writing the same firm letter for the fifth time. I used to lose hours to a single complaint email. Now it takes minutes, and it says exactly what needs saying to get the thing moved.

    The person who benefits from that is not me. It is whoever is waiting for that property. Every day off a void is a day sooner that a family gets a home. That is a small, concrete, material good delivered to precisely the people the left says it speaks for, and I trust it more than any argument about post scarcity leisure.

    I would not extend that to the parts of public service where the human contact is the service itself. A housing officer’s time with a tenant is not overhead wrapped around the work, it is the work. And the pattern to watch is the one where cuts hollow out a service, automation fills the hole, and the staffing never comes back. Fewer than half the public trust councils or central government to use this stuff responsibly, and on the evidence of the last twenty years of government IT they have earned that scepticism.

    Where I cannot answer

    If the frontier models went dark tomorrow I would be stuck. Not inconvenienced, stuck. I have built things I could not now rebuild unaided, on infrastructure I do not own, from a supplier who can change the terms whenever they like. I moved my files off Big Tech and onto my own server and called it a small act of ownership, and I meant it, and I did it while quietly becoming a tenant again somewhere I was not looking.

    That is the honest state of it. I am not making the case for AI from a position of independence. I am making it from inside the dependency, which is exactly why I want the ownership question settled rather than left to five companies and a foundry.

    On the slop question, I have written before that if a work moves me the origin matters less than the responsibility around it. Who is paid. Who is harmed. Who is accountable. I still think that is the right test, and it is also better than the arguments usually made in its place, because people have always been perfectly capable of producing rubbish without assistance. What is new is not the average quality, it is the volume, and volume is a pollution problem rather than a taste problem. The sinks are the places we go to find things out. None of them were built for junk at no cost. The part that worries me most is not the writing at all, it is that when anything can be fabricated the default response to evidence becomes doubt, and deniability is a resource that accrues to whoever already has the lawyers.

    Which gives me my red lines, and I did not have them written down until I went looking. No automated decision that takes away someone’s liberty, their immigration status, or the money they live on. No system where the person it lands on cannot reach a named human with the authority to overturn it. And nothing deployed on the back of work whose makers were neither paid nor represented in the decision to deploy it. That third one I am on the wrong side of every day I open one of these tools, and the only thing that fixes it is the models ending up commonly owned rather than rented, which is why I keep arriving back at the same demand.

    Those hold whoever owns the model, including if the owner is the state, because public ownership was no protection at all in the Dutch benefits scandal or in Robodebt.

    The ask

    Public ownership settles who captures the gains. It does not settle what the thing is allowed to do to you, so the programme needs both halves.

    Inference should be regulated as a utility rather than sold as a product. Compute should be publicly owned at national or European scale, sited where the power is being wasted and switched off when it is scarce. Models above a certain capability, and anything trained on public material, should have open weights so they can be run by people who do not own datacentres. And some decisions should be off the table for everyone, whoever owns the machine.

    None of that is anti-AI. All of it is the sort of thing only the left has ever been any good at demanding. The right will not regulate this because it does not want to, and the tech industry will not do it voluntarily because nobody ever has. Leaving the question to whoever owns the GPUs is not caution. It is a decision, and it is being made without us.

    I would rather we made it. Preferably before I have to explain to someone waiting on a housing list why their new home is delayed by a policy debate about whether the machine should have been allowed to send the email.

  • A Bonus 5K at Linwood

    Soundtrack to this post.

    I did week 7, day 1 of Couch to 5K last night. Twenty five minutes of running, and it felt good, better than it had any right to feeling that late in the week. So when I woke up early this morning, still buzzing a bit from that, I thought I’d see what would happen if I turned up at Linwood parkrun.

    It’s been a while since I’ve been. I wasn’t there to race anyone or chase a number, just curious whether the treadmill sessions and the plan were actually going anywhere.

    Turns out they are.

    I finished in 29:15. My 40th parkrun overall, my 6th at Linwood, and a new personal best there. I came 100th out of a field of 189, 62nd among the men, and 8th in my age category (VM45-49). Age-graded, that works out to 48.83%.

    new PB
    P100 / 189
    100position
    finish time
    29:15
    overall
    100 of 189
    men
    62nd
    VM45-49
    8th
    age grade
    48.83%
    parkrun no.
    40 · 6th at Linwood

    Linwood parkrun · 1 August 2026 · week 7 of Couch to 5K

    None of those numbers matter as much as this one: I’m not even finished Couch to 5K yet, and I’m already inside my target of running a 5K in under 30 minutes by the end of the programme. I ran it at what felt like moderate effort too, not flat out. It went quickly. I remember being genuinely surprised when the finish line came into view, like the run had got away from me in a good way. It didn’t feel like a chore.

    That’s the bit I want to hold onto. I’m still deep in the middle of a year-long plan to get to a 10K in Paisley, and this morning was never part of the plan, just a bonus outing on a day off from it. But it told me something the plan alone couldn’t: that the work is translating. Whatever’s happening on the treadmill during the week is showing up on grass and gravel on a Saturday morning, sweaty and out of breath and pleasantly surprised.

    Here’s the evidence, crossing the line looking exactly as done in as I felt:

    A man in a white t-shirt and dark shorts running along a tarmac path beside a sports pitch fence, other parkrunners visible behind him, under a partly cloudy sky.
    Crossing the finish line at Linwood parkrun, 1 August 2026.
    Photo: author’s own

    Six down at Linwood, forty parkruns total, and still a fair few weeks of Couch to 5K left to run. On we go.

  • Small Mercies

    Soundtrack to this post.

    There is a line in Pulp Fiction I keep coming back to, and it is not one of the famous ones. No royale with cheese, no foot massages, no Ezekiel 25:17. Mia Wallace sits back down at Jack Rabbit Slim’s, looks at the table, and says:

    “Don’t you love that? When you come back from the bathroom and find your food waiting for you.”

    Mia Wallace · Pulp Fiction, 1994

    That is it. She says it, and the scene carries on. Nobody really answers her. Within a few minutes of screen time she will be flat on a carpet with a needle going into her chest, and Vincent is already spending most of his energy on not doing something catastrophically stupid. The whole sequence is wound tight. And in the middle of it, she notices the food.

    I think that is why the line lodged in me hard enough to end up in my commonplace book. It is a completely undramatic observation, made by someone in a very dramatic film, and it happens to be true. You do love that. Everybody loves that. It costs nothing, it changes nothing, and it is a small, dependable pleasure available to more or less anyone who has ever got up from a table and come back to it.

    Noticing is a skill, not a mood

    The thing about small mercies is that they are not rare. They are just quiet. They do not announce themselves, they do not send a notification, and nothing in the world is set up to bring them to your attention. Which means whether you get them or not is almost entirely down to whether you happen to be paying attention at the time.

    The kettle already boiled when you walk into the kitchen. The bin already out. A green light at the bottom of the hill when you have never once had a green light at the bottom of that hill. Washing that came in dry, in Paisley, in July. An email you had been dreading answered before you had to chase it. The good parking space, right there, on a Saturday.

    None of that is luck exactly. Or rather, the luck is evenly distributed and the noticing is not. Mia is not lucky that her food arrived. Food arriving is what restaurants do. She is just the sort of person who registers it as a pleasure instead of as a logistics update.

    A few lines above her in my commonplace book, Epictetus says you become what you give your attention to. I do not think it is a coincidence that they ended up on the same page. If attention is the raw material, then the question of what you point it at stops being a personality quirk and starts being something closer to a practice. The days I have paid attention to the small good things have not been objectively better days. They have just been better days to have been inside of.

    What this is not

    I want to be careful here, because there is a version of this idea I have no time for at all.

    “Count your blessings” has done a lot of heavy lifting for people who would rather you did not ask difficult questions. Be grateful for what you have. Look on the bright side. Cheer up, it could be worse. Told to the right person at the wrong moment, it is not wisdom, it is a way of changing the subject. Noticing that the kettle is boiled does not fix a housing system, or a hospital waiting list, or a wage that has not moved in three years, and anyone who suggests otherwise is usually selling something.

    So this is not that. Small mercies are not compensation and they are not an argument for accepting things as they are. If anything, they run the other way. Nobody sustains a long argument with the world from a position of permanent grimness. You need somewhere to put your feet down. The people I know who have kept going the longest, on the things that matter and take decades, are almost all people who are still capable of being delighted by something small and stupid at half past seven on a Tuesday morning.

    Mia’s line works because it is not consolation. She is not saying the food makes up for anything. She is just, briefly, in a scene that is about to go very badly wrong, glad about her dinner.

    The commonplace book bit

    This is more or less what the commonplace book is for. Most of what is on that page is heavier: Le Guin on capitalism, Illich on tools, Sagan on a society that depends on science it does not understand. Big ideas that I keep near me because I want to keep arguing with them.

    And then Mia Wallace, on the pleasure of a table you left and came back to.

    She earns her place. Every so often you need reminding that the point of all the other quotes, the whole business of paying attention to power and who decides and who bears the cost, is a world with more small good things in it and more people with the spare capacity to notice them. That is what it is all in service of. Not a better argument. A boiled kettle, and someone glad to find it.

    Don’t you love that?

  • Green reps deserve legal backing

    Soundtrack to this post.

    https://commons.wikimedia.org/wiki/File:Whitelee_with_arran_in_the_background.jpg
    Whitelee wind farm, with the Arran hills beyond. The visible half of the transition is easy to photograph. The half that decides whether targets are actually met happens indoors, in workplaces, in decisions nobody takes a picture of.
    Photo: Bjmullan, via Wikimedia Commons, CC BY-SA 3.0

    I emailed my MP this week to ask them to support new legal rights for workplace green reps. It took about two minutes, and it is one of those small asks that could end up mattering quite a lot.

    Here is the situation. Across the public sector there are union members who have taken on the role of green rep, or branch environment officer, entirely on top of their day job. They push for better recycling, sensible travel policies, decent building fabric, smarter procurement, and heating systems that do not haemorrhage energy into the sky. They do it because someone has to, and because the people who actually run a service usually know where the waste is hiding.

    What they do not have is any legal standing. Health and safety reps have had statutory recognition since 1977. Union learning reps have it. Equality reps got it through the Employment Rights Act, with paid time off and facilities coming into force this October. Green reps have nothing. No guaranteed facility time, no right to ask for the data, no defined function in law. The TUC makes the point well: an enormous amount of energy gets burned up just negotiating what the role is allowed to be, which leaves very little left over for doing the work.

    That gap shows up in the numbers. The TUC’s position paper notes that most organisations still lack even basic decarbonisation and climate adaptation plans, and that plenty of the ones with published targets have no credible route to reaching them. A target with no plan behind it is a press release.

    I recognise a version of this from working in public services. Anyone who has spent time around building maintenance, heating systems, utility supplies or fleet knows that net zero targets do not get met in a strategy document. They get met, or missed, in thousands of small operational decisions taken by staff who are rarely asked what they think. Every retrofit choice, every boiler replacement, every property brought back into use carries a carbon consequence. The people doing that work hold a granular picture of where energy and money are actually going. Formalising a route for that knowledge to reach the people drawing up the plans seems like straightforward good sense, for the workforce and the employer alike.

    There is a fairness argument alongside the practical one. Transitions reshape jobs. Fleet changes, building changes, service changes. If the people whose work is being reshaped have a seat at the table while the plans are drawn up, the plans come out better and the transition holds together. If they do not, you get decisions landing on people from above and a very reasonable loss of goodwill. UNISON’s framing of it is hard to argue with: a fair transition to net zero needs workers to have a voice.

    Employment law is reserved to Westminster, so this is a matter for MPs regardless of where in the UK you are. If your union is running the same campaign, the action link is worth the two minutes.

    Take action with UNISON