Skip to main content



Why I like and recommend using TypeScript
My favourite articles of 2023


Five reasons why I write
Better word counts and reading time in Eleventy (11ty)
How to find backlinks using Eleventy (11ty)
I've switched to Eleventy (11ty): my thoughts
I have joined the IndieWeb
Ghosts live in the ground: debugging an electronic circuit
Ten years of Capture The Flag
Make games not engines: why I'll be using Godot engine
Conquer: a deep-dive into my Minetest mod jam entry
Thoughts on native Android development
Bing (and DuckDuckGo) shadow banned my website
3D-printed IoT lock box using ESP32
My favourite programming and game dev articles
SDL_GameController: Making gamepads just work


Large spike in Minetest traffic caused by YouTube video
Minetest on Steam Deck: usage and review
Setting up fingerprint auth on Kubuntu (Thinkpad X1)
Minetest Mods: my first Android app
Devkit CLI: Upload your game to Steam Deck from your dev computer
Steam Deck is Awesome
Why I created Renewed Tab, my New Tab extension
Creating worker NPCs using behavior trees
ChatGPT: An AI that can write Minetest mods... kinda
Developing ContentDB
Tin Mining - Ludum Dare 48 post-mortem
IoT Plant Monitor using ESP32


Securing Markdown user content with Mozilla Bleach


ForumMate: My return to Android app development
Writing a Lua sandbox using sol2 / sol3
Extending sol3's implicit type conversion
Drop shadows in SFML
Android: Complete, generic data-binding RecyclerView adapter
Why I switched from GitHub to GitLab
A Comparison of SFML GUI Libraries: TGUI vs SFGUI vs ImGui


Rendering a topdown world with layers and z-levels using SFML
Getting rid of YouTube Music's "Are you still listening?" dialog
C++: Self-registering functions using macros for test libraries
Porting C++ programs from Linux to Windows using vcpkg, CMake, and Visual Studio
RimWorld: Create timelapse from Progress Renderer on Linux


Raytracer and Rasteriser
Interactive Commit Sorter for Changelogs
Finding and copying DLLs from MinGW-W64 directories to bin directory
Rubix: My Simple Kernel written in C for arm


Minetest at Freenode Live 2017
Install Autodesk Maya on Ubuntu 17.04
RVWP: Multiplayer Topdown Sandbox Game in C++
Mingw-w64 and CMake: unrecognised option -rdynamic on Ubuntu


OpenCV: compile images (Mats) into a strip
How to emit a single particle using SFML's Thor Particle System
How to center a SFGUI window (sfg::Window)
Setting up a MonoDevelop solution and project for RimWorld modding
Install Monodevelop to build for .NET 3.5 (using Mono 3.14) - RimWorld
Move private repos from Bitbucket to GitHub
Xubuntu / Xfce sync whisker menu favourites
Dual boot Ubuntu on ASUS X555LA UEFI laptop alongside Windows 10
Linking a user account to an external phpBB forum
Getting user profile data from external phpBB forums
1st Semester of University


Employee Task Management System
Convert folder of images to PDF with filenames
3D Projection


Lotka Volterra - Predator Prey
Lichess Widgets
Bytecode, Compilers and Interpreters