Engineer for Uber-like Routing Project2020 - PRESENTVellity
Technologies: Flutter, Flutter SDK, Kotlin, Android SDK, iOS, Mobile, APIs, AWS, Serverless, Laravel, Geolocation, Firebase, Firebase Cloud Messaging (FCM), Mobile background location, Route optimisation, Security, Mapping, Google Maps, Waze, Apple Maps API, Leadership, AWS Amplify, Dart
- Designed and specified technical architecture, intended as a migration of existing (half-finished) design, for this complex real-time delivery service. Worked on AWS serverless back end, re-purposing of Laravel front end, and development of Kotlin app.
- Directed a small team of developers to construct the design over a period of about a year.
- Took responsibility for the re-development of the mobile app, in Flutter. Worked on the complex real-time app, integrating messages from server and intelligence, and optimization on-board the app.
- Worked on the key part of the commercial proposition which was the optimization of drivers' routes. Designed novel constraints and optimization approach, and coded it into the app.
Lead Developer - Path/Ray Tracing2020 - 2021Solemma
Technologies: 3D, 3D Math, C++11, Ray Tracing, Reverse ray tracing, LuxCoreRender, Radiance, BSDF, OpenCL, C#
- Extended the exiting open-source ray tracer to replicate materials previously coded in Radiance. Even though LuxCoreRender used a very different model of light to Radiance, it was important that the results were identical.
- Worked on every additional material needed to work identically in multi-thread CPU code and in GPU code (OpenCL), and was tested on a range of different hardware.
- Extended and developed LuxCoreRender's shell application, to make LuxCoreRender accessible to the client's existing (C#) development.
- Diagnosed and fixed several bugs in LuxCoreRender, and contributed them to the project.
Developer2019 - 2020Support.com
Technologies: Desktop, C#, C++, UWP, Windows
- Wrapped the existing code in a Desktop Bridge package for the client's product, which had been developed to work under MFC, but which they wanted to be able to put into the Windows Store. More specifically, they needed it to work under Windows 10 S-mode.
- Helped modify the native part of the code to work around security limitations while maintaining backward compatibility with the single codebase. The code was for a screen-sharing and remote control application, and much of its behavior was prohibited by W10's security measures, but the result of my work outperforms Microsoft's own screen-sharing utility.
- Designed the delivery process and informed the minimal set of back-end changes required to support it since the new code was delivered through the Windows Store instead of the client's website, which meant that the delivery and packaging process was entirely different.
Senior Computing Scientist2018 - 2018Adobe
Technologies: Amazon Web Services (AWS), Requirements Analysis, Serverless, AWS, EventStore
- Designed and demonstrated a strategy to enable versioned data storage. The system had to include both historical records and putative future records and had to be retrofitted to the existing system without any forced changes to it.
- Designed, developed, and led technical efforts on a project to replace an existing aggregation node with a fully validated version.
- Led the academic outreach team, recruiting graduates from local universities and raising with joint projects.
Audio Developer2017 - 2018Voicescript (via Toptal)
Technologies: Audio, C++
- Converted a (defective) implementation of a voice detection algorithm from Matlab into C++.
- Corrected the defects and improved the performance.
- Converted from batch processing to stream processing.
- Scoped and designed further developments including speaker tracking and noise removal.
Protocol Designer and Developer2017 - 2018Trinity (via Toptal)
Technologies: TCP, C++
- Contributed to the design and testing to a new kind of internet protocol that the company was formed to develop and exploit.
- Wrote the code to implement the new protocol. This required a detailed understanding of the IP protocol stack and especially the characteristics of the various forms of TCP. The code had to be entirely transportable between PCs, mobile devices, and servers.
Data Scientist2017 - 2018Global Data (via Toptal)
Technologies: Bayesian Inference & Modeling, Python
- Developed an evaluator that used Bayesian reasoning over correlations to mine relationships from multivariate unstructured data.
- Developed an algebra over probability distributions, so distributions could themselves be correlated. The system was able to interpolate missing values (for graphing) and to extrapolate (for prediction), with confidence intervals built in.
Low-level Database Service Developer2017 - 2017Exponential (via Toptal)
Technologies: Performance, Algorithms, Web Services, Database Applications, C++
- Developed code to replace an approximately 1GB database suffering from 1+ second response times with an 80MB database with around a five-milisecond response time.
- Researched and implemented highly-efficient storage and search algorithms. Tuned them for optimal L1 and L2 cache access and transparent multi-core support.
- Exposed the database as a web service so it could be used efficiently in the existing network.
Consultant2015 - 2016Keysight Technologies
Technologies: Project Management, Embedded Software, Mathematics, Algorithms, Compilers, Construction, FPGA, C++11, Verilog
- Developed specialized hardware for digital triggering. The hardware had been prototyped; my role was to design and develop a toolchain to program it.
- Designed a language, Newt, to express complex triggering patterns.
- Designed the mathematical foundation by which a compiler could be constructed.
- Designed and developed a compiler (in C++) to turn Newt codes into various types of hardware models.
- Contributed to the continuing development of the hardware (in Verilog) in order to maximize performance and generality.
Consultant2014 - 2015Trainline.com
Technologies: Data Mining, Algorithms, Mathematics, BizTalk, Architecture, C#, C++11, F#, Leadership, Optimization
- Led the technical design and development of Journey Planner, a key component of the commercial proposition. The objective was to avoid conventional solutions in favor of one which could deliver some additional value to the business.
- Researched, applied, and explained the core mathematical foundation.
- Designed, developed, and communicated the function of the architectural foundation.
- Provided initial development, road mapping, and technical lead through the development cycle.
- Introduced F# into the company's development process.
- Wrote, in one week, a compiler which saved the company £1.2 million per year.
- Spearheaded a data mining project. Initial results contributed to redirecting the company's strategy.
Software Specialist | Consultant2013 - 2014Senergy Group
Technologies: R, Android, Java, LAMP, SQL, PHP, Leadership
- Led numerous technical projects operating under business development/innovative products and services. They originated and researched ideas and existing IP from within and without the business, and then delivered those ideas as turnkey products.
- Elicited requirements and ideas from stakeholders.
- Researched and gathered technologies and personnel.
- Designing the systems, managed the development effort, and took a leading role in core development tasks on several projects.
- Contributed to commercial and business planning.
- Participated in IP registration.
External Supervisor2011 - 2014University of Aberdeen, Institute of Mathematics
Technologies: Mathematics, Technology Transfer
- Initiated a project in which, for their final-year project, undergrads in mathematics tackled real, commercial problems which we had within our development team. The idea was to expose students to opportunities in which they can use their skills in industrial and engineering contexts (rather than just academic ones).
- Sought out (and characterized in mathematical terms) suitable tasks and conveyed them to the institute and students.
- Provided ongoing supervision and guidance.
- Participated in the final marking.
- Helped to transfer the solutions found by the students back into the development team.
Software Development Manager2012 - 2013Senergy Group
Technologies: Fortran, C++, C#, Change Leadership
- Managed a department of 22 developers and two project managers, developing two home-grown programs (over three million lines) and several third-party assets.
- Oversaw budgeting, recruitment, project scoping and delivery, and the implementation of all quality standards.
- Oversaw the transition from ad-hoc development to fully-agile processes.
Technical Architect2011 - 2012Senergy Group
Technologies: C++, C#, Leadership
- Directed the core, architecture, and futures team, which was charged with re-architecting the company's entire product range and future-proofing the business' roadmap.
- Oversaw architectural design, team leadership, prototyping, and toolmaking.
- Communicated and evangelized the new structures to programmers outside the futures team, and "sold" the ideas to non-technical stakeholders.
Senior Developer2009 - 2011Senergy Software, Ltd.
Technologies: Graphics Processing Unit (GPU), Embedded Systems, C++, C#
- Developed and delivered a radical approach to rectifying and analyzing wireline image logs based upon cross-correlations.
- Architected the project such as to work as part of a desktop app, when embedded on down-hole hardware and when deployed onto GPU arrays.
- Handled conception and design as well as mathematical and theoretical foundations.
- Submitted the product for a patent (GB1016556.1, Methods for providing for correcting data and associated apparatus).
Web Developer2008 - 2009NHS Education Scotland
Technologies: Microsoft SQL Server, Visual Studio, C#, ASP.NET
- Collaborated with a teammate to develop this high-load, highly-visible, and politically-sensitive internet-delivered service.
- Implemented a website with a complex, extended-time, multi-agency workflow. Even though deadlines were set before the project began, requirements were generally conflicting and were still changing even after the deadlines had passed.
- Designed and developed an innovative user interface to explicate complex workflow to untrained (and highly-stressed) users.
- Catered to system demands for multiple, complex security and confidentiality requirements, at some points of a national security level. We designed security into the heart of the system.