Weekly Activities: Mar 16-22, 2026

Activities: Mar 16-22, 2026

Totals: 33.12 mi, 7h 58m — 1 Run, 9 Walks, 1 Hike

Reverse Centaurs Invade Amazon

What the hell is a "reverse centaur"? Cory Doctorow explains:

In automation theory, a "centaur" is a person who is assisted by a machine. You're a human head being carried around on a tireless robot body. Driving a car makes you a centaur, and so does using autocomplete.

And obviously, a reverse centaur is a machine head on a human body, a person who is serving as a squishy meat appendage for an uncaring machine.

Today at Ars Technica we see that Amazon is going to have "senior engineers" review AI-assisted changes after some incidents.

More from Cory's talk:

If my Kaiser hospital bought some AI radiology tools and told its radiologists: "Hey folks, here's the deal. Today, you're processing about 100 x-rays per day. From now on, we're going to get an instantaneous second opinion from the AI, and if the AI thinks you've missed a tumor, we want you to go back and have another look, even if that means you're only processing 98 x-rays per day. That's fine, we just care about finding all those tumors."

If that's what they said, I'd be delighted. But no one is investing hundreds of billions in AI companies because they think AI will make radiology more expensive, not even if that also makes radiology more accurate. The market's bet on AI is that an AI salesman will visit the CEO of Kaiser and make this pitch: "Look, you fire 9/10s of your radiologists, saving $20m/year, you give us $10m/year, and you net $10m/year, and the remaining radiologists' job will be to oversee the diagnoses the AI makes at superhuman speed, and somehow remain vigilant as they do so, despite the fact that the AI is usually right, except when it's catastrophically wrong.

"And if the AI misses a tumor, this will be the human radiologist's fault, because they are the 'human in the loop.' It's their signature on the diagnosis."

This is a reverse centaur, and it's a specific kind of reverse-centaur: it's what Dan Davies calls an "accountability sink." The radiologist's job isn't really to oversee the AI's work, it's to take the blame for the AI's mistakes.

Amazon senior engineers are now also an accountability sink for "AI-assisted" changes.

Cool...

Weekly Activities: Mar 2-8, 2026

Totals: 58.62 mi, 12h 25m — 4 Runs, 10 Walks, 1 WeightTraining, 2 Hikes

People I Respect Have Differing Opinions

Today I saw two posts that could not be more opposite, and of course it's about AI.

First up is Barry O'Reilly on LinkedIn:

There must have been a point when people in the tobacco industry began to realise what they’d done. One by one, workers must have woken up one day and realised that their industry was bad for the world.

The sloppocalypse just did that for me. The worry isn’t that we’ll be replaced by AI, it’s that ethically we won’t be able to work for this industry anymore.

Next is Charity Majors:

Today, it’s very clear to me that the center of gravity has shifted from cloud/automation workflows to AI/generation workflows, and that the agentic revolution has only just begun. That toddler is heading off to school. With a loaded gun.

I don’t know when exactly that bit flipped in my head, I only know that it did. And as soon as it did, I felt like the last person on earth to catch on. I can barely connect with my own views from eleven months ago.

Having just finished listening to Empire of AI, while I acknowledge Charity is probably right, I am very much leaning towards Barry.

Posted in AI

Weekly Activities: Feb 23 – Mar 1, 2026

Activities: Feb 23 - Mar 1, 2026

Totals: 55.37 mi, 11h 43m — 4 Runs, 7 Walks, 2 Hikes, 2 Rowings

Rewilding Software Engineering Chapter 6

Simon Wardley and Tudor Girba have posted the latest chapter to their book, Rewilding Software Engineering, titled "Myths we tell ourselves."

As these posts are on Medium but also licensed under Creative Commons BY-NC-SA 4.0, I turned the chapters into a book that you can download in PDF form. The "code", as it were, is freely available as it's just the Medium posts converted into asciidoc format.

I very much appreciate them writing and publishing the book and I hope this format makes it easier for more people to read.

Welcome to My Post Mid-life Crisis

Three boxes on the floor. A Pioneer DDJ-FLX4, headphones, and a pair of monitor speakers.

Yes, I finally took the plunge and bought some toys that I've been thinking about for much of 2025. I was a radio DJ in college and this is a very different kind of DJ gear...but thinking about how to move from one song to another is quite enjoyable to me and I want to do move of it and do it more like professionals.

Do I plan on making a career out of DJing? No. I can't stay up that late anymore. Do I plan on doing this publically? Eh, if it happens it happens, but it is not the goal. What is the goal? To learn something new and have fun. I'm pretty sure I can do that.

The Gear:

  • Pioneer DDJ-FLX4
  • Eris 3.5TB monitor speakers
  • Sennheiser HD 280 PRO headphones
  • rekordbox (software to control my deck)

This is all "bang for buck" gear, because this is just for fun.

2025 Strava Activity Report

With a little help from Claude Code, here's my breakdown from Strava. Update: Still a few days left so I'll just update these numbers as they come in.

Hikes

Total Miles: 212.6
Total Hikes: 43

Monthly Breakdown

January: 23.2 miles (4 hikes)
February: 15.4 miles (3 hikes)
March: 22.0 miles (5 hikes)
April: 8.4 miles (2 hikes)
May: 16.2 miles (3 hikes)
June: 19.7 miles (4 hikes)
July: 26.4 miles (5 hikes)
August: 18.2 miles (4 hikes)
September: 14.0 miles (3 hikes)
October: 4.8 miles (1 hikes)
November: 13.8 miles (3 hikes)
December: 20.8 miles (4 hikes)

