• A Better Web: Browsing Without Influence

    View counts, upvotes, likes, favourites, retweets. Metrics play a bit part in how content is perceived. This extends to thumbnails and previews for video platforms. I’ve started experimenting with removing as many visible metrics as possible, allowing myself to make my own judgement and perhaps find content that isn’t filtered to my own preconceptions and […]

  • Cool Stuff Found: StableBit DrivePool

    Part of a series of cool or interesting software that I’ve recently started using. I have a tendency to micromanage my harddrives, SSDs and NVME drive to squeeze optimal performance / drive use ratio out of them, juggling Steam games between drives and archiving old documents. However, as each drive is essentially identical in folder […]

  • Fallout Review

    The much anticipated Fallout show finally dropped on Amazon Prime Video, based on the acclaimed games of the same name. Given the games particular visual style, humour and open world gameplay there was a lot interest in how this would translate to a TV series. Thankfully, the creators have done a faithful recreation of the […]

    Fallout Review
  • Demystifying SemaphoreSlim

    Whenever I go to utilise SemaphoreSlim, I stare at the constructor parameters in bewilderment. What exactly is the difference between initial count and max count, do I need both and why? By way of analogy lets break it down. Analogy: The Bouncer Imagine owning a nightclub that can safely contain a number of people at […]

  • Godot Wild Jam 65 Retrospective

    Godot Wild Jam 65 gave the perfect motivation to complete a game idea I’ve had for some time within a challenging time constraint. I didn’t manage to add every idea intended but enough that I felt very satisfied with the results. Both in terms of the game itself and the architecture I ended up with, […]

    Godot Wild Jam 65 Retrospective
  • Grafana Custom Resolved Alert Message

    Grafana templates allow generating custom alert messages based on the alert details. However by default the firing alert and resolved messages are the same, typically taking from the summary annotation. This can make for resolved alerts looking at first glance like they’re still a problem. To make it easier to distinguish between firing and resolved […]

  • Isometric Tile Selection in Godot

    Isometric games have a unique problem that “lower” tiles (with higher Y values) can overlap those that are higher up. Likewise, a tile texture will most likely not be fully contained within the cell that it belongs to. Because of this, when we want to select an item in a cell, we can’t rely on […]

  • Mission: Impossible – Dead Reckoning Part One

    Dead Reckoning Part I continues the M:I formula of high octane action sets, questionably advanced technology and criss-crossing of loyalties, to an almost paint-by-numbers level. Our heroes find themselves against an omnipotent entity that has no clear motivation, and a villain with plot armour enough to match a tank. Although a fine action movie in […]

  • My Resin Printing Process

    Been printing a lot of resin based 3D prints and I figured I’d show my process. Won’t go into unboxing and levelling the plate as there’s plenty of tutorials on that. This will be my setup and how I approach each print from slicing to cleanup with a couple of tips I’ve found along the […]

  • ASP.NET Vue Hot Module Reloading using Vite

    Hot module reloading is a must-have for improving the devops experience. No more convoluted webpack configs and plugins, it all works (mostly) out of the box with lightning fast HMR. The GitHub repo has been updated to use Vite as the base, with a vue-cli branch for those that are using it. The basic principle […]