Developer2019 - 2020Support.com
Technologies: Windows UWP, Windows 10s, C++, C#, Desktop Bridge
- 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 Systems
Technologies: EventStore, AWS, Serverless, Requirements Analysis
- Designed and demonstrated for 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.
Audio Developer2017 - 2018Voicescript (via Toptal)
Technologies: C++, Audio
- 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: C++, IP, TCP
- 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: Python, Beyesian Reasoning
- 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: C++, Database, Web Service, Algorithms, Performance
- 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: Verilog, C++11, FPGA, Compiler Construction, Algorithms, Mathematics, Embedded Software, Project Management
- 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
Technologies: F#, C++11, C#, Architecture, Biztalk, Mathematics, Algorithms, Data Mining
- 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, roadmapping, 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, Ltd.
Technologies: PHP, SQL, LAMP, Java, Android, R
- Led numerous technical projects operating under the auspices of 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 Research, 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 Software, Ltd.
Technologies: C#, C++, Fortran
- Managed a department of 22 developers and two project managers, developing two home-grown programs (over 3 million lines) and several third-party assets.
- Oversaw budgeting, recruitment, project scoping and delivery, and the implementation of all quality standards.
Technical Architect2011 - 2012Senergy Software, Ltd.
Technologies: C#, C++
- 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: C#, C++, Embedded, GPU
- 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: ASP.NET, C#, Visual Studio, SQL Server
- 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.