Post-Christmas lunch chill out with Rico. πŸŽ„

A person is sitting on a couch with a cockatiel perched on their shoulder and a decorated Christmas tree in the background.

Successfully moved my PeerTube instance over to Hetzner and Coolify, allowing me to shutdown the Linode instance I was using. Net cost savings to me is $0.00, but I’m hoping to use the new Hetzner server for more than just PeerTube.

2024 Song of The Year

It’s Christmas Eve once again, which means it’s time for the Song of The Year for 2024. Looking at the new and rediscovered albums for the year, there are quite a few to choose from.

The runners up are pretty much all from Lee Resevere, a new artist I’ve started listening to, and includes:

But there can only be one winner, and this year it’s Oxygene, Pt. 20 by Jean-Michel Jarre. πŸ‘

 A globe is depicted with a skull emerging from its surface, set against a blue background with the text 'Jean-Michel Jarre Oxygene Trilogy' above it.

Oxygene is actually an album in my regular rotation, but I always stopped listening to it after Part 19. The strange organ at the start of Part 20 put me off. But one day this year, feeling a little down, I decided to work my way through it and give it a listen, and after the 30 or so seconds, it turned into quite a lovely piece. A nice contrast to the rest of the disk, and a suitable conclusion to the album itself. I’ve even grown to like the organ at the start.

Honourable Mentions this year include:

An actually bumper crop this year in terms of music. Let’s hope 2025 is just as good.

That’s it! I’m never going to use a framework that uses Webpack or installs more than 5 Node dev dependencies. Why? Because every time I check it out to work on it, all these dependencies break, and I’m left to spend hours updating them.

Never again! 😑

πŸ”— Lens

A nice looking meta tag checker by Robb Knight. Finding a good meta tag checker that’s not riddled with ads is difficult. This might be the one I’ll use going forward. I also liked his blog post on how he built it.

Thought I’d have another go at looking at BoxedWine for making an online archive of my old Delphi projects. They’ve been some significant improvements since the last time I looked at it. They don’t run fast, but that’s fine. As long as they run.

Auto-generated description: A digital card game is being played on a computer screen, featuring several cards displayed in a grid layout. Auto-generated description: A game screen of Tetris is displayed, showing falling blocks and score details on the right side.

It’s a shame that there’s no MacOS release for Alan Wake. I tried playing the Windows version in Crossover yesterday on my M2 Mac Mini, and even with all the graphic settings set to their lowest, I was getting frame rates in the single digits.

I wonder if we could convince Ben to order another run of Stratechery mugs shaped like the one he drinks from. I really like my Stratechery mug β€” it's one I often use β€” yet the mug he describes here is intriguing.

One of these days, when I see a car idling while the owner is outside picking up coffee, I’m going to walk over there and turn it off. Or steal it, depending on how annoyed I am. 😏

That Which Didn't Make The Cut

I did a bit of a clean-up of my projects folder yesterday, clearing out all the ideas that never made it off the ground. I’d figured it’d be good to write a few words about each one before erasing them from my hard drive for good.

I suppose the healthiest thing to do would be to just let them go. But what can I say? Should a time come in the future where I wish to revisit them, it’d be better to have something written down than not. It wouldn’t be the first time I wished this was so.

Anyway, here are the ones that were removed today. I don’t have dates of when these were made or abandoned, but it’s likely somewhere between 2022 and 2024.

Interlaced

This was an idea for a YouTube client1 that would’ve used YouTube’s RSS feeds to track subscriptions. The idea came about during a time when I got frustrated with YouTube’s ads. I think it was an election year and I was seeing some distasteful political ads that really turned me off. This would’ve been a mobile app, most likely built using Flutter, and possibly with a server component to get this working with Chromecast, although I had no idea how that would work.

This never got beyond the UI mock-up stage, mainly because the prospect of working on something this large seemed daunting. Probably just as well, as YouTube solved the ads problem for me, with the release of YouTube Premium.

Auto-generated description: A smartphone interface mockup displays a channels list with annotations highlighting features like a navigation tab, subscription indicators, filter options, and a Chromecast button.

Red Crest

I thought I could build my own blogging engine and this is probably the closest I got (well, in recent years). This project began as an alternative frontend for Dave Winer’s Drummer, rendering posts that would be saved in OPML. But it eventually grew into something of it’s own with the introduction of authoring features.

