Payment Express is a major payment gateway in Oceania and other parts of the world. It handles over a billion point-of-sale and e-commerce transactions every year. I developed a full stack workflow that:
- Utilized event-driven programming to bucket transactions (running totals) which allowed for fast aggregated queries. This allowed many complex queries to execute quickly e.g. a major merchant (with 100+ million transactions a year) could make a request to get a monthly breakdown of their transactions for 5 years, and get a response in milliseconds.
- Created a service that specifically handles bucketed requests.
- Developed a front-end using Chart.js that allowed merchants (and Payment Express itself) to visualize their transactions with graphs in the browser.
Major code modernization
When I arrived at Payment Express the company's primary transaction processing service would periodically crash, primarily due to many race conditions. Due to a good fail-over mechanism, the company got away with this for a long time with minimal customer interruption. However, as volume increased, it became more of an issue and I was tasked to solve these problems.
- Refactored large parts of the code base to use safer multi-threaded mechanisms, specifically this meant using RAII around caches.
- Improved cache performance with slim read-write (SRW) locks (before it was write-only, even though most threads only ever read the caches).
- Further improved cache performance by using boost::multi_index_container, allowing caches to be indexed on multiple keys and composite keys.
- Made the code much more scalable, and safe to work with, primarily by making used of many C++ language features e.g. RAII, smart pointers, and template metaprogramming.
- Fixed many memory leaks, partially due to refactors (using plain objects and smart pointers), and partially by inspecting memory dumps taken from production and finding patterns/leaks
After my changes, the service could easily go an entire three-month release cycle without crashing or needing to fail-over due to increased memory consumption.
CPDLC support in the front and middle tier
Airways is New Zealand's only civilian air-traffic service provider. I was tasked to develop CPDLC support in the middle layer and front-end (Qt framework) of the new Air Traffic Management system that they were developing as a partner of Leidos. I successfully added support for all the different CPDLC message types.
C++ Knowledge Questions
Karat is a company that specializes in conducting technical interviews on behalf of many companies. While I am primarily an interviewer on their platform, I've done some content development work. In particular, due to my extensive C++ skills and experience, I developed some knowledge questions that were centered around testing a candidate's knowledge of best practices in modern C++.
Map Layer Rendering
I was tasked to develop map layer renderering to be used by the new Air Traffic Management system that I was working on. This was done using Qt's Graphics View framework. The framework was expected to be able to parse the custom CSV format that existed in the old system, convert it to QGraphicsItems, and render it on a QGraphicsScene. I also added support for new features that were not supported by the old system e.g. custom fill patterns.
Karat is a company that specializing in conducting technical interviews on behalf of many companies. My tasks included:
- Conducted around 350 technical interviews.
- Acted as a quality controller for over 1700 other interviewer's interviews.
- Developed content for C++ knowledge questions.
- Reviewed content for new coding questions, focusing on time/space complexity analysis of possible approaches to the questions (leetcode), and reviewing the test cases.
Airways is New Zealand's only civilian air-traffic service provider. I developed many features for the new Air Traffic Management system that they were developing. My tasks included:
- Support for CPDLC (Controller Pilot Data Link Communication).
- Support for map layer rendering.
- Wrote a generic C++ library that wrapped many legacy components of the back-end system and adapted them for use in the middle layer.
- Code reviews.
My tasks included:
- Changed pin validation method to use pin offset (using an HSM). Thus allowing pin change.
- MDES support (MasterCard digitization). Allowing customers to digitize their credit cards on their smart phones.
- Developed a web API for allowing customers to send test transactions in JSON format. Translating to ISO-8583 in the background before forwarding on to the host.
- Code reviews.
Payment Express is a major payment gateway in Oceania and other parts of the world. My tasks included:
- Building data visualization tools for merchants.
- Major internet technology improvements to the main host, improving reliability, scalability, and performance.
- Several new features for front-end rendering engines.
- Code reviews.
Pebble Beach Systems is a major broadcast automation systems provider. My tasks included:
- Many bug fixes for the main host service.
- New features for device drivers e.g. support for new commands.
The GWCT is a wildlife charity in the UK. My tasks included:
- Migrating a multivalued DOS database to a modern SQL database.
- Software solutions to assist with classifying biological data e.g. camera-trap photographs.
- Migrating a statistical analysis program for analyzing compositional data. The migration was from DOS-BASIC (ran in DOSBox emulator) to C++11.
Part time role doing C++ code reviews on the Geektastic platform.