Programmer / Developer — projects, experiments and write-ups from the last decade.
Food Tracker is a fully local Android food diary. It records what I ate at breakfast, lunch, dinner and as snacks, plus exercise, weight and BMI, and…
A desktop CNC machine designed from scratch in FreeCAD and built from 2020 aluminium extrusion, MGN12H linear rails and lead screws, driven by GRBL…
A self-hosted platform on a handful of Raspberry Pis that gives me secure remote access to everything at home, browser-based desktops, a single login…
tiledle.com is a Wordle-style word game that doesn't stick to five letters: each puzzle is a 4 to 8 letter word, with more attempts for longer words…
A webcam points at a physical Connect 4 board and the program works out the state of the game: where every disc is, which colour it is, and whether…
Turns a document into a set of spoken audio files, one per sentence, and gives you a small web console to upload documents and listen to the result…
Ennoea is a web tool for viewing application and infrastructure architectures in a 3D space. Applications are boxes, groups are translucent bounding…
A Steam Workshop mod that scripts The Mind (Wolfgang Warsch, 2018 Spiel des Jahres nominee) in Tabletop Simulator. Players work as a team to play…
Tabletop Simulator scripting for the card game Animalchemists, built on artemisww's original table upload. Players craft spells from ingredient…
Termpet is a Tamagotchi for the terminal, written in ANSI C with ncurses. You hatch a pet from a form, its hunger, happiness and health tick away in…
2afraid2ask is a basic polling website which was made during the HackNotts Hackathon. The purpose of the site is to create small stupid questions…
This challenge was picked from the r/dailyprogrammer subreddit. The challenge is to generate Julia set fractals from the complex number plane and…
This is a basic password generator built using javaFX. The passwords are created using the character list specified in the TextArea, with a length…
This project is a simple way of creating custom window decorations in JavaFX. The premise is that a BorderPane becomes the root node in an…
This is a Microsoft Excel spreadsheet which I made in order to track my progress at university. So far, the spreadsheet can show you what you could…
A javascript tool to highlight regex pattern matches using HTML and CSS. Whilst this tool is primarily aimed at programming languages syntax…
A simple note taking app using googles material design philosophy. The premise for creating this app was to simply make a new note managing app which…
This project was created as part of a piece of coursework for a Virtual Worlds module. In this module we had to create a 3d scene using blender in…
The SOM Color Sorter is an example of Kohohen's Self-Organising Map. The SOM will alter its weights in order to group together similar inputs. Once…
The idea behind this small challenge was to create a mastermind game for a user to play. The original concept was to allow for just textual inputs,…
This Evolutionary Algorithm is a very simple one in which a string of characters will eventually be evolved towards, starting from a random string of…
This was a challenge that I posed to myself after learning all about Linked Lists and how they might be implemented. The challenge was to create a…
This challenge was picked from the r/dailyprogrammer subreddit. The challenge posed was to make a copy of the fallout hacking mini-game by pulling…
This project is a congregation of some of the designs and animations I was playing with when creating my Web Technologies coursework. The first one I…
LWJGL is an openGL variant for Java programming, this engine is designed to use LWJGL in order to open and display 3D models as well as other various…
A basic 3D engine to render a model into an openGL context. This engine is capable of reading both OBJ files as well as plain MODEL files (which only…
This android app was made as a follow up from the Japanese Dictionary website. It was made so that I can access the Japanese site from anywhere and…
The Japanese dictionary was created so that I could track what words I had currently learnt when I was studying Japanese. It also turned out to be a…
Difficult Dungeons is a small yet difficult platformer game made in the Processing language. The aim of Difficult Dungeons is to just simply get to…
Tab manager is an extension for the Google chrome browser, where a user can view all of the currently open tabs in a vertical list instead of a…
This basic encryption package was made as a challenge to myself in the first year of studying at Keele University. At the time I was undertaking a…
MWindow was a quick project that I started in the first semester of University. It was a way of getting reacquainted with Java and learning about the…
Costa Copta is a small flappy bird clone game which was made for a friend as a gag gift. The premise of the game is to get as far as you can, by…
I have been making my own single-sided PCBs at home with dry film photoresist, a UV nail lamp and ferric chloride, and finishing them with immersion…
To put it simply, PI is the ratio of a circles circumference to its diameter. We can find the irrational constant with the following calculation.…
Docker is a CI/CD tool that utilises containers for code deployment. Docker containers are instantiated from a composition of many docker images.…
This post is about exercise 3 in chapter 12 of the Programming Erlang - Software for a Concurrent World book. The premise of the exercise is to…
As the book covers the distributive and associative laws very well, this section will only focus on the commutative law. The book states that the sum…
As mentioned in the previous blog, I need to go over a few things that were mentioned but never explained. The first is the summation factor. This is…
Chapter 2 is about understanding the sigma notation for sums. The general delimited form looks as follows: $$\sum\limits_{k=1}^n{a_k}$$ However, the…
This series of blog posts is dedicated to the Concrete Mathematics book by Graham, Knuth and Patashnik. I should note that I'm a beginner when it…