Personal details

Thomas M. - Remote full-stack developer

Thomas M.

Based in: 🇬🇧 United Kingdom
Timezone: London (UTC+1)

Summary

Previously worked on compilers for machine learning on the IPU at Graphcore, and before that ported games from Windows to macOS and other platforms at Feral Interactive. Now contracting in different fields, most recently for King on Candy Crush Soda Saga.

Strengths in low-level debugging and realtime/non-realtime performance optimisation for C++ applications. Experience with LLVM/MLIR tooling for building compilers, Boost, Intel TBB, OpenGL, Apple Metal and more.

Work Experience

Senior Software Engineer
King | May 2023 - Dec 2023
C++
Xcode
GUI
Responsive Design
macOS Development
Mobile game
- Worked on contract within the Monetisation & Economy team for Candy Crush Soda Saga - Worked entirely with C++ and King's in-house tech to develop new game features both independently and as part of small cross-functional teams. - Largest single project was a complete revamp of the in-game shop over 3-4 months
Software Engineer
Graphcore | Feb 2018 - Jan 2023
Python
C++
GDB
CMake
LLVM
- Member of the team responsible for the Poplar compiler/runtime, and PopLibs libraries. Responsibilities include: bugfixing, implementing new features, functional & performance testing, runtime performance optimisations for IPU, compile-time optimisations for Poplar compiler and PopLibs APIs on the host. - Technical leadership & consulting for Poplar & PopLibs. - Working as part of a team responsible for design, planning, and implementation for an unannounced internal software project making heavy use of MLIR tooling.

Education

University of Bath
Bachelor's degree・Computer Science
Sep 2011 - Aug 2015

Personal Projects

Mad Max macOS portIconOpenNewWindows
2015
C++
Xcode
OpenGL
Directx
3D Graphics
Windows Development
macOS
While working at Feral Interactive I was lead developer of the macOS port of Mad Max from receiving the original C++ 11 source code targeting Windows/DirectX through to the final release over the course of 1 year. For ∼9 months I worked alone, and for the remaining time additional developers joined me to work on a Linux port and bring the game to release quality. Some of my contributions were: * making the project compile and run in Xcode (and its version of Clang) * adding missing features to in-house implementations of Windows/DirectX/other third party APIs using macOS/OpenGL/OpenCL APIs and more * debugging/fixing initial major issues (spanning functional, graphical, and performance issues) such that the game was playable before putting it through several cycles of QA * performance optimisations to reach the widest possible range of target hardware The project successfully met QA requirements and released in October 2016.
Top-k & sort implementations for Graphcore IPUIconOpenNewWindows
2021
C++
Assembly
GDB
While working at Graphcore, I created an optimised implementation of top-k & sort based on the bitonic sorting algorithm over the course of 7-8 weeks. I adapted bitonic sort to implement top-k, and to the distributed memory architecture of Graphcore’s IPU. I wrote kernels to run on individual processors using C++17 & assembly (custom ISA) with coordinating code in C++ 17. The top-k operation in a key target application for the new implementation was ∼48x faster than with the previous heap-sort based implementation, resulting in the application as a whole running ∼2x faster. This implementation continues to be used today in a wide range of applications.