Victoria 2 is a 2010 grand strategy game by Paradox Interactive. It's a game focused on the Victorian era from 1836 to 1936, witnessing monumental events in history such as the American Civil War, Scramble for Africa, and the First World War. For the past few years, I've been volunteering my time in the development of The Third Age , a mod that converts the game into the world of Middle Earth.…
For the past few years, I've been using Obsidian as my primary note-taking app. It's been pretty great so far for recording my thoughts and building a personal knowledge base. Previously, I relied on OneNote during university, but eventually stopped due to general dissatisfaction with Microsoft. I switched to Notion for a few years, but frequent downtime and its always-online requirement meant…
A persistent and annoying issue affects Amazon Web Services (AWS) Lightsail instances: they shut down seemingly randomly after only a few hours. The instance seems fine for an hour or two, then suddenly shuts itself down. This problem is very visible on the web, for example: on AWS rePost , Reddit , and StackOverflow , though none offer a full solution. The Lightsail metrics offered give no clues…
Found at mystery.knightlab.com , the SQL Murder Mystery game is a fun little exercise in using SQL to solve a murder mystery. The game is good for both beginners and masters alike, since there is no required way to solve the mystery and there is no time or query limit preventing your exploration. I highly recommend anyone with any SQL skills to give it a go. The rest of this article will serve as…
Let's say you're in a software engineering team with daily stand-ups and a sprint board with tickets up. How should you run the daily stand-ups? It may be tempting to default to the classic "round-the-room" approach: going from person to person, asking each what they worked on yesterday, what they're doing today, and if they have any blockers. But in reality, this often does not work. Instead,…
Imagine you have a complex multi-faceted GraphQL query: query(id: String) { thing(id) { foo { ... } bar { ... } } } In some GraphQL resolvers, this might be transformed into SQL queries on a database like so: SELECT * FROM foo WHERE id = $id; SELECT * FROM bar WHERE id = $id; This may be fine if we always need data from both foo and bar. But if we do not always need data from both sources, it…
Say you have a Swagger or OpenAPI specification like so: openapi: 3.0.3 info: title: foobar version: 1.0.0 paths: /foo: get: tags: - foo responses: '200': description: Success /bar: get: tags: - bar responses: '200': description: Success If you wanted to update your documentation so that /bar appeared first before /foo , the easy and obvious solution would be to just copy and paste the /bar…
Despite clearly not being a game engine, ReactJS has a lot of potential for being used to create simple HTML based games - in fact, one of the first use cases React introduces to you in its tutorials is using the React framework to create Tic Tac Toe . So say you want to build a game in ReactJS and upload it to itch.io . If you started your project by running npx create-react-app , then ran npm…
The GMTK game jam was held between June 11th and June 13th this year. It was one of the largest game jams of all time, with 5'761 games built during the weekend. I endeavoured to create a game from scratch, writing all the code myself and making all the assets with what small amount of artistic talent I have. For the SFX and music, a fantastic composer offered their services - something I greatly…
I think every software developer, or even everyone entirely, should have a personal website. They are great opportunities to learn new technologies, get your writing online to where people can see it, and give back to the online community no doubt you rely on. I've had a personal website for a few years now and I've been using a static site that's been manually maintained and curated, which hasn't…
RSS feeds are a beautiful and wonderful open standard that anyone can, and should, utilise on their blogs, websites, or anything else. The standards RSS follows are reasonably flexible, but there is another aspect to RSS that is incredibly inconsistent across all use cases. That inconsistency is the location of the RSS feed file and the name of that file. A common idea seems to be putting a file…
As coronavirus destroyed the world and sent everyone into social isolation, I decided to utilise the time indoors to learn Xamarin, a Microsoft .NET framework that allows you to create cross-platform Apps easily. I saw there was a Xamarin 101 tutorial online that talked you through creating a notes app, and, having walked myself through it, I found myself with the desire to improve the app in that…
1.7 million Australians are unaware that they may already have kidney disease? How do we reach as many of these people as possible and urge them to get a kidney health check before it is too late? That is the question asked by Kidney Health Australia at the Hacking for Humanity hackathon organised by Girls In Tech which I tackled alongside four team members. Our solution was a automated chat bot…
Welcome to my new website, this is it. It's a beautiful, dark moded, minimalistic mess, and it's mine. This static site will hopefully fill up over the next few years with the wonderful accounts of my existence. I needed a new website, to replace my old website, [1] for a few different reasons: My old wesbite used WordPress, [2] which is boring, and the fact that I used WordPress was a crutch I…
The lifespan of a floppy disk is 20 years, the lifespan of a magnetic tape 10 years, and the lifespan of some hard disks is only 5 years. By comparison, the oldest books in the world are thousands of years old, as old as civilisation itself, coming from the ancient kingdoms of Sumeria and Egypt. Evidently, books are much more durable than even our most durable technological storage. Therefore, do…
In the March Southampton Code Dojo, I was tasked with creating fireworks within the 2 hour time limit and, for a change from seeing the usual JavaScript or Python entries, I decided to do this using Unity. The scene consists of a fireworks spawner game object which randomly instantiates firework rockets around itself which move upwards and, after a random amount of time, explode. The firework…
Over the past weekend, I participated in a Game Jam hosted at the University of Southampton during which I helped develop from scratch a game in Unity with four others. The game was called Jesticles and its basic premise was to walk around outside a nightclub, stopping fights between NPC's, and directing the agents across the road onto a bus, hopefully avoiding them being ran over. The game name…
In the February Code Dojo, Jemma and I made an ASCII art converter in Java that takes an image as input and converts it into a text document which, when zoomed out far enough, imitates the original image. From left to right, the output text document, the input image, and the input image converted to greyscale. This was done by first iterating over every pixel in the image after it has been…
At the University of Southampton Global Game Jam 2016 event, I helped develop an isometric real time strategy town management game where you must balance resource management with your relationship to the gods. I joined a team which participated last year and used a game engine that was developed in last years game jam. The finished product was called Vikings vs Gods: Cheese fortress and was…
After Googling this question and being disappointed at how much work was needed to find a good answer, the only useful post was this old post [1] for Word 2007, here is a definitive blog post about the topic. This post assumes use of a Microsoft Word 2013 though the method would work on almost any word processor. The by far simplest method is to save the document as a webpage. This is done by…