Work Experience
BMLL Technologies
Sep 2022 – Present
Market Data Developer
As a member of the Exchange Data team, I developed and maintained market data handlers for market-by-order historical data for several exchanges. The team manages automatic processing of market data on the order of terabytes per day. The processed market data is provided daily to clients, and feeds internal including daily metric calculations. I also maintained the time-series database of securities for our market data from all venues.
-
Implemented new market data handlers, and maintained existing ones
- Including Tokyo Stock Exchange, Japannext, Toronto Stock Exchange
- Harmonised the raw market data into a common data format
- Collaborated with internal Quantitative Analysts to understand exchanges, to provide clients with a higher-level view of market state and trade types
- Handled exchange technical upgrades, and added new features to handlers
- Summarised technical specifications of the data for end users
-
Converted legacy Python code to C++
- Each conversion reduced data processing time by ~10x, speeding up daily delivery to clients and simultaneously reducing processing costs
- Including several market data handlers (Tokyo, Turquoise), performing acceptance testing to ensure no regressions
- Expanded a common orderbook rebuilder process to be compatible with all Level 3 venues
- Implemented a Python API for a C++ process, allowing users to rebuild the top N orderbook levels from the original orderbook events
-
Worked alongside internal client support to promptly resolve client questions and issues, liaising with market data providers and exchanges as necessary
-
Supported teammates, helped improve practices and productivity
- Mentored other developers on C++, Git, and Python
- Implemented a module system for the C++ market data handlers to significantly improve local build times during development (see blog post)
- Developed and improved the framework for C++ market data handlers, making development safer, easier, and faster
- Developed & improved tooling and internal documentation
Sinara
Sep 2020 – Sep 2022
Software Engineer
At Sinara, I worked on software for financial organisations, particularly trading platforms and market data handlers.
-
Developed a multicast market data feed handler (C#)
- Implemented decoding, processing, and storage of the binary data feed
- Created an expansive automated unit and integration test suite
- Created tools to support development and testing, including a market data emulator for simulate simulating scenarios, and a market data book visualiser
-
Worked on an in-house trading platform, SinaraTLC (C#)
- Designed and implemented new microservice components
- Extended functionality of the platform's matching engine
- Added new features to and improved the web frontend
- Improved project automation, improving the developer experience
-
Developed a trading platform for the London Metal Exchange as part of a technology modernisation project (C++, Java, Python)
- Assisted in the design and implementation of new components to integrate the platform with other systems within the exchange with Apache Kafka
- Worked on resiliency features for new components
- Applied changes to existing trading platform components to adapt them to the LME's commodities market
- Improved the existing build environment and development experience
- Introduced development tools for catching problems in code, and fixed issues that were highlighted
- Improved development tools, including a FIX trading client
-
Designed, implemented, and executed automated unit and integration tests, as well as quality assurance tests
-
Wrote technical documentation to assist other developers, and user documentation intended for users and administrators
Feral Interactive
Jun 2018 – Aug 2019
Game Programmer (Student Placement)
As a developer at Feral I worked on bringing more games to macOS and iOS.
-
Delivered the bulk of the 64-bit port of Total War: Shogun 2 for macOS, with similar patches used to later port other games in the franchise
-
Assisted the release of Tropico for mobile, primarily working on the touch camera controls and improving performance
-
Was heavily involved in the development of Company of Heroes for iPad, implementing many of the controls and UI changes needed to bring the game to touchscreens
I jumped into several large codebases - including multiple game engines - that were originally developed with Windows as the target platform. I learned how to pick up new projects and explore and understand them, being able to quickly start fixing bugs and implementing new features.
Using C++ throughout my placement earned me a deeper understanding of the
language, as I debugged and fixed cross-platform bugs including undefined
behaviour.
To support development, I wrote a tools and libraries, including a generic
library for real-time strategy touch camera controls which was used in both
Tropico and Company of Heroes ports.
Being the main IDE for Apple platforms, I used Xcode throughout my placement, and also made extensive use of LLDB to debug games and fix obscure bugs.
Education
University of Nottingham
Sep 2016 – Jul 2020
BSc Hons Computer Science with Year in Industry
Graduated: 24th July 2020, first-class
Dissertation project: Mining and analysing public government data of
investment into research & innovation, applying some network and data analysis
techniques to explore relationships and collect statistics.
Projects
Microlator
(2020) – C++ (20), CMake
A C++ emulator library for the 6502 microprocessor, aiming to make use of modern C++ and best practices.
Organisations
(2017) – Lua, MySQL
An addon for the game Garry's Mod. It allows players to create, join, and manage groups within a game server. Players can set a bulletin, manage their members and the group's bank account.
Other interests
In my spare time I also enjoy baking, and fiddling with open-source
software. Some of my open-source contributions can be found on my GitHub
profile.
My personal computers and servers run a distribution of GNU/Linux, so I've a good
understanding of how to install, use, and maintain these systems.
I've completed some exercises on Root Me to test my knowledge of computer security and learn more about it.