I got pretty far on that front, allowing draft posts and possibly even scheduled posts (or at least the mechanics for scheduled posts). One feature I did like was the ability to make private posts. These would be interleaved with the public ones once I logged in, giving me something of a hybrid between a blogging CMS and a private journal. It was also possible to get these posts via a private RSS feed. I haven’t really seen a CMS do something quite like this. I know of some that allow posts to be visible to certain cohorts of readers, but nothing for just the blog author.

In the end, it all got a bit much. I started preparing the screen for uploading and managing media, I decided it wasn’t worth the effort. After all, there were so many other blogging CMS’s already out there that did 90% of what I wanted.

Reno

As in “Renovation”. Not much to say about this one, other than it being an attempt to make a Pipe Dreams clone. I think I was exploring a Go-based game library and I wanted to build something relatively simple. This didn’t really go any further that what you see here.

Auto-generated description: A grid of dark squares is displayed on a computer screen, with one square featuring two horizontal white lines.
Auto-generated description: A grid of interconnected circuit-like lines on a dark background.
Tileset free for anyone who wants it.

SLog

Short for “Structured Log”. This was a tool for reading JSON log messages, like the ones produce by zerolog. It’s always difficult to read these in a regular text editor, and to be able to list them in a table made sense to me. This one was built for the terminal but I did make a few other attempts building something for this; one using a web-based GUI tool, and another as a native MacOS app. None of these went very far β€” turns out there’s a lot of tedious code involved β€” but this version was probably the furthest along before I stopped work.

Despite appearing on this list, I think I’ll keep this one around. The coding might be tedious, but I still have need something like this, and spending the time to build this properly might be worth it one day.

Auto-generated description: A terminal window displays log messages with levels and a table summarizing error, ID, level, message, and time values.

Miscellany

Here are all the others that didn’t even get to the point that warranted a screenshot or a paragraph of text:

  • s3-browse: a TUI tool for browsing S3 buckets. This didn’t go beyond simply listing the files of a directory.
  • scorepeer: An attempt to make a collection of online score-cards much like the Finska one I built.
  • withenv: Preconfigure the environment for a command with the values of an .env file (there must be something out there that does this already).
  • About 3 aborted attempts to make a wiki-style site using Hugo (one called “Techknow Space” which I though was pretty cleaver).

I’m sure there’ll be more projects down the line that would receive the same treatment as these, so expect similar posts in the future.


  1. Or possibly a Peertube client. ↩︎

I’m happy that Ludo Studio managed to secure a deal for a feature-length Bluey film, plus attractions in Disney parks. But it’s just another example of how the ABC cannot keep nice things. It happened to Kath and Kim too.

Maybe it’s enough that it’s role is more of a launch pad for good media.

Eternal Comeng.

A utility pole is adorned with various stickers, including a red and white sticker of a train.

Oof! Almost deleted my Obsidian notes while cleaning out my work laptop. Fortunately it was a simple move to recover. Ended the year with 581 notes, totalling 8.7 MB. Most of these are Daily Notes, of which 214 were created this year. Thus ends the second full year of using Obsidian for work.

Counting down the hours now. 3 to go…

Writing documentation for tools that others will need to run over the Christmas break. I remain convinced that documentation is a great way to spot the usability flaws in the tools I write. The question then turns into one of priorities: should I fix the tool, or just explain the flaws in the docs?

I’m not a fan of the changes Google made to their Weather app. It assumes you’re interested in saving every location you search for as a favourite, which is not how I use search. And horizontal scrolling for the 10 day forecast? With no date?

A 10-day weather forecast shows a mix of sunny and rainy days, with temperatures ranging from 13Β°C to 34Β°C.

No, sorry. This is a step backwards in design.

Spending the last few days of the year feeding the dragon. My instructions are clear: I must feed the dragon. The dragon must be fed. At no point should I allow the dragon to go hungry.

(“Dragon” here refers to the system I’m running migrations on, a.la. this Rec Diffs episode)

For @vincent.

A small decorated Christmas tree stands in a living room near a window with sheer curtains.

Lot of interesting thing scheduled for Go 1.24, but this one looks particularly exciting:

The new Text function can be used to generate cryptographically secure random text strings.

You’d be surprised how often I need to generate random strings. Doing so, without installing a third-party package, is always a bit involved; either generating a UUID and stripping the dashes, or doing a Base64 on a random byte slice. To be given a function to do this from the standard library will be most welcome.

If there’s one thing I learnt from all the database querying I’ve been doing today, it’s that all the parallelism in the world doesn’t come close to performing as well as just being physically close to the data.