Portfolio

Newcastle Film Festival

Developed the official Newcastle Film Festival app with Nebula Labs providing a host of interesting features, including

  • A map of venues and schedule of events pulled from a backend API
  • Filtering/Searching features for both the schedule and map
  • Anonymised location tracking & a heatmap of "hot spots" where many users are congregated
  • Twitter and Instagram feeds for the festival
  • Ability to login and purchase tickets via Eventbrite
  • The ability to book an Uber to a venue from within the app

Tags
  • Android
  • iOS
  • Ionic
  • JavaScript
  • TypeScript
  • CSS

More Cobalt

Developed an employee-perks app with Nebula Labs for Cobalt business park, the largest business park in the UK. Stands out for the following features

  • Authentication to ensure users are employees of the park
  • Calculate and display user's distance to a geographical point, in metres, kilometres or miles
  • Notifications based on proximity to a geographical point, using geofences
  • Display for the user's live position
  • Live travel timetable
  • Pull and display offers, events and news updates from backend API

Tags
  • Android
  • iOS
  • Ionic
  • JavaScript
  • TypeScript
  • CSS

Anatome

Tool to support student mental wellbeing, including a number of tools for

  • Breathing assistance during an anxiety attack
  • Thought diary to perform self-managed e-CBT
  • Alcohol consumption record and advisor based on UK government guidelines
  • Booking appointments with a wellbeing service

Tags
  • Android
  • Java

Automated Billing System & CRM for Karma Computing

Worked with the Karma team on a large-scale project to create an automated system for managing customer services & payments using third-party services. The code was written to be generic for use by any company selling a service which requires instant and recurring payments.

Tags
  • Server
  • Client
  • PHP
  • Python
  • JavaScript
  • SQL

Large Database Migration for Karma Computing

Involving large quantities of data from an old system to one which was radically restructed and stored with a different DBMS.

Tags
  • SQL

Mailing List Management in the NHS

Image of a server

Mailing list management to select a random sample of patients and ensure duplicate letters are not sent twice, alongside other tools and features.

Tags
  • Server
  • Client
  • SQL

Commercial Django Server

Image of a server

Produced a Django API (client name withheld), with the following key features

  • Tests covering every aspect of the API. Test-driven development was used
  • Complex user permissions and access conditions
  • Ability to share pages between users, add and respond to posts (text, image, video, audio) on these pages
  • Email and text notifications to remind users of upcoming events
  • Extensive settings which required complex logic for scheduled notifications
  • Personalised event’s calendar and ability to view connected user’s events calendars
  • Security features to protect data, verified by external penetration testing
  • Admin panel to access data and manage content

Tags
  • Server
  • Python
  • Django
  • Test-Driven Development
Tags
  • Website
  • CSS
  • JavaScript

Hive Mind Mob

Screenshot of the game

A collection of games with a common concept

  • An engine and turn-based strategy game written from scratch in C++
  • An engine which interfaces with a Django Python backend to build a role-playing game from user-input
  • More to follow

A work in progress

Tags
  • Desktop
  • Game
  • Client
  • Server
  • C/C++
  • Angular
  • JavaScript
  • TypeScript
  • Python
  • Django

License: GPLv3

3D Graphics Rasteriser

Screenshot of two cubes rendered with the rasteriser

Developed a custom graphics rasteriser in C++ for execution on the CPU and another using OpenGL.

Tags
  • Game
  • GPU
  • Desktop
  • C/C++

Web Browser

Screenshot of this website on the web browser

Capable of basic functionality such as displaying HTML, maintaining consistent bookmarks and a web histroy etc.

Tags
  • Desktop
  • Java

TITLE

Screenshot of the game

Designing, coding and producing the graphical assets for a 2D platformer in Unity (as part of a 72-hour programming competition by Ludum Dare). Scripts written in C#/.NET.

Tags
  • Desktop
  • Game
  • C#
  • .NET
  • Unity

Capitalists, Commies and Thatcher Zombies

Screenshot of the game

Experimental turn-based/real-time strategy hybrid with an engine to support it.

Tags
  • Desktop
  • Game
  • C/C++

Capture The Castle

Screenshot of the game

Real-time strategy game and 2D physics simulation.

Tags
  • Desktop
  • Game
  • C/C++

Miscellaneous Servers

  • Set-up and administration of an Apache Linux server using configuration files and PHP.
  • Java servlets simulating a dog kennel service.

Tags
  • Server
  • PHP
  • Java

Miscellaneous Databases

  • Use of Hibernate/HQL for Java-database interaction.
  • Created a bus system in MySQL with a Java interface.
  • Other SQL databases using Microsoft Access and Microsoft SQL Server.

Tags
  • SQL
  • Hibernate
  • Java

Dissertation

Used OpenCL to produce a distributed version of Goal Oriented Action Planning (GOAP). GOAP essentially uses Dijkstra/A* in decision making AI, to find the most efficient path to reaching a goal/ideal state (usually to win a game).

The software was deployed on the iGPU and GPU devices with each core acting as a single agent.

It was found that running the AI on the (normally unused) iGPU greatly improved the performance of the test simulation, compared to tests running AI on the CPU or GPU.

Tags
  • Game
  • Desktop
  • GPU
  • AI
  • C/C++

Machine Learning

  • Classification problem using Ant Colony Optimisation (Myra).
  • Classification problem using Genetic Algorithm (EpochX).
  • Knowledge on Neural Networks, Particle Swarms and other methods.

Tags
  • Desktop
  • AI
  • Machine Learning
  • Java

Assembly!

Screenshot of the program running

Traffic light and lift simulations written in assembly language. Involved manipulating memory addresses, registers, conditional JMP commands and the use of flags.

This is programming as closely to computer hardware as you can without using binary.

Tags
  • Desktop
  • Assembly

Operating System for a USB device (TinyOS)

Written in NesC, an extension to C which takes up 8KB of memory.

The USB was integrated into a network and was able to communicate simple messages to its peers.

Tags
  • Operating System
  • IoT
  • TinyOS
  • NesC