Dr Paul Crane - Projects

Software Engineer interested in solving hard problems, delivering results, and pushing technical boundaries.

Each of the projects listed below were completed concurrent with PhD as paid work. All the projects involved aspects of requirements gathering, design, development, testing, and performance tuning. These projects were all conducted as sole software developer. See Paul's Resume for an overview.

Real-time Neuro-feedback

Research Assistant

Phoebe Neo
Department of Psychology, University of Otago
March 2017 - November 2017
Participant's view of the experiment.

The display shown to the participants. The number of cupcakes and cookies are determined by according to rules that monitor EEG signals in realtime.

The overall aim of this project is to reduce the likely-hood of depression (or depressivity) in people. At this point, there is only speculation as to what causes depression. Current research suggests that a hemispheric difference in activity of the pre-frontal areas of the brain can be used as a marker of depression.

My tasks on this project was to, gather data from in-house EEG devices, process the data and present the participant with a display that reacted to the current asymmetry. On a technical level this involved: working with guidelines (as opposed to requirements), great attention to detail (to ensure the experiment's parameters were correctly set), and multiple languages (forced by availability of hardware interfaces or matching an existing code-based).

There were several key challenges encountered, the major challenge was to ensure the offline data import process was fast. Due to the nature of the data collection, the measurements (recorded at 128Hz for the entire duration of the experiment---around 45min) and markers were stored as they occurred, i.e. by timestamp. This lead to an inefficient naive import process (each file took two hours to import). By reordering the file so that the markers appeared before the EEG data the import process took only 6 seconds.

Languages

MatLab
Data Analysis, Experiment
C#
Interfacing with hardware (the manufacturer's only supply DLLs), Saving data stream to file
Java
Optimising file format.

Information Display

Software Engineer

Joe Connolly
ITS, Downer Group
July 2017 - December 2017
Remote display situated at Wapiti Bakery and Cafe in Te Anau.

Remote display situated at Wapiti Bakery and Cafe in Te Anau

(Image credit: Dylan O'Neil via Google Maps.)

The project for Downer was to develop a device that could be used to display messages (such as road safety information) Downer's offices, Downer's client's offices, and public information booths throughout New Zealand. The core of the project revolved around the reliability of the devices being deployed. The devices need to continue to work in adverse conditions (for example, avoiding file system corruption or crashing) while displaying timely updates of the content. Raspberry PI with a PIco UPS Hat are used to provide a safe shutdown solution, while message queues provide timely content updates as well as remote device monitoring (and assisting with reliability).

Another layer to this project was to develop a content template engine to allow end-users to design the content for their own displays. Naturally security is a priority to ensure that public displays cannot show content destined for private offices (for example).

The current feature set includes: remote monitoring (CPU, RAM, hard disk, and other metrics of the system); real-time control; device presence; customisable content templates; user and device isolation.

Languages

Python 3
Server side command and control.
Java
Client application.
HTML/CSS/Javascript
Content display.

Hardware

Network Management Course Content Refresh

Technical Writer

Zhiyi Huang
Department of Computer Science, University of Otago
October 2017 - December 2017

COSC301 is a first semester paper introducing third-year computer science students to the basics of Linux system administration. There are three parts to this project: housekeeping, lab manual updates, and website updates. The course was last revised in 2010 and has been kept (mostly) up-to-date in the interim (and forms a small part of the duties of the demonstrator for the paper). However, over this period there have been a number of changes to commands (and their output), tools (ifconfig vs ip) and general practises surrounding Linux Sysadmin.

The tasks (in order of importance) were to: firstly, update the lab manual to include more relevant labs (for example, setting up VPNs, configuring SSL/TLS certificates in Apache); secondly, improve the appearance of the course website on mobile devices; thirdly, ensure errors (e.g. spelling, grammar, formatting, command-output) are easier to find than before; and finally, keeping the manual/website in the repository in sync with the live version on the website. Furthermore, as the writing was aimed towards undergraduate students, the instructions needed to be clear and unambiguous, and descriptions contain enough detail needed to ensure the students gained a good understanding while not being extremely verbose.

The previous version control system was migrated from subversion to git hosted by the department's internal gitlab deployment. Continuous integration was setup to perform basic proofing, and error checking for both the lab manual and website.

Languages

Markdown/HTML/CSS/Javascript
Content presentation

Technologies

Continuous Integration

Supporting Energy Monitoring At University of Otago

Designer & Software Developer

Hans Pietsch and David Eyers
Property Services Division and Department of Computer Science, University of Otago
July 2016 - December 2016
Sarah Wakes (University of Otago), Greg Sise (Energy Link), Paul Crane (University of Otago) student presentation prize winner, Ivan Diaz-Rainey (University of Otago), and Michael Jack (University of Otago) at the prize presentation.

Presentation of the award for best student presentation at the 2016 OERC Symposium.

Across the University of Otago’s Dunedin campus there are a wide range of disparate energy systems that operate in their own silos. These include electricity monitoring, heating, ventilation and cooling equipment, lighting sensors, and occupancy details. To support the day-to-day Energy Management, long term strategic planning, and research interests these data sources need to be integrated into one platform that can be used to measure minute performance improvements at the same time as providing broad trends.

My role in this project was to design, develop and implement a system fulfilling these goals. Some pre-processing is necessary to ensure the measurements can remain useful. This pre-processing includes steps such as: ensuring the date/time stamps are all in the same time zone, the measurements are tagged (following Project Haystack conventions). The tags include the source, sink, and type of energy (e.g. electricity, gas, wood pellet, etc.), the units associated with the measurements. The measurements? are sent to a message queue and stored in a time series database. The message queue is designed to allow for future work with real-time notification/alerting and complex event processing. Furthermore, the concept of an 'energy flow graph' is important, as it allows us to estimate the energy usage for a wide variety of geographic levels of detail (from the physical level: room, floor, building, school; to the administrative level: departments, schools, faculties, divisions, campuses).

The prototype project was presented at the 2016 OERC Symposium and was awarded best student presentation.

Accelerometer Gloves

Research Assistant

Liz Franz
Department of Psychology, University of Otago
2013 - 2014
The new and old accelerometers gloves being tested on a participant's fingers while at a laptop.

Testing the new gloves with the old.

Recording fine-grained movements of hands and fingers is important to be able to differentiate Essential Tremor from Parkinson's Disease, the two diseases are easy to misdiagnose because they share common symptoms. Previously Accelegloves were being used for this purpose, however, there are two main problems with these devices. The first is that they are no longer being manufactured, and the second is the gloves cannot fit every hand.

I was tasked with designing, prototyping, and developing a replacement pair of gloves that could record the fine-grained movements while being suitable for a wide range of hand sizes and shapes. Furthermore, the sample rate needed to be as close to the existing as possible (125Hz)

These goals were accomplished by using velcro strips to attach accelerometers to the fingers, along with a multiplexing approach to retrieving data over the I2C bus from multiple accelerometers at the same time. Obtaining measurements from a single accelerometer took 250Hz, however using a naive loop brought the sample rate down to only 25Hz (further complicated by the accelerometers using only one of two pre-programmed addresses), the multiplexed approach produced a sample rate of 125Hz.

Several studies have used the gloves, one of which was to analyse every-day tasks (such as writing, turning a door knob, buttoning and unbuttoning a shirt).

Languages

C
Implementing I2C multiplexing library.
C++
Collection program (Qt).
MatLab
Offline processing and analysis.

Hardware