Runs

Total Miles: 1307.8
Total Runs: 184

Monthly Breakdown

January: 123.2 miles (17 runs)
February: 117.7 miles (16 runs)
March: 111.5 miles (15 runs)
April: 110.6 miles (15 runs)
May: 122.3 miles (17 runs)
June: 110.2 miles (16 runs)
July: 133.5 miles (18 runs)
August: 66.8 miles (10 runs)
September: 106.5 miles (16 runs)
October: 45.8 miles (8 runs)
November: 117.2 miles (17 runs)
December: 119.1 miles (16 runs)

Walks

Total Miles: 774.8
Total Walks: 301

Monthly Breakdown

January: 44.8 miles (19 walks)
February: 46.2 miles (21 walks)
March: 57.4 miles (19 walks)
April: 73.3 miles (28 walks)
May: 58.6 miles (19 walks)
June: 68.9 miles (24 walks)
July: 67.7 miles (35 walks)
August: 94.9 miles (38 walks)
September: 56.3 miles (25 walks)
October: 50.1 miles (24 walks)
November: 50.6 miles (21 walks)
December: 70.8 miles (18 walks)

I have started syncing Apple Fitness rowing workouts to Strava, but they don't have any distance information because I have a Concept 2 rowing machine that doesn't talk to anything.

The Forces Working Against UX

Why do we run into situations where a company seems intent on making their systems or people incapable of taking our money for their services which we desire?

I had the good fortune to hang out with Joshua Kerievsky at Øredev 2025. We were on the same flight home, so we made our way to the Copenhagen airport and decided to buy a day pass to the SAS (Scandinavian Airlines System) lounge. We had arrived at the airport the recommended three hours before our flight, so the lounge seemed like a good idea. Well, at the time at least. It quickly turned into a user experience case study of how not to delight a customer.

The first hurdle was the front desk. The associate asked when our flight was and we told her that was at noon. She told us that anything less than three hours isn’t eligible. I held up my app and explained that it was allowing me purchase, but I guess the rules are the rules and she still said she couldn’t help and we were welcome to try the app. Joshua proceeded to navigate the SAS phone app to get to the screen where you could purchase a pass, which was a nontrivial navigation experience, but we got there. He tapped the button and nothing would happen. He tried again. And again. “Maybe it’s because I’m using the app as a guest,” he wondered aloud. He didn’t want to create an account because he doesn’t fly SAS typically, so why bother with yet another username/password (no passkey support) and the inevitable barrage of unwanted marketing emails that we are opted into by default everywhere.

All of this was done standing at the lounge front counter, so we decided to find a place to sit down and see if creating an account would unlock the functionality to give SAS the $55 USD they desired for lounge access. He gets out his laptop and begins the account creation process. We all know the pain of trying to use most web sites on spotty Wi-Fi, and flysas.com was no exception. He gets to the create account page and it’s protected with a CAPTCHA, which would not load. If you can’t solve the CAPTCHA, you can’t create an account. So we wrestle with trying various networks, phone tethering, and finally get it to load. Then the password rules. Then resetting the password because it didn’t save in the password manager. Then messaging the password because device syncing isn’t going great because Wi-Fi. It may shock you to learn that some airport Wi-Fi networks are not great.

Finally he’s in the app, gets to the buried part of the app where you can add lounge access and the price has gone up since we started! They wanted to charge him more money to spend less time in the lounge! We both make our purchases and head in, although it’s certainly not the relaxing experience we had expected.

So what was going on? Why was the app and website so resistant to selling him a lounge pass? The app issue is a pure UX issue. If a user can’t do something because they aren’t logged in, you have to tell them. The website, I suspect, has more to do with a sequence of decisions made in the name of security and fraud prevention that did not take into account the cumulative negative impact on the user. “We have to use a CAPTCHA to thwart the bots!” Did anybody think about introducing that as an external dependency that could have performance issues? Many websites have started using services that will flag suspicious behavior to prevent fraud, which sometimes relies on knowing that a user is suddenly far away from the last usage. Weird! Unless you’re traveling…

I’ve been on the implementation side of this fence and the Internet is a very nasty place. Web application firewalls, bot mitigation, and fraud prevention all introduce friction and you have to be aware how it’s accumulating and impacting your customers.

What about the human who simply refused to sell us access before the time window and could have prevented this whole technology ordeal? That limit is likely to prevent customers from missing their flight due to passport control. The delay through passport control could be made available to customers though, not just as a predefined unchangeable time window that doesn’t seem to be enforced in the app. We see signs like this on roads all the time, telling you how long it’s going to take to get to certain destinations. From the customer perspective, enough information to understand the barrier probably would have been sufficient. Instead, it was just a “I can’t” with no explanation.

Companies, I assume, are not intentionally making suboptimal experiences for their customers.To whoever took each decision, in isolation, they probably made all the sense in the world. “We have to block the bots!” “We have to prevent fraud!” “We can’t let our lounge be the reason why customers missed their flight!” Each decision contributes towards the system drifting away from its original purpose: to serve the customer. We all need to remember that our decisions live in a larger system and that every local safeguard has global consequences, up and downstream.