The things you can do with Docker Compose!

28/11/2024

I learned some super cool stuff I should probably have known, but sometimes it's just easier to come up with your own tooling than it is to learn how to do things properly!

Photos

17/11/2024

A few weeks' worth of snaps.

I've been a moderate fan of Death Cab for Cutie for a long time; have always said that I could make one great record of tracks I select from each of their albums. I prefer The Postal Service.

This week, I'm not really sure why I say that. I've been going back through their discography because Summer Skin got stuck in my head and these records (Plans, Transatlanticism, Narrow Stairs, so far) are all total gems. Why have I spent so many years thinking these records only have four tracks? I'm annoyed with myself but there must be a reason.

It's true that there's some incredible standout tracks; Transatlanticism, in particular, has "We Looked Like Giants" which has a vocal melody that makes me want to do a little cry. It also has what sounds like a super smart rhyme - "we looked like giants / in the back of my grey sub-compact / fumbling to make contact" that reminds me of "even the sturgeon and the ray / get the urge and start to play" (which, I think, is my favourite rhyme ever). These are all brilliant records, though, and I feel remiss for having sold them short for so long.

Still I have some nice stuff to listen to so weirdly feels like I'm being rewarded for being stupid.

Also I know I'm terrible at writing about music. Once upon a time I thought I could be a music reviewer; wrote one review and gave up. I am bad at that but I still love music and talking about it and I have nowhere else to do that!

ArcTanGent 2024

18/08/2024

This is probably going to be my last ArcTanGent, at least for a little while. It’s an expensive indulgence just for me, it comes right in a prime holiday timeslot, and I just fundamentally don’t enjoy the concept as much as I used to. I still had a great time this year and saw some amazing performances, but I think it’s time to quit whilst I’m ahead.

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.

The lost art of the tactical, permissive skive

02/06/2023

It's important, every now and again, to treat yourself to a bit of naughtiness. A cheeky little Friday PM skive when you've already finished your todo list and some of next week's, and you've let everyone know you're stepping out. Beautiful.

Week off

06/08/2022

Have run the emotional gauntlet this week. I would prefer better control of my emotions I think.

Little Keyboards Reviung41

23/08/2021

I've wanted one of Little Keyboards' kits for ages, but they were always a bit spenny. This Reviung41 Comptroller case was actually pretty reasonable. Especially for the quality.

The Illustrated Mum

12/06/2021

I've made some very satisfying discoveries whilst reading bedtime stories to Tabitha, but this one was probably the most emotionally draining.

Details

07/05/2021

This week I needed to make a really big form. It’s really big. Most people don’t like forms, but I’ve always been a bit of a contrarian, and my approach for saving user input on this form got me thinking about how much effort goes into things people take for granted. In code, I mean. Life is way out of scope for a blog post.

Walk

11/07/2020

Ugh. Today. This post contains heavy spoilers for the first The Last of Us game. I am the last person to finish this game, so I suspect that it doesn't matter. But still.

I love GraphQL

19/04/2020

I've been using GraphQL with Craft since I redeveloped this site, which is quite a while now. But running someone else's GraphQL API is like training wheels.

"It's hard to find the words to express my debt"

13/04/2020

Tories are great at creating NHS-related debt. Cut to a year after Coronavirus is under control and then we'll see if they're so earnest and committed to supporting the NHS

The new jasper.tandy.is

17/11/2019

Removing features, trying new things, improving old skills.

Media Diet

09/05/2018

Jason Kottke does these posts where he lists all the stuff he's been reading or watching or whatever

One of my favourite things to ever happen

23/01/2018

Writing it down to remember it later

Stress

18/02/2017

Aside from the obvious, my least favourite thing about stress is how it completely silences the little creativity I have

On Approaching a Toddler

08/04/2016

Parenthood is a curious thing. As Charlotte grew more and more pregnant, a bizarre thing happened: people felt compelled to share their observations on her physical appearance, almost constantly.

Here's the thing about ads

07/04/2016

I'm mad at Wired. I'm also mad at ads, but not because I inherently hate advertising - because I hate all the underhanded, sneaky snooping that ads do to show relevant ads to you.

Topknots and Parachute Pants

20/02/2016

I have always struggled with body image and self worth. The two together, I mean. Separately, those
Next