Computers annoyed me twice yesterday. Not really computers, I suppose. Computers are either on or off. The people in charge of certain computers annoyed me yesterday. One is a very unpleasant, 2024-ish version of dependency hell, and one was Apple (who don't annoy me very often, but when they do it makes me want to pitch every piece of Apple hardware I own, directly into the sea).

Annoyance 1. There's an element of this that is my own fault, and you'll probably see why at some point, but I consider that it's mostly just an annoying situation. Oracle bought MySQL a long time ago. A lot of people weren't happy about this because people don't like Oracle. Some people were unhappy enough that they forked MySQL and created MariaDB. Owing to licensing, and compatibility with the MySQL API, Debian kicked MySQL to the kerb and replaced it with Maria. They didn't even change names - when you install mysql-server, you get MariaDB, and that is mostly fine.

However, for me yesterday it was not fine. Amazon are finally ditching MySQL 5.7 and forcing you to upgrade to 8. In this time there has been some divergence, to the point that it doesn't seem to be a straight swap between Maria and MySQL any more when you're on MySQL 8. We moved to using Maria in development because its 5.7-compatible version 10.3 installs on Apple Silicon without emulation in Docker, but that's no-longer viable. We need to upgrade a pretty large codebase and I need to be sure that it still runs on MySQL 8. So I need to be running MySQL 8 in development to spot issues.

It turns out that using Debian and installing libmysql (i.e. libmaria - I don't know if that's what it's called but that's what it is) has some incompatibilities with MySQL - it specifically doesn't seem to be compatible with the latest authentication methods in MySQL which is literally the first hurdle. So I need MySQL MySQL. Maria won't do it. Fine - Oracle has Debian repos, I'll just update our Docker image to install MySQL from there. Except that MySQL doesn't make ARM-compatible Debian repos, so what I actually need to do is compile my libmysql bindings from source, just so that the MySQL language bindings compile with compatibility that I actually need. I'll then need another Docker image so that we're not compiling MySQL from source on CI. You shouldn't measure productivity in lines-of-code, but it took me about 5 hours to write 15 lines of code with all the trial and error and waiting.

Pretty annoying stuff. But not nearly as annoying as:

Annoyance 2. The same client uses Braintree for payments. We used to love Braintree as it was the first developer-friendly gateway I had used and, thus, the first one that wasn't an absolutely horrendous nightmare of esoteric, interpolated hash secrets. It actually had an API. Then PayPal bought it and it has gone downhill ever since. Its documentation is a sprawling mess of outdated or just wrong information. Its examples just don't work in a lot of cases. I don't like it. Stripe, I like. You should use Stripe.

This client wants to use Apple Pay; totally reasonable request in 2024. Documentation for implementing Apple Pay seems pretty simple. Configuration is a bit weird with downloading certificate signing requests from one UI and uploading them to another, then downloading certificates from that one and uploading to the first one. All whilst trying to follow processes that don't really know about each other and lead you down some weird paths. Because of course they do.

So I have everything set up, and I have a URL and TLS certificate I can use in test (thanks ngrok!). So I go to test an Apple Pay transaction. But it's not working because I'm using a real card in a sandbox environment. Why don't they just pretend to accept my card in sandbox? Pretty sure Braintree lets you use real cards and just doesn't charge them. Stripe definitely does. OK so what's the sandbox process like? I need a sandbox account - fine, Braintree and PayPal both need that. It's annoying but it's nothing new. Wait, I also need a device to sign into this sandbox account on? I have to log out of my iCloud account?! That is incredibly disruptive; I'm not doing that.

So I thought I would be clever (mistake). I installed xCode and got a simulator up and running. I can sign into the sandbox account on there and just run in sim. It used 20GB and an hour of my time waiting for downloads but it's still far better than needing to trash my phone every time I want to test Apple Pay on Braintree. Except that, for some reason, you just can't add cards to your wallet in Simulator. It fails and shows a generic error message. After trying a bunch of region-changing, I gave up. We must have an old iPad around here somewhere that I can use.

We do, but the battery is completely dead. So it goes on charge and I go out. I get back and it's on iOS 13 and won't let me add cards, so I upgrade to iOS 17.4 and try to add one of Apple's test cards. First one doesn't work. Neither does the second one. All the way up to the 7th random card from that list. None of them will add. No helpful error messages - just a generic "card cannot be added". Why!? So I start Googling to see if anyone else has experienced this, and I find an expired card in a Stack Overflow post. Update the expiry date and give it a try and it works. I can't believe it.

Tested my integration and everything works perfectly. Took about 5 minutes once everything was working. Getting everything working took 8 hours (with a 2 hour gap whilst the iPad got some charge). This whole thing is genuinely an absolute disgrace that I am still angry about, if you couldn't tell. I expect better from Apple on things like this. I can't believe that the test cards on their site just don't work. Why don't they automatically just issue a dummy card to every sandbox account that is just sitting in your wallet when you sign in? Why don't they just accept live cards and not charge them. No idea, but at least now I have an old iPad that I need to keep alive just to be able to test Apple Pay transactions. This sort of thing makes me never want to give Apple money ever again.

Short weeks are always the worst once your free day off is over.

Two weekends, two car shows


I do love a good car show. I think I still prefer things on the more modded side like InCarNation but there was some very cool stuff on display here.

The things you carry


The things I carry change relatively frequently, but the things I carry are fairly consistent.

Oh hi remember me? It's the guy with the achilles tendon injury. Oh nothing, just helping out at my daughter's badminton academy. Feeding shuttles, playing half court singles, playing full court singles. In jeans. With 11-year-olds. 11-year-olds have a lot of energy. Injured 38-year olds? Not so much.

I will never pass up the opportunity to play badminton. And soon: padel. Want to play padel? What I lack in physical ability, I easily compensate for with persistence and competitiveness.

OK no I can't handle having a rotary encoder any more. I used it once today and needed escape, zero, and left mouse button about 200 times. Sorry Milo.

InCarNation 2024


Back again! No Boxsters but there was an absolutely incredible NSX that I definitely don't want 🥵

Oh no they changed how environment variables work in @astrojs/cloudflare!


Fortunately, Charlie had already figured this out and he helped me get up-to-speed but it wasn't easy, and we discovered some idiosyncrasies even as he explained it to me!

Protozoa's Milo stole my escape key


I haven't used a rotary encoder on a board since I started using column stagger splits under 40% but look how cute!

Lambing at Middle Farm


We went lambing at Middle Farm with Dan, Allyson and their two boys. They were too young for it, and I think Tabitha is too old now. Plus it's a weirdly corporate affair.

Me, recognising the actor who played Rico in Hannah Montana: "oh it's the guy from Monos"

In spite of the fact that I absolutely love to go fast in cars, and I have a car that makes the most lovely noises when you rev it hard, I don't speed on the road. I got 3 points on my license about 2 months after passing my test and, since then, I've stuck to the rules of the road pretty closely.

There's a 30mph road by us that is so long and boring to drive all the way down at 30mph, but I do it every time because I don't want to risk points again. You would not believe the number of times I get overtaken, or flashed at, or honked at driving down that road. I would say 30% of the time this happens, and I hate it, and I don't know what to do about it. I'm not going to risk my license because someone is following me bored, but it bugs me so much every time something like this happens and I can't get it out of my head for days. I can't just quit using this stretch of road - it accounts for a third of the roads leading out of this village!

St Leonards Small Plates


A couple of very good friends moved from Brighton to St Leonards. We love St Leonards and so any excuse to eat our way round there for a day works for me!

Netflix's version of 3 Body Problem solves probably my biggest gripe with the books, and that is its characters. They've done a brilliant interpretation of everyone from the book; even when names and roles have been adapted. Significant characters are still there from a plot perspective, but they're a lot deeper and more realistic. The Panama Canal scene is so satisfying and gross. You should watch it just for that bit because it's awesome. Surprised at how much I'm enjoying it.

Photos of cats and food


Weirdly quiet few weeks for taking pictures. I just can't get my eye in for it at all. It's a bit disheartening looking at my camera roll and seeing the same thing repeatedly.

Today I learned that Excel thinks it can handle XML, and I'm here to tell you, if someone offers to clean up some XML data for you, make sure they're not going to use Excel to do it because it mangles it like crazy and will make some datasets basically unusable.

Lazy Designers Duo and Apricot


Feels like ages since I got a new keyboard but it almost definitely isn't. I've had a premium QAZ-shaped hole in my collection for a while. No more!

Craft-driven static Astro builds in S3, a baptism by fire


I am normally very toe-in-the-water on AWS, but a recent project forced me to go all-in on it and it was pretty fun, all things considered.

Tabitha is Eleven


Not sure how this has happened but yep. Eleven. She played a badminton match and chose what she ate all day (so junk pretty much!)

Bleachers at O2 Forum


We took Tabitha to see Bleachers as her first proper show. I think she enjoyed it but we would all like to go back to bed now please.

Some recent pictures


I have been on a bit of a kick with computers and coding recently, which has meant fewer pictures. Unless you count pictures of half-assembled computers. Which, this week, we do.