I’ve been listening to Marco talk about his user’s response to the Overcast rewrite with interest. I have no comment to make about the rewrite itself β€” I don’t use Overcast since I don’t use an iPhone β€” but listening to Marco on the latest episode of Under The Radar come to realisation that Overcast is now at a stage where he cannot only consider it his own is admirable. To have created something that has grown to be bigger than yourself, where the best thing you can do for it is to say “I may have started this, but this is no longer mine”, is a testament to how large and successful Overcast has been. If only we all could say we had that chance to do likewise in our own careers.

Bought my blog-roll up to date to my RSS subscriptions. It’s clear that it’s been a while since I last updated it. They’ve been a couple of removals but quite a lot of additions, many of them blogs that I’ve been reading for months.

First day of spring means the first day of swooping season. Chalk one noisy miner up for me on the swoop-o-meter please. πŸ‘·β€β™‚οΈ

Speaking of musical instruments: new toy acquired. My parents were cleaning out some clutter and found this ukulele. I always imagined them to be little more than small guitars, so I was quite surprised when I saw how they were tuned, with the outer strings being higher than the inner ones.

Auto-generated description: A small, wooden ukulele with four strings is lying on a textured, light blue surface.

Hot take: bagpipes actually sound pretty good.

Sock photo of bagpipe players on a British town with the caption β€˜#pipe_those_bags’ near the bottom.

Finished reading: Magician by Raymond E. Feist. It’s been a while since I read this, but it’s an absolute favourite. πŸ“š

While listening to the interview with Ben Thompson on How I Write, a thought just occurred to me: I was never interested in learning about writing online until I started writing online.

I may have had a passing fancy in the topic before I started writing here. I was a reader of Stratechery back then, among many other blogs, so if this interview cropped up back then, I probably still have listened. But I doubt I would’ve been as engaged in the topic, let alone been interested in seeking more about it. It’s certainly wasn’t something I found myself seeking out at the time.

Now, I lap this stuff up whenever I see it. The subject on talking about keeping a blog, publishing a newsletter, or working on the web is catnip to me, and if I find someone discussing the topic, I’m immediately attracted to them.

I guess there’s a lesson here about how being is downstream from doing. The only question that remains is whether what I write here can be considered writing? πŸ€”

About Those STOP Messages

John Gruber, discussing political spam text messages on Daring Fireball:

About a month ago I switched tactics and started responding to all such messages with β€œSTOP”. I usually send it in all caps, just like that, because I’m so annoyed. I resisted doing this until a month ago thinking that sending any reply at all to these messages, including the magic β€œSTOP” keyword, would only serve to confirm to the sender that an actual person was looking at the messages sent to my phone number. But this has actually worked. Election season is heating up but I’m getting way way fewer political spam texts now. Your mileage may vary, but for me, the β€œSTOP” response works.

As someone who use to work for a company that operated a SMS messaging gateway, allow me to provide some insight into how this works. When you send an opt-out keyword β€” usually “STOP1” although there are a few others β€” this would be received by our messaging gateway, and your number would be added to an opt-out list for that sender. From that point on, any attempt by that sender to send a message to your number would fail.

Maintaining these opt-out lists is a legal requirement with some significant penalties, so the company I worked for took this quite seriously. Once, the service maintaining this list went down, and we couldn’t know whether someone opted-out or not. We actually stopped all messaging completely until we got that service back up again. I still remember that Friday afternoon (naturally, it happened on a Friday afternoon).

Now, if memory serves, there was a way for a sender to be notified when an opt-out occurred. This was mainly for customers that decided to take on the responsibility β€” and thus legal accountability β€” of maintaining the opt-out lists themselves. There were a handful of customers that had this enabled, and it was something that we had to enable for them on the backend, but most customers simply delegated this responsibility to us (I can’t remember if customers that had this feature off could still receive opt-out notifications).

Finally, there is a way, a variant of the “STOP” message, in which someone could opt-out of any message sent from our gateway, basically adding themselves to a global opt-out list which applies to everyone. The only way someone could remove themselves from this list was to call support, so I wouldn’t recommend doing this unless you know you would never need another 2FA code via SMS again.

Addendum: The customer never had access to these opt-out lists but I believe they could find out when a message they tried to send was blocked. This is because they would be charged per message sent, and if a message was blocked, they would receive a credit. There was also an API to return the status of a message, so if you knew the message ID, it was possible to call the API to know whether a message was blocked.


  1. I can’t remember if this is case insensitive, although I think it is. ↩︎

Immunised: whooping cough, diphtheria, and tetanus. πŸ’‰

MacOS has a strange way of choosing which window gets focus when switching apps using Cmd+Tab. Instead of it being the previously focused window, or the window closest to what you’re switching from, it selects the left most one. Has it always been this way? Feels like something that can be improved.

It’s been 12 years since I last used Mercurial. And yet, I’m still typing git branch new-branch and expecting to change to the new branch automatically.

Added a tag in a CMS with a case that differs from the others. The tags are case-insensitive but also case-preserving, and given that I can’t just delete or rename the tag, I don’t know how I can fix it (I’ve tried a few things). I wonder if I could ask the developer to go into the DB for me? πŸ€”

It just occurred to me that the proverb “life is not all beer and skittles” is referencing the British pub game, not the hard-shell lollies.

Got praised for a help guide I wrote at work for how to use an admin panel. Shame that help guides tend to have a half-life shorter than software if they’re not kept up to date. All those UI redesigns (it’s an admin panel for a Google product so who knows how long this guide would last unmodified).

So weird seeing ads for podcasts and podcast player apps on public signs and billboards. I’ve been seeing them everywhere on my commute today. Curious to know why the sudden interest in pushing them.

Surprising how much of working with TLS certificates is just dealing with PEM files.

A meme of a blackboard with the heading 'Things for today', then the items '1/ Decode from PEM', '2/ Encode to PEM', '3/ Decode from PEM', '4/ Encode to PEM' written in white chalk. The first two items are crossed off.

πŸ”— Slop is Good

I agree with Craig Hockenberry here. The trust of any one site essentially depends on what is published there. And as more big-tech platforms embrace AI slop, the less you can trust those platforms to surface reliable information. It’s like that proverb of someone being only as good as their word. If one was to replace the concept of a person with a domain name, then I reckon you could say the same thing about websites.

Huge performance gains in a DB loading tool I am working on. What took around 2 hours last week now takes less than a minute. The secret: parallel go routines, a DB connection pool, and query batching. Nothing fancy, but definitely worth the work to add them.

Spent most of the day racking my brain as to why I couldn’t get this mutual TLS setup working. Was it that the server CA pool was wrong1? Was it that the client cert didn’t include the root CA? Should it? Turns out the root CA pool was expecting the certificates to be encoded as PEM data, and I was decoding the PEM first.

This is what happens when all your cryptography functions only work on byte slice. πŸ˜•


  1. I did also get the client CA pool wrong. ↩︎

Whooping cough immunisation booked. Apparently the local chemist does it, which means no need to make a doctors appointment, which is great (the GP is a bit of a hike away). πŸ’‰