tomlz

2022-

tomlz is a Zig package for parsing TOML files - a commonly used format for configuration files. My goal was to have it be the most well tested Zig TOML library so I wrote my own unit tests, example files I wanted to be able to parse and found some standard-ish tests.

To make sure that the package was able to be used on untrusted input I also ran a fuzzer on it. Fuzzing support is a bit hit and miss in Zig but I managed to get AFL++ working. It found a few crashes which I fixed up.

It is available on Github

Technologies/skills used: Zig, unit testing, integration testing, AFL++ fuzzing

rs-tiled

2014-2022

rs-tiled is a Rust crate that reads in maps created using the Tiled Map Editor. It can then be used in games (such as the one above). I have passed maintenance of this project on to members of the mapeditor organisation

It is available on Github

Technologies used: Rust

Siliconia

2021

Siliconia is a project to display open source LiDAR data of Britain. This involves parsing ASC files efficiently, displaying them as a 3d model using Vulkan and being able to move around using a first person camera. I also added a simple UI for controlling the camera using imgui.

It is available on Github

Technologies used: C++, Vulkan

Timmy

2018

Timmy is a timesheets application I wrote to allow me to track how long I was spending on projects. It was important that I could access it any where as I worked on multiple different devices in different locations, so I decided to write it as a web app. I had some previous experience with React but chose Ember for this project, with a REST backend written in Rust using Rocket (the web framework) and Diesel (the ORM).

Its features include:

  • Creating projects
  • Timing "activities" using a stopwatch
  • Adding previous activities using human dates (eg. "two hours ago")
  • Visualising the information, such as hours spent on each day of the week or each hour of the day, most common tags and a gantt chart (done using Chart.js)
  • User authentication
  • Responsive design

The code is available on Github

Technologies used: Ember, Rust, Rocket, Diesel, Chart.js, Javascript, CSS, Flexbox

Grubhub

2017

Grubhub is a food sharing website created by me, and four others as part of the Group Project module at Durham University. There were a number of requirements, such as user authentication, food search, displaying the food's location on a map, chat, and a responsive design. We met all these requirements and also suggested extra features which we then implemented. Before we started work we had to produce a project plan including a list of system requirements, a timetable, domain research and implementation details.

I mainly worked on the backend, which was written using CakePHP with a MySQL database, although we all did swap roles as the deadline drew closer and the more advance features needed to be implemented.

The code is available on Gitlab

Technologies used: CakePHP, MySQL

Imageception

2012

Imageception was created during Young Rewired State 2012 - a hack week using open datafor coders under the age of eighteen. The idea behind Imageception was to create images out of other images - to create a sort of mosaic effect that can be zoomed in on to reveal smaller pictures.

I needed a large bank of pictures so I created a script that took a tag, searched Flickr for it and then downloaded all the Creative Commons pictures with that tag. Another Python script then took a source image, went through each pixel and found the image that had the most similar average colour and used that as the new "pixel".

I then created a small website using Flask that allowed you to upload your own image, choose a set of smaller images and then generate a picture. It also allowed you to click on one of the smaller images to apply the same process to that image, hence Imageception.

The code is available on Github

Technologies used: Python, Flask, Python Image Library, The Flickr API

StartJapanese!

2010

In secondary school I studied Japanese for a short time. I decided to make an app for Android to aid me learn Hiragana and Katakana. StartJapanese is a basic flashcards app with the two alphabets included as flashcard decks. The app can randomise decks, test the cards you know least first and offers question and revision modes. There is also the ability to add decks.

It is available on the play store. The app was designed in 2011 for small screens, so is a bit dated.

Technologies used: Java, Android, SQL