Job history


Staff Software Engineer – April 2019 to present

I am responsible for a cross-platform native client running on Windows on Mac. It connects to cloud-based systems to provide real-time web filtering, monitoring, and safeguarding for school children. It is written in C++ and Objective-C, using GoogleTest for unit tests, and built using Conan and CMake.


Software Engineer – June 2018 to April 2019

In my time at Optalysys, I was involved in research and development of optical computing for deep learning. I primarily used C++ in a Linux environment, building the software with CMake. I also worked with Python and MATLAB from time to time.

ADI (Advanced Digital Innovation)

Senior Software Engineer (Server) – June 2016 to June 2018

I was part of the health team at ADI, working on a system that helps put patients in charge of their own health data, while linking it in with doctors and other healthcare professionals. I primarily worked on back-end programming, using PHP/Laravel/PHPUnit for the core API, JavaScript/Node/Express/Jest for a number of microservices, and MariaDB/MySQL and MongoDB for databases.

Our system ran entirely within Docker containers for development, testing, and production. I was also involved in various aspects of DevOps as needed, as well as some front-end functionality using JavaScript and React.

Vertual Ltd

Senior Software Engineer – Aug 2011 to May 2016

This role involved developing real-time virtual training environments for radiotherapy (cancer treatment). Programming was mainly done in C++, using OpenGL for graphics. A full installation would allow learners to work with a life-size simulation of a treatment room, using real clinical data to visualise patients and their internal organs in 3d.

I was also involved in some embedded programming in C for connecting radiotherapy control equipment to our simulation.

TuDocs Studios

Technical Consultant – Oct 2010 to Aug 2011

This was a part-time role providing technical guidance, programming, and voice acting for a small startup project. We developed a prototype for an interactive graphic novel to pitch to potential investors. The main project was coded in ActionScript, but I was also responsible for designing and implementing a WYSIWYG editor in C#.

Aarcee Ltd.

Mobile Games Developer – Aug to Nov 2010

I developed a small iOS game called Octapool on a freelance basis. It was used as a marketing tool to promote the 8-sided pool tables produced by Aarcee Ltd. This project began as a feasibility study through SCET (see below), but I was subsequently contracted independently to complete development and take it onto the app store. I was using Objective-C and the Cocos2d engine.

Scottish Centre for Enabling Technologies

Consultant Senior Technologist – multiple short-term projects between 2008 and 2010

I worked on 3 feasibility studies on a consultancy basis. The first was an investigation into using an ordinary webcam as a control method for computer games. It was coded primarily in C++ with DirectX, and I developed a few algorithms for tracking coloured items around a scene. The second was looking at developing a mobile game as a marketing tool for Aarcee Ltd, which is a project I later completed on a freelance basis. Lastly, the third project was looking at integrating the Second Life virtual world with a school’s education system.

University of the West of Scotland / University of Paisley

Research Assistant – various full-time and part-time contracts, 2008 to 2011

I was mainly involved in work relating to immersive virtual worlds and e-learning. This included being the Lead Developer of the open source SLOODLE project for a year, which required extensive programming in PHP and LSL, along with MySQL. It also involved coordinating with a worldwide community, and helping to plan the implementation of a complex integration of different systems.

I also provided technical expertise for a multi-institution research project working in a similar field.

Associate/Guest Lecturer – various ad hoc contracts, 2009 to 2011

I delivered occasional lectures or provided classroom support for the Computer Games Technology degree programme. The main topics I covered were physics and graphics.

I also provided one-off training and/or induction sessions for research students and supervisors on an ad hoc basis. Topics I covered include Transfer Event Preparation, Progression Issues/Reporting, and the Student/Supervisor Relationship.

Lab Tutor – various part-time contracts, 2006 to 2011

I assisted with supervision of various lab sessions for undergraduate students. The main topics were Interactive Physical Modelling, and Computing Systems. I also provided general support for students on any computing-related course.

Developer – June to Aug 2007

I was hired to establish the university’s presence in Second Life, along with a designing and implementing an accompanying website. Coding was done in PHP and LSL, along with MySQL.

Other experience

Computer Games Journal

Editorial Board – Dec 2011 to Dec 2017

I was involved in this journal’s editorial board when it first started (the first edition was published early in 2012). I officially stepped down at the end of 2017, although I had not been active for some time by that stage.

Arduino Stack Exchange

Moderator – Mar 2014 to Jan 2016

I joined the Arduino Stack Exchange community when it first started, and was appointed as a moderator role when it moved into public beta. In addition to those responsibilities, I have also helped answer a number of questions, focusing mainly on the C/C++ programming side of things.

Scottish Video Games Archive

Management Committee – Oct 2009 to July 2011

I helped to setup and publicise the archive, as well as cataloguing all the donated hardware and software. I also built a website to publish the inventory database online (using PHP and MySQL).

Research Students’ Society (UWS)

President – Dec 2008 to Dec 2009

I was elected as President for one year of the Research Students’ Society at the University of the West of Scotland (during the full time portion of my PhD). This involved representing over 200 research students on various committees, liaising with several university departments, and organising regular events.