Yep, I think 22 minutes at 150Β°C works for toasting frozen hot cross buns in a cold oven. Toasty and warm without being burnt or too hot to eat. Might even be able to push it to 23 minutes but I probably wouldn’t go higher than 25.

I kinda wish there was a fan edit of Mad Men that condensed all 7 seasons into one that contain only the avertising aspets of the show. All the domestic, love interest, personal flashbacks, etc. aspects β€” unless they relate directly to the advertisement plot lines β€” I can probably live without.

Message Simulator Client

Years: 2017 β€” 2020

Status: Gone

I once worked at a company that was responsible for sending SMS messages via an API. Think one time passwords when you log into websites, before time-based OTP apps were a thing. And yeah, this did involve some “marketing” messages, although we were pretty strict about outright spam or phishing messages.

Anyway, since sending messages costed us money, we had a simulator setup in our non-prod environments which we used for testing. The features were pretty minimal: basically get the list of messages sent through the API, send a status message back, and simulating a reply from the receiver. The messages were kept in memory and there was no UI: everything was done via a web frontend generated from a Swagger spec.

Being somewhat bored one day, and getting frustrated with the clunky web frontend, I’d though I had a go at making a MacOS client for this thing. After finding my way around Xcode and AppKit, I managed to get something that was usable.

The one and only screenshot I have, which is fitting since this is the one and only screen there was.

It was not a sophisticated app in the least. It only consisted of a toolbar, a client area, and a right sidebar.

The toolbar allowed switching the environment to connect to, such as Dev or Test. I believe the environments were hard-coded, and if I wanted to add a new one, I’d had to change the Swift code. There was a button to clear the messages from the simulator, and one to refresh the list of messages. There was also a very simple search, which simply did an in-memory substring match, but was good enough for finding unique IDs.

The client area consisted of the message ID and message body, and that’s it. Not included were source and target numbers, plus a few other things. These were occasionally useful to me, but not enough to justify the effort it would take to add them to the UI (I was more likely to use the message body anyway).

The right sidebar consisted of the message “details”, which was just the message ID and message content. There were also sections for sending a particular status message, or sending a reply to the selected message.

I always had grand plans for more features, but I couldn’t justify the time. And eventually I decided to leave, and the project was wiped once I returned my laptop.

Despite how bare-bones it was, it was still useful, and something I used most days if I had to work with the simulator. And given that it was my first attempt at a native Mac app, I was reasonably proud of it. So I think it deserves a place in the archives.

Photo Bucket lives, at least in an alpha state. It’s being used for the Folio Red Gallery, which would eventually consist of project screenshots that didn’t make it into the posts themselves. It looks ugly, and there are pretty large feature gaps, but it’s finally serving images.

Lost Album, Found

For the past 3.5 years, I’ve been searching on and off for a particular album: the original soundtrack to the David Attenborough series The Private Life of Plants. This lost album was quite elusive. It wasn’t on any of streaming services, and I couldn’t find a digital copy to buy. The only place I found that had anything was some defunct online music store, archived by the Wayback Machine, that offered a handful of tracks to download.

Archived version of 2ndsight circa 2006 within the Wayback Machine
The album as it appeared in the archived version of 2ndsight. Note the five downloadable tracks.

It was better than nothing, so I download what they had. But I still did searches for the full album occasionally, believing it to be out there somewhere, in one form or another.

Tonight, while doing a few other things, I tried another web search, this time including “BBC” in the search query. And I don’t know what the heck is wrong with the public web searches because I actually got a hit. Turns out that someone β€” maybe the original site owner β€” acquired the domain, put a site together, and uploaded a copy of the album for visitors to listen to online.

The modern version of 2ndsight which had the full version of Music From The Private Life of Plants to listen
The full track list of Music From The Private Life of Plants on the modern version of 2ndsight.

You could imagine that I stopped what I was doing and focused on getting a copy. The site offered downloads but they weren’t completely working. But after a bit of time in the browser Dev Tools, I was able to organise my own. Yes, this may not be completely legal, but I’m justifying it this one time, since thee’s no legitimate way to buy it and no knowing for how long this site would be up.

It took a bit of time, but the full album now lives safely on my music server.

The album Music From The Private Life of Plants as it appears in Alto Catalogue, my music server
Music From The Private Life of Plants safe and sound on Alto Catalogue, my music server.

So the search is over. The long elusive album has been found! πŸŽ‰

Another attempt at working out how best to heat up hot cross buns from the freezer in a cold oven. Tried 150Β°C for 20 minutes. It’s better. I think it’s pretty close. But still not warm enough. Maybe 22 minutes next time.

Holding pattern.

A flock of seagulls flying around some chips on the ground while a person walks by, disturbing them.

Implicit Imports To Load Go Database Drivers Considered Annoying (By Me)

I wish Go’s approach to loading database drivers didn’t involve implicitly importing them as packages. At least that way, package authors would be more likely to get the driver from the caller, rather than load a driver themselves.

I’ve been bitten by this recently, twice. I’m using a GitHub Linux driver to build an ARM version of something that needs to use SQLite. As far as I can tell, it’s not possible to build an ARM binary with CGO enabled with these runners (at-least, not without installing a bunch of dependencies β€” I’m not that desperate yet).

I’m currently using an SQLite driver that doesn’t require CGO, so all my code builds fine. There also exists a substantially more popular SQLite driver that does require CGO, and twice I’ve tried importing packages which used this driver, thereby breaking the build. These packages don’t allow me pass in a database connection explicitly, and even if they did, I’m not sure if would help: they’re still importing this SQLite driver that needs CGO.

So what am I to do? As long as I need to build ARM versions, I can’t use these packages (not that I need an ARM version, but it makes testing in a Linux VM running on an M1 Mac easier). I suppose I could roll my own, but it would be nice not to do so. It’d be much better for me to load the driver myself, and pass it to these packages explicitly.

So yeah, I wish this was better.

P.S. When you see the error message “unable to open database file: out of memory (14)” when you try to open an SQLite database, it may just mean the directory it’s in doesn’t exist.

Deciding where data files should be placed on a Linux system. It’s a bit strange how /var/lib was chosen for this, instead of something like /var/local. I would’ve thought that’d make more sense, much like how binaries are placed in /usr/local.

Shows how much of a romantic I am: it took a 10 minute tram ride before I realised why so many people were carrying flowers. πŸ’

πŸ”— Most People Won’t

Via A Learning a Day by Rohan. It resonated with me as well.

Spent some time this evening working on my image hosting tool. It’s slowly coming along, but wow do I suck at UI design (the “Edit Photo” screen needs some rebalancing).

Screenshot of a browser showing an image admin section with a grid of images Screenshot of a browser showing a single image form with an image on the right and two text fields on the left

It’s hot cross bun season again, and as always, I have to relearn how I heated them up last year. I thought the 15:150 rule would suffice: 15 minutes from frozen in an 150Β°C oven from cold. They were editable, but they weren’t warm enough for my taste. I’ll have to bump it up next time.

Back at Fitzroy Gardens for the PGBC Grand Final. Weather’s absolutely stunning. May even have a chance of winning this year. πŸ†

Shaded avenue of Fitzroy Gardens.

For those who celebrate… πŸ‰πŸ§§

Melbourne street art depicting a dragon and the year 2024

For anyone else who has recently installed Vivaldi, and wants to get rid of the unnecessary padding around the address bar that seems to be the default now, this forum post worked a treat.

Safari, what the fudge do I need to do to get you to recognise that I go to Google Photos quite frequently, so as to stop you from deleting the authentication cookie? Having to constantly login is so unbelievably frustrating! 😑

Reading Greg Morris’s post about self-censoring on his own blog got me wondering why more blogging CMS’s don’t support private posts. Well, I guess I do know why: generally a blogging CMS is to make posts available on the open web. But for CMS’s that are geared towards individuals that just want a place to write, it seems like having the ability to publish a post that is only visible to yourself would be a nice feature. And yeah, I know there are some CMS’s that do support this, but it would be nice to see this on the newer ones that have been released.1


  1. And no, drafts or “in review” posts don’t count; they need to be fully published posts, completely integrated into the timeline and nav that are otherwise hidden from public view. ↩︎

πŸ”— RS.S Joy

This was shared in the Hemispheric View Discord a few days ago. A lot of really good blogs listed (enrolled? As in blogroll?) there. I took a look at it yesterday and was just ducking in and out of blogs for ages.

Must say rebinding the keyboard shortcut for Keyboard’s Maestro’s Clipboard Picker has been quite successful. It’s definitely easier to remember and invoke, and I’m using the clipboard picker a lot more now than I was previously (which was never).