I'm not a life-long fan of formula one. When I was a kid, my dad said it was boring and so it was boring and we watched British Touring Cars and Saloon Cars instead.

A few years ago, a regrettably estranged friend (I know you're reading this; please reach out) pretty much forced me to try F1 again. I did so and got hooked immediately.

I'm not sure why it appeals to me so much. The first season I watched was plagued with porpoising and was essentially a race to solve that issue without compromising to a degree that tipped the scale too far the other way. Since then it's been a procession with Max Verstappen at the head. It's been a bit boring but I still love it?

Because it's 2024, I'm in an F1 dads WhatsApp group and we're going to Spa Francorchamps in July and I'm super excited for that. I've got an F1 calendar on my phone that tells me when and where we're racing this weekend (I watch free practice highlights but I watch qualifiers, sprints and races in full).

I've also been watching the heritage races on the Formula 1 YouTube channel. For each GP they've been showing extended highlights from a past race and I love them. The mid-2000s cars look like something you might design if you were seven years old, and they sound like an angry, eight-foot mosquito. In a lot of ways I look forward to these historic highlights as much as the race itself. My F1 dads are less enthusiastic; they likely watched these races at the time. I'm the interloper.

It reminds me of The Big Lebowski. I love that The Dude listens to old bowling matches on tape to relax. My F1 Sundays with the kid are the most relaxing time of my week and I can be found snoozing in front of the F1; not through boredom but relaxation (unless it's Monaco - then it's boredom).

And so I had the idea to find some older F1 on YouTube to rip the audio from and listen to whilst I sleep. A decent idea in theory but the 90s races are balanced towards commentary and I don't think I can sleep with the dulcet tones of Murray Walker in my ear. I need to find some racing without commentary. Is that a thing people are doing?

Since I can remember, we've used htpasswd authentication on sites in staging/pre-production to keep search engines and anyone else out. Mostly search engines. Too many ignore robots.txt to rely on that.

Since I can remember, I have struggled to effectively communicate that the htpasswd popup and any CMS login are separate. It's a dual-layer failing because people complain about not being able to log in, and I invariably assume that they're talking about the CMS, so we go looking in the wrong place and then someone will have a lightbulb moment; "do they mean the htpasswd popup?". And, of course, they do.

So, is this a familiar situation to you? Have you solved it? Care to share your solution because it's driving me crazy. There has to be a way to do this.

If you're reading this and you're one of my clients, I want to stress that this is not a complaint about you. I know it's a confusing thing and I wish there was a better way to either do it or communicate it and that's what I'm trying to achieve here. I've had problems in the past with clients thinking I'm subtweeting them (and they're only sometimes right) and taking offence and I don't want that happening here.

In the autumn, Tabitha will be assigned a musical instrument to learn. I'm going to need everyone who sees this to transmit cello-y thoughts please. At the very least I'll need not-brassy thoughts. I don't need trombones, trumpets, French horns. I might compromise on oboe or clarinet, but I won't be happy about it. And you'd better do it; if you don't I'll know.

This silly cat


This little bozo has been quite amusing lately.

I think I've lost my joy. I don't know when it happened but I haven't felt right for what feels like a long time. Almost nothing makes me happy in any lasting way, and everything seems futile or unappealing.

I've been chalking it up as a temporary thing but it's been going on for too long now so I'm going to find someone to talk to. I've been saying I wanted to for ages, and I tried to self-refer but I'm not vulnerable enough so I need to do it off my own back. I haven't really wanted to spend money recently as it's already been an expensive year and it's not getting cheaper, but buying video games and records to just put them on a shelf isn't working any more. Maybe it never was.

That cloud looks threatening


It was at this point, the farthest from home we were planning to be, that we realised our error.

A very busy couple of weeks


Had a really hectic couple of weeks trying to get a feature finished at work and it'd been pretty much occupying my mind all the time. I'm almost done with it now and apparently I still managed to take quite a few photos?

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.