Horo - multi-platform scheduled task orchestration  [draft]

This is my latest project which is being developed to solve the problem of managing periodically executing tasks across disparate operating systems and with easily maintainable infrastructure in code. It’s still in its very early stages, but the rough plan is as follows: The Calibre component will act as the main interface with the platform. This is a Django application which will read config files and generate a database of jobs....

March 17, 2022 · 1 min

CoStor - peer-to-peer distributed backup

CoStor was my dissertation honours project as part of my Computer Science degree course at the University of Edinburgh. The concept behind the application was to allow a small number of organisations (in the initial usecase, a confederation of schools) to pool storage on commodity systems to build a fault-tolerant, geo-distributed backup solution by distributing backup data across appliances located inside different organisation datacenters. Backups were to be file-level and make use of delta syncs, and the system was designed to be resilient and able to operate over conventional, low-grade WAN links using HTTPS to simplify deployment....

April 24, 2020 · 2 min

AirSense - personal air quality monitor

Another joint university project, AirSense was a hardware and software solution built as part of my coursework for the Internet of Things, Security and Cloud course at the University of Edinburgh. AirSense is an IoT solution to allow individuals to track their own exposure to air pollution, and enable them to make informed changes to improve their personal health. The system makes use of a Bluetooth Classic (2.1) sensor pack, that can be attached to a bag, which periodically reads air quality data using a variety of sensors....

April 3, 2020 · 1 min

BLE Step Counter

This was a coursework project as part of my Principles and Design of IoT course at the University of Edinburgh. The project involved working with data from both a Bluetooth Low Energy device which was capable of streaming sensor data to a mobile device, identifying the best way to process this data through use of tools such as Numpy and Jupyter notebook, implementing a counter algorithm and then porting this to an embedded hardware platform (NRF52) and creating a companion Android app to read the data out of the device....

January 16, 2020 · 1 min

Cores - lab inventory and scheduling  [draft]

This project was written as part of my internship with OneIlluminate, to replace and improve on a legacy in-house tool and has the following features: Inventory of all “lab” machines Management of “bookings” and “reservations” for systems, including with group based restrictions Detailed reporting on utilisation Full REST-ful API access to data in the system Automatic synchronisation of system details to the database: Hardware configuration Installed PCIe cards (and serial numbers) Software versions MOTD updates on systems to detail current status Warnings for devices that hadn’t been included in the inventory, and for address/location changes Hardware loan tracking The project was written using Django and Python, and deployed using Docker....

March 5, 2019 · 1 min

Coinz - location based mobile game

Coinz was written as a coursework project as part of the Informatics Large Practical course during my batchelor’s degree at the University of Edinburgh. I won’t deny this is a fairly rudimentary piece of software, but given it was my first real foray into Android development (and had to be rewritten from scratch half way through), it was a functional game will all the core features implemented by the time it was submitted....

December 21, 2018 · 1 min

JobCam - hackathon machine vision project

JobCam was developed as a “fun” new way to find jobs in your area. It allows you to target your phone at an object, and then through the infojobs API we can find a closely matching job, that will be overlayed. The app processed data in real time allowing the user to move the phone around the room to find interesting jobs that they had not considered. (yes, the use case is somewhat contrived - if I remember rightly there was a prize for “most innovative use of the InfoJobs API…)...

October 21, 2018 · 1 min

DemocrApp - the Democracy App

The Democracy App was written as a bespoke tool to handle voting in AGMs for a student theatre society alongside a friend of mine, @saty9. We were using a combination of Yes/No/Abstain voting and the far more complex to calculate Scottish Single Transferrable Vote system. Previously, ballots were handled on paper cards which had to be returned and loaded into OpenSTV manually before a result was calculated. This caused meetings to sometimes extend beyond 5 hours when there were several show slots to be voted on....

September 10, 2018 · 2 min

IntelTools - cyber reconissance toolkit

IntelTools was developed as a toolkit to pull together data useful in research for emerging cyber threats from multiple sources. Features were implemented based off of requests and feedback from user testing by Security Analysts. Features included: Fully containerised deployments Caching of data to minimise repeated requests Tracking of data changes for an endpoint Logging of search queries for audit and to identify endpoints multiple analysts are working on Lazy/asynchronous loading of each “panel” of data Fully responsive Bootstrap UI PasteBin clone

July 1, 2018 · 1 min

WingMan - hardware control surface for ETC Eos

WingMan was designed to work using an Arduino and C#.NET companion app to translate the state of physical buttons and faders into OSC (Open Sound Control) format commands which can be fed into applications such as ETC’s Eos lighting control system. This was developed as an alternative to the (very expensive) hardware control “wings” provided by first-parties such as ETC to improve the programming experience when using ETC’s Nomad PC based control software....

January 11, 2017 · 1 min