Principal Software Engineer
2021 - 2022Ultraleap- Spearheaded a project to add a comprehensive evaluation of Ultraleap's technology for internal and external verification. Utilizing simulated and real data with expected ground truth outcomes, this project provided numerical values of performance.
- Led the development of Ultraleap's Android support, managing a team that created everything from cross-platform porting of code to optimizations and power analysis of the final system.
- Mentored individuals and coached a team of engineers to minimize conflict and maximize productivity. This was achieved through experienced insight into effective engineering practices, including training, design, code review, planning, and retros.
Technologies: C++, Android, Python, Leadership, Management, Agile, Kanban, Continuous Integration (CI), Git, CMake, Docker, Multithreading, Cross-platformHead of Engineering
2019 - 2021Kudan- Led, mentored, and grew the engineering team; implemented a number of new processes to minimize administration overhead for engineers and streamlined communication between our offices in the UK and Japan.
- Oversaw from inception to release a new LiDAR SLAM system built from the ground up while maintaining technical management and development responsibility for the core Visual SLAM product.
- Architected expansion of the core optimized computer vision libraries used to power all products. This included multiple new camera models, new feature scoring pipelines, and a highly modular robust solver library, all while maintaining compatibility.
Technologies: C++, Computer Vision, CMake, Simultaneous Localization & Mapping (SLAM), Git, Management, Architecture, Optimization, Windows, Linux, MacOS, ARM, Multithreading, Cross-platformComputer Vision Engineer
2018 - 2019Kudan- Designed and implemented a new build system, upgrading the company from only supporting an XCode development pipeline, to a system using CMake and supporting Windows, Linux, Mac, and Android.
- Modernized all internal source code repositories to simplify cross-platform development and enable continuous integration, testing, and delivery.
- Created a number of new libraries to wrap platform-specific functionality and maintained a position as the driving force behind ensuring our code was supported across different platforms and compilers.
- Presented numerous internal talks to the team on SLAM research topics and on our current work to motivate a discussion about the future direction of our computer vision software.
- Improved map reconstruction for a ten-fold speed increase with no accuracy loss.
Technologies: C++, Computer Vision, CMake, Simultaneous Localization & Mapping (SLAM), Git, Architecture, Optimization, Windows, Linux, MacOS, Multithreading, MATLAB, Cross-platformSenior Software Engineer
2017 - 2018Close Air Solutions- Created the tracking system for the Hyper Real Immersion (HRI) project. HRI was an augmented reality training simulator that could be used at a training location to facilitate more realistic simulated training.
- Researched, sourced, and integrated all components to build the standalone HRI system. This involved bringing together multiple sensors and systems to produce a rugged, lightweight, wearable augmented reality system.
- Developed numerous software plugins for the MACE and VRSG software platforms that were used to provide training services.
- Automated the creation of a 3D map of a test area more than 100 square km in size. Initially, the drone footage was processed using Agisoft PhotoScan and then chunk by chunk fed and combined into ArcGIS.
Technologies: C++, C#, C, Visual Studio, Electronics, Arduino, Simulations, Hardware Design, DirectXSoftware Engineer
2016 - 2017Close Air Solutions- Designed, developed, prototyped, and made ready for production, a military communications interface system to enable trainees to use their standard-issue equipment while in a simulated training environment.
- Created a large base library of common functionality that I subsequently used to replace large swathes of code in multiple applications.
- Supported the further expansion and development of a previously developed simulated military GPS receiver.
Technologies: C++, C#, C, Visual Studio, Electronics, Arduino, Simulations, Hardware Design, DirectXEmbedded Software Engineer
2012 - 2015University of Bristol- Created a software library to enable the use of the LPCXpresso LPC1769 ARM Cortex-M3 and a breakout board by undergraduate labs.
- Designed and taught the three lab courses that used the created software library.
- Maintained the software and provided support and updates as required over the course of the project.
Technologies: C, Arm Cortex-M3, ArchitectureSoftware Engineer
2011 - 2011University of Bristol- Upgraded a prototype automatic birdsong recognition project into a fully-fledged engaging and informative software package to be used for open-day demonstrations.
- Expanded the number of birds supported by the software to include every species native to the United Kingdom.
- Created posters, documentation, and presentations to support the software demonstration.
Technologies: C++, Digital Signal ProcessingResearcher
2010 - 2010University of Bristol- Created a cellular neural net (CNN) simulator using MATLAB to aid the development of a synthetic sensory skin for prosthetic limbs with inbuilt distributed computing.
- Improved CNN simulation accuracy by using LTspice to simulate the analog circuitry of each CNN cell and its connections to other cells.
- Packaged and documented the system to enable other researchers and engineers to integrate different CNN cell varieties and easily control the connectivity between layers.
Technologies: MATLAB, LTspice, Multithreading, Cross-platformSoftware Engineer
2009 - 2009SJL Media Solutions Ltd- Created the software used by the contestants on the TV game show Britain's Best Brain. This involved games on touchscreens, integrating with custom hardware, and using a network command and control system.
- Evaluated numerous touchscreen display devices to contrast their performance when being used for each of the developed games.
- Diagnosed and repaired systems rapidly while under heavy pressure in the studio as time is severely limited.
Technologies: Visual Basic, Visual Studio, C#, DirectX, Touchscreens