- Novice to Expert Transition
- Natural and Fluid Interfaces for Creative Expression
- Character Animation Tools
- Animation Systems
- Highlighting Techniques
- Simpler Rigging Techniques
- Pen-Based Interfaces
- Safety-Critical Systems Design
- Information Visualisation (especially for multi-dimensional data)
- Automatic Graph Layout Algorithms
- 3D Printing / Bioprinting
- Simulation Models of Human Performance
- Computer-Assisted Design Tools
- Non-Photorealistic Rendering
- Computer Composed Music
- Sustainability and Long-Term Data Preservation
- Domain Specific Languages
- Computational Photography
- User Interface Engineering
- An Empirical Evaluation of Collapsible Panel Interfaces
- [PhD] Understanding the Noticeability and Distraction of Interactive Highlighting Techniques
- Grease Pencil: Integrating Animated Freehand Drawings into 3D Production Environments
Here is a selection of the projects I've worked on in the past.
Publicly Available (Open Source Projects)Personal Tools/Libraries:
- physlabtools (2009) - A library to make it easier to perform calculations for undergraduate Physics labs, which automates the process of computing uncertainties and handling units.
- dbcskit (2010) - A toolkit for describing EER schemas for databases ("conceptual schemas") using a text-based format. It comes with some additional tools such as image output (with automatic graph layout) via GraphViz, and a validation tool.
- DualitySVN (2010-2012) - An graphical frontend for SVN, built using PyQt4
- PyQt Tooltips Lib (2013) - A library for implementing custom styled tooltips and "tags" using PyQt4. It provides a greater level of control over how the widgets look and behave. (Based on a manual PyQt port of the C++ QToolTip code)
- Canon AdobeRGB to sRGB ("cats") (2017 / 2020) - A Python Script / Rust tool for converting photos saved using "AdobeRGB" format on Canon DSLR's to sRGB for general websites.
- XSPF Tools (2018) - Rust-based tool for processing XSPF playlists, extracting metadata embedded in the filenames, and exporting this data into various formats that are easier to use.
- GobStopper (2019) - A web extensions addon which adds a single-press toolbar button and/or keyboard shortcut (F4) to pause all media (e.g. video and sound). Source code for this can be found here.
- Fx Autoplay Toggle (2016) - A Firefox Addon (JPM-based) that adds a button to the toolbar to make it easier to toggle the
media.autoplay.enableduserpref setting (which enables/disables all HTML5 autoplay capabilities). Source code for this can be found here. Was used by almost 750 users at its peak.
(Note: The API's needed for this addon to function are not currently available in Web Extensions , so this addon will not be available for Firefox 57+)
- Blender MsBuild Custom Logger (2017) - A custom logger component to be supplied to MSBuild when compiling Blender on Windows for cleaner, less noisy, and more easily scannable output. (Tested to work with MSVC 2013)
- Aligorith's Sublime Text Tools (2017) - Random assortment of tools for improving my workflow in Sublime Text 2
- Hex-to-RGBA (2018) - Sublime Text 2/3 package for converting CSS hexadecimal colors to/from RGBA representations.
- G6 Feedback (2011) - An audience response system, built for COSC325 Software Engineering Group Project (2011)
- Sudoken (2012) - Sudoku-like games for 4th Year Software Engineering Group Project
- Skyline-X ATC HMI at Airways New Zealand (2019-2020) - Worked as part of the team developing a new Human-Machine Interface for New Zealand's Air Traffic Control System at Airways NZ, in collaboration with engineers from Leidos. Primarily responsible for architecting, coordinating, and implementing the "Preference Sets" system, and design + implementation work on the "AIS" (Aeronautical Information System).
- MARS GUI Redesign (Summer 2011-12) - I worked on redesigning and implementing a new GUI for the MARS (Medipix All Resolution Scanner) "Colour X-Ray" scanner being developed by MARS Bioimaging. Python + PyGTK on Ubuntu.
- Ludwig - (2004 - 2006) - An ambitious attempt to build a fully automated system for generating arbitrary pieces of classical music, complete with sheet music (via GNU Lilypond). It included multiple music-generating frontends, including a simple random melody generator, a tone-row composition engine, and a four-part harmony music engine (powered by a Markovian walk over a chord transition network). The name is a play on Beethoven's name (the program signs off its masterpieces as "Ludwig van Byteoven" ;) My first serious programming project (and first Python codebase).
- FileShell - (2012 - 2013) - An experimental file browser implemented using PyQt4. It was developed as a platform for developing a Spatially COnsistent Folder Thumbnail (SCOFT) widget to allow users to jump to any folder in the file system (but particularly those that have been recently or frequently visited) with a single click. Other features included Icon Highlights for Temporal Filtering, Hierarchy Flattening navigation shortcuts, and "Crabbing" (i.e. navigation between sibling folders).
(Note: This tool is currently unavailable for public testing, as the process for capturing and preparing the file system snapshots used (sqlite3) is clunky and requires some manual work to prepare)
- Fully Animated UI Tests (2016) - Experiments exploring what would happen if user interfaces were fully animated and constantly in motion, to see if it is possible to develop organically inspired motion effects that allow GUI's to feel more alive but without being overly distracting. Implemented using QML (Qt5) and GLSL.
For contact details, click here.