• July 2016: Graduated from Abertay University in 2016, achieving Upper Second Class (2:1) in BScComputer Games Technology.
  • October 2016: Started as Software Developer at Ultrahaptics. I spent the first few months skilling up on Unity and C# as I joined with only what I learned to do the code test.
  • November 2016: Took initiative to consolidate commonly used code/assets across demos into a demo development framework which I then became the maintainer for.
  • May 2017: Business trip to The Hague. First time abroad!
  • June 2017: Unite 2017 in Amsterdam.
  • March 2018: GDC 2018 in San Francisco. First time in the US & outside of Europe!
  • November 2018: Started development of Element.
  • May 2019: Ultrahaptics acquires Leap Motion.
  • July 2019: Business trip to Honk Kong, Wuhan, Beijing, Tokyo, Nagoya and Osaka. First time in Asia, exciting and exhausting covering a lot of destinations in 2 weeks!
  • September 2019: Ultrahaptics rebrands to Ultraleap.
  • September 2019: Element adopted by Ultraleap, move to new team to focus on development of software platform for mid-air haptic devices.
  • November 2019: Start of Covid-19. Scary realizing I was in Wuhan only a few months prior.
  • Feburary 2020: Begin working from home. Living in Bristol city centre, the streets are eerily deserted.
  • December 2020: Bought and moved into my first flat!
  • March 2021: Promoted to Senior Software Engineer.
  • September 2021: Ultraleap reorganizes to focus in on specific verticals. I move to the XR vertical.

Software Engineering Skills

C# - Professional experience in my 5+ years at Ultraleap using C# across Unity, .NET Core and .NET Standard projects. Definitely my most comfortable language to work with.
C++ - Professional experience in my 5+ years at Ultraleap consulting with colleagues on C++ projects. 4 years non-professional experience, all university projects written in C++11.
TypeScript - 2 months experience consulting for a project using Vue.js & Vuetify.
F# - Currently doing AoC 2021 using F# to try it out.
Other languages I've interest in picking up and trying at some point include Rust & Kotlin.


Not gaming as much as I used to but I enjoy games that involve mastering a skill or with novel mechanics - particularly a fan of music/rhythm games. Currently playing League of Legends, Genshin Impact and osu!. Eagerly awaiting Lost Ark release.


Quite a fan of anime. If you're interested, here's my AniList.


こんにちは!Craigといます。 私は初心者で、「WaniKani」と「bunpro」を使って日本語を勉強しています。

Element is an minimal embeddable functional programming language designed to be used as a data format.


  • .NET Standard, Windows, Linux
  • C#, C++, Python, C
  • GitHub


RhythMIR is a content generation tool for music/rhythm games. It analyses music signals to synchronize music features with gameplay elements and estimate tempo. RhythMIR is also a rhythm game.


  • Windows
  • C++
  • 2D Graphics
  • Audio
  • GUI