The gaming and technological musings of a software developer

My 2023 hobby (non) update

This year, despite spending a silly amount of money on Games Workshop products (subscriptions, magazines, 10th edition rules and datacards, a few models), I played precisely two shortend games1. I also spent about 5 hours or so painting.

Given the money spent this is not really acceptable so I need to have a serious ponder about what to do. I figured writing it down here for the world to see might give me some momentum.

A Geordi LaForge meme. The first image of Geordi show him holding his hand out in a gesture of warning, the accompanying text reads 'getting hobby stuff done'. The second image shows Georgi pointing his fingure in a gesture of recognition and encouragement, the accompanying text reads 'getting hobby stuff done.'

Some shortcode magic for embedding toots in Hugo posts.

After a bit of work with Hugo’s templating functions, namely the exceedingly useful getJSON I can now embed Mastodon posts directly in my page!

If you’ve looked at this before you might be thinking “Gee, this is easy, you just use the Oembed API”. Well, I didn’t want to use that so this does it properly, with building actual content out of JSON responses. It does mean I’m in way more control of the behaviour.

S3 and S3-compatible bucket proxy in Dokku

It turns out that running a Mastodon instance, and hooking that instance up to a couple of relays will very quickly fill up the measly storage space on your VPS. To combat that you’ve got 2 options; 1) add more space1 or, 2) hook up some object storage like Amazon’s S3 or Vultr’s, err, Object Storage. Since Mastodon natively supports the latter it seemed like a no brainer to me so I followed the official documentation and in doing so found instructions on setting up an Nginx proxy. To do this optional bit I needed to come up with a Dokku based solution, and this is it.

This deployable Dokku project implements a proxying service that allows you to front S3 Object storage served files from the configured domain. You may want to do this to, for example, retain control of your files apparent storage location and therefore allowing you to move your files later without having to implement redirects to the old content.

It also acts as a content cache and provides a 48 hour TTL. Additionally it implements cache locking to prevent cache slams/stampedes

Finally, it has inbuilt filtering that only allows GET operations to reach the bucket, therefore acting as a rudimentary firewall.

Running your own Mastodon instance (Using Dokku)

If you’re a Twitter user (and even if you’re not) you may be aware that it was recently acquired by one Elon Musk. You may also be aware that he’s gone on a cost cutting rampage that has left people concerned for the future of the platform as mass layoffs and publicised technical changes have resulted in broken functionality or massive shareholder losses.

There is a Twitter alternative, just one amongst many, called Mastodon. It’s a part of something called the Fediverse; which is a silly word that fundamentally groups a large number of applications around something called the ActivityPub protocol. In brief it’s a well defined method for clients and servers to talk to each other about people and what they’re doing. Which is why, over the last few weeks, Mastodon servers (or instances) have seen a massive spike in new user accounts and usage. People are migrating and instance owners have been scrambling to scale up their infrastructure to cope.

You can always join one of the many instances available, or, like I did you can run your own1.