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). πŸ’‰

Unboxed my new vacuum cleaner. First, love how all the packaging material is cardboard and paper: only thing I needed to throw in the bin was a bit of tape. Second, love how this comes with a stand. I was actually wondering where I was going to stow this (it won’t be the living room πŸ˜„).

A cordless vacuum cleaner standing upright on a charging dock in a living room with a floor lamp, curtain, and a couch in the background.

Been listening to The Truman Show soundtrack after watching it again on Friday. One of my absolute favourite soundtracks. So good. 🎡

Amazing what you overhear in cafes. Guy a few metres from me is talking about the bridge repairs he’ll be starting next week. Talk of floating barges up the Yarra, getting jacks and permits, deploying buoys. Facinating to hear.

Loading a bunch of data from my laptop to a database in the US just brings into sharp relief that as fast as the speed of light is, it would be nice if it was faster. Guess I shouldn’t hold my breath. 😏

I’ve never seen a “confirm cancel” box that seemed to have the right sort of copy. Here’s one from Google that feels like they missed the mark:

A HTML pop-up with the title 'Confirm cancel' and the copy 'Do you want to cancel adding this app and lose the progress that you've made? To cancel, click confirm.' and two buttons: the left one with the copy 'Back' and the right one with the copy 'Confirm'

I wonder if it’s better to avoid arbitrary verbs, and use copy involving Yes or No:

A sample HTML pop-up with the title 'Cancel operation' and the copy 'Are you sure you want to cancel this operation? You will loose your work.' and two buttons: the left one with the copy 'No, go back' and the right one with the copy 'Yes, Cancel'

I enjoyed reading Kev Quirk’s post about building a simple journal. I’m still using Day One, but I am still thinking of moving off it. So I was inspired to build a prototype similar to Kev’s, just to see if something similar works for me. Built using Go instead of PHP, but it also uses Simple CSS.

Screenshot of a journal web-page with a text box with the contents saying 'Thanks, Kev, for the idea'.