I enabled notifications on Vintage Logo as I wanted to be notified when new logo designs were release. Today I got two nusience notifications prompting me to open the app, the last one raise mere hours after I last launched it. So now I’ve turned off notifications. Why do apps do this to themselves?

Photos of the poor patient, sitting next to the clumsy human. Rest assured, she’s getting a course of pain killers, plus a lot of apology head scratches.

Auto-generated description: A small white and gray bird is nestled between the cushions of a dark leather seat next to one leg of a pair of tanned trousers. Auto-generated description: A small white and gray cockatiel with a prominent crest is perched on a dark leather couch between two cushions next to one leg of a pair of tanned trousers.

Bit of a stressful morning, involving injuries and unplanned visits to the vet. Things are well now, and the tension is starting to dissipate. But what a way to spend the morning. 😮‍💨

Yellow tea-towel on a display with the phrase 'I need a hug' in large letters, followed by 'huge margarita' in small letters. The first three letters of 'huge' were borrowed from the word 'hug'.

Working with PostgreSQL is an absolute joy. Such an amazing database. Just goes to show that the fun tech out there is not always the new and shiny. The battled hardened, featureful, bread-and-butter tools that tends to get overlooked can be just as good (Linux falls into that category as well).

Created using Vintage Logo: a poster with a vintage car and the headline ‘PostgreSQL’ and sub-headline ‘Still Effin’ Amazing’.

👨‍💻 New post on AWS over at Coding Bits: AWS Secrets Manager Cached Credentials Error

Attempting to give head scratches while recording video is more difficult than it looks. 🦜

Speaking of bad UIs, volià: my first attempt at building something with Gio:

A screenshot of a window with the title Gio, a connection header, a left pane showing a NATS message to send, and a right pane showing messages that can be received

It doesn’t do anything now, but I’m hoping this will be something I can use to test NATS. I will say Gio shows promise. Not a huge range of controls to use, but having everything run in a single memory address is nice.

An Unfair Critique Of OS/2 UI Design From 30 Years Ago

A favourite YouTube channel of mine is Michael MJD, who likes to explore retro PC products and software from the 90s and early 2000s. Examples of these include videos on Windows 95, Windows 98, and the various consumer tech products designed to get people online. Can I just say how interesting those times were, where phrases such as “surfing the net” were thrown about, and where shopping centres were always used to explain visiting websites. I guess it was the best analogy one could use at the time.

A staple of Michael MJD’s channel is when he installs an old operating systems onto old hardware1. Yesterday, I watched the one where he installed OS/2 Warp 4 onto a 98 PC. We were an OS/2 household back when I was growing up, thanks to my dad using it for work, and I can remember using OS/2 2.1 and thinking it was actually pretty good. Better than Windows 95, in fact. I can’t remember if I ever used Warp 4, though.

Anyway, while watching this video, and I was taken aback on how bad the UI design of OS/2 Warp 4 was. And really, I probably shouldn’t be throwing stones here: I’m not a great UI designer myself. But I guess my exposure to later versions of Windows and macOS matured my tastes somewhat; where I got exposed to the idea of interaction systems and user experience design (and generally just growing up). Obviously given how new the GUI was back then, many of these concepts were still in their infancy, although if you were to compare these UIs to the classic Mac or even Windows 3.1, I do think there was something missing in IBM’s design acumen. Was it ability? Interest? Care? Not sure. But given that it’s been 30 years, I’m not expecting the OS/2 devs to be able to defend themselves now. That’s what makes this critique wholly unfair.

Anyway, I’d thought I share some of the stills from this video that I thought contained some of the more cringeworthy UI designs2, along with my remarks. Enjoy.

I found this video on the failure of the Star Wars Hotel by Jenny Nicholson to be absolutely fascinating. A great example of Disney enshittification and promising more then they can deliver. Many of her other videos are great as well (I actually went on a binge session over the weekend). 📺

👨‍💻 New post on Go over at Coding Bits: Disabling Parallel Test Runs In Go

My Pile-Up Poker result for today = $840.00. Decent result for a first game.

Pile-up poker result screen

Also, I’m not sure if sharing my actual “solution” is consider a spoiler, so click through to see that.

Some More Thoughts On Unit Testing

Kinda want to avoid this blog descending into a series of “this is wrong with unit testing” posts, but something did occur to me this morning. We’ve kicked off a new service at work recently. It’s just me and this other developer working on it at the moment, and it’s given us the opportunity to try out this “mockless” approach to testing, of which I ranted about a couple of weeks ago (in fact, the other developer is the person I had that discussion with). And it’s probably no surprise, but I’m finding writing tests this way to be a much nicer experience already.

And I think I’ve come to the realisation that the issue is not so much with mocking itself. Rather, it’s the style of testing that it encourages. When you’re testing against “real” services, you’ll left with treating them as a black box. There’s no real way to verify your code is working correctly other than letting it interact with these services as it would, and then “probing” them in some way — running queries, waiting for messages to arrive at topics, etc. — to know whether the interaction worked. You can’t just verify this by intercepting the various calls made by the service (well you can, but it would be difficult to do).

There’s nothing about mocking that inhibits this style of testing. You can use mocks to simulate a message broker by storing the messages in an in-memory list, for example. What it does do, however, is make it easier to write tests that simply intercept the calls of the service and verify that they were made. It’s less upfront work than setting up a real client, or simulating a message broker, but now you’ve tied your tests to your implementation. You may feel like you’ve saved time and effort now, but really you’ve just deferred it for later, when you need to fix your tests when you’ve change your implementation.

I know this is stuff I said before, so I’ll just stop here, and end by saying that I’m excited to seriously try out this approach to writing unit tests. Is it a better approach than using mocks? I guess time will tell. It’s been my experience that it’s when you need to refactor things in your service when you find out how good your tests are. So I guess we’ll check back in about six months or so.

I’m not on Threads but I do click through sometimes to post shared on Mastodon, and I’m a little confused by the web-based video player. It auto-plays, which is annoying enough, but it does so with the sound off and there’s no way to pause or scrub back to the beginning. Is that by design? Do I just have to always refresh the page whenever I want to watch something just so I don’t miss the beginning? Very strange.

Must say I’m really enjoying M. G. Siegler’s new blog Spyglass. I’ve liked pretty much every post I’ve read so far. Definitely worth subscribing to.

“What about your Savoys, Mrs. D?”

Auto generated description: A supermarket shelf displays various brands of crackers, including Arnott's Jatz, Ritz, and Clix, with a price tag indicating $5.50 for one of the products.

A black swan event.

(And yes, I took this photo just so I can use this caption).

Auto generated description: A black swan with a red beak is swimming in a body of water near a concrete step.

Returned to Tuggeranong this morning for breakfast and a walk around the lake. Really enjoy going to “Tuggers” when I’m in ACT. I can’t quite explain it, but I always get New Zealand vibes whenever I visit.

Auto generated description: A tranquil lakeside scene features autumnal trees, still waters reflecting the landscape, and a backdrop of rolling hills under a cloudy sky.

If Slack’s looking for features to add, my vote would be for personal “annotation” messages in threads, similar to what Hey mail has. Many a time I receive a support request as a Slack thread, and it’d be nice to add notes such as customer IDs as a message that only I can see.

Here’s a mockup:

A concept mock-up of a Slack thread showing interaction between a support person and the author, with the private note message highlighted in yellow with the disclosure 'only visible to you'

Edit: I knew I talked about this before. And looking through On This Day, I found this post, where I professed my wish for FastMail to add the same feature. Probably a good hint that such a feature should be table steaks for any system involving other people.

New offering at the Cockatiel Cafe: the “breakfast bar”. 🦜

Auto-generated description: Two cockatiels are standing on a kitchen bench scattered with seeds, with one bird near the edge and another closer to the middle.  Auto-generated description: Two cockatiels, the same two shown on the previous photo, are eating scattered seeds on the kitchen bench.

👨‍💻 New post on Databases over at Coding Bits: PostgreSQL, pgx, sqlc and bytea