Hey, I'm Matt.

You can also call me Matti.

I'm a Software Engineer, Game Developer, Tooling Engineer and UI Developer.

I'm a software engineer with a wide range of specialties that loves solving problems and delivering high quality experiences for end users. You can check out some of my work below. You can also view the source for this site on github.

Currently working at OP, previously Noice, Epic Games, and Unity Technologies.

Recent projects

desktop app project - Noice Game Connect
Noice Game Connect desktop / app

Noice Game Connect

desktop app Full-stack

Electron, React

Game Connect is an Electron app I built independently from the ground up to detect game events and forward them to Noice servers as performantly as possible. While the app on the surface is quite intentionally featureless, it is filled with a lot of features built-in to the architecture to ensure that the app can be self-sustaining and trivial to maintain for years to come, with minimal impact on end-user-experience.

I implemented the initial prototype of the app all the way through completion, the only thing not done by me being design and finding a nice place in the Noice infra to store the different release version binaries. I also implemented the server-side event detection layer for Valorant, the first game to be supported via this new game event detection approach, as well as the entire architecture and dev tooling for adding new game support using this new streamer-side event detection strategy.

mobile app/game project - Noice Mobile App
Noice Mobile App mobile / app, game

Noice Mobile App

mobile app/game Project Lead / Developer

React Native

The main driving force behind the Noice mobile app was to get the Noice experience into a native, on-the-go experience without sacrificing what makes Noice special, while re-using as much core logic as possible. I scaffolded and architected the project, settling on React Native so that we could re-use as much pre-existing logic from the rest of our stack as possible.

Outside of the project architecture, scaffolding, rounting, and fundamentals; I implemented features and provided native code support for the rest of the team. Features I touched or implemented included app authentication, home view (stream listing), channel view, live stream view, as well as all webrtc video/audio stream related implementations.

browser app/game project - Noice Streaming Platform
Noice Streaming Platform browser / app, game

Noice Streaming Platform

browser app/game Front-end Lead / Game Developer / Tooling developer

React, Golang, Three.js, Node

Noice is a next-gen streaming platform that transforms how viewers interact with livestreams. Instead of viewing streams, they play the stream. Being a founder of the company, and starting when there were only 7 people at the company and we were building prototypes, it is quite difficult to pinpoint every single project I have worked on at Noice. I have been involved in every aspect of the front-end of at Noice during every iteration, and am incredibly proud to say I built a front-end team filled with the most talented developers I have ever met, as well as built the most healthy and collaborative front-end team environment I have ever had the fortune of being part of.

That said, if I were to talk about the features I fostered and am proud of, there are a number that fit the bill. I helped construct a project architecture that allowed the team to scale and share code throughout multiple clients seamlessly, as well as implemented tooling to ensure that the developer experience was as good as possible for every developer no matter how they were working. I implemented the core of the main platform, from routing, project architecture, to the glue that connects the client to the backend. I implemented the core game UI architecture as well as all of the game state syncronisation management, and all of the tooling around it to allow the team to iterate on design changes as effectively as possible. Finally, I implemented the first 2 iterations of our client-side 3D crowd rendering stack as well as tooling round it to allow our developers to iterate on the 3D environment seamlessly, and designers to see what their models will look like in production as easily as possible.

Additionally, I have also been a large contributor to the Noice tooling stack. I built a design token system that exports design variables from a single source-of-truth to both css and raw typescript (for React Native consumption), a CLI-driven bot that allows load testing of channels, chat, game, and 3d environments, dev tools game event detection, and a video annotation tool that allows Noice to visually validate, iterate, and manually contribute to game event detection.

library app project - irsdk-node Package
irsdk-node Package library / app

irsdk-node Package

library Solo Project

Node.JS, Node.JS C++ Api, Electron

irsdk-node is a Node.JS package for consuming the iRacing SDK via Node. This makes it possible to build overlays, data analysis tools, and other general tools for improving at iRacing. This was my first project that used the Node C++ API, and as I am an avid sim-racing enthusiast holds a special place in my heart.

This project was spawned due to my wanting to build my own iRacing overlay, which is very much in progress but not yet complete, but not liking the currently available packages/tools that provide API’s to consume the iRacing SDK. I wanted a performant, type-safe 1:1 API that would allow me to build rich UI’s around the data available as safely as possible, which was not available at the time of creation. Not only did I build and open source the package, but also built a workflow to generate example output files, which can then be used to generate safe and accurate TypeScript type declarations to include with the library.

mobile game project - Twenty Numbers
Twenty Numbers mobile / game

Twenty Numbers

mobile game Solo Project

React Native, GameKit, Google Play Services

Twenty Numbers is a mobile game that is impossible. I wanted a low-complexity project to experiment with, and after a friend showed me the twenty-numbers game I settled on this; a game revolving around trying to place 20 random numbers correctly within a list. My goal for the project was to improve my process of building and shipping React Native projects, as well as learning how to consume GameKit and Google Play Services to improve the user experience of a game with OS-level features.

The project was a success, and I feel I delivered the most polished Twenty Numbers game experience on mobile devices. Additionally, I was able to successfully bridge both the GameKit and Google Play Services API’s that I needed into a singular API that can be consumed by React Native code without any platform-specific branches. I did my best to make sure each view in the app was well-thought out and highly polished; from rich transitions and animations to haptic feedback for common user actions. I also built a statistics analysis system into the app, as well as a edge-based service for customer support that allows users of the app to submit support requests that get sent and organised directly into a private discord server via a Discord bot that I developed, allowing me to have a cost-free private, secure, and fast customer support system.

mobile app/game project - Unity AR Ads
Unity AR Ads mobile / app, game

Unity AR Ads

mobile app/game Project Architect / Game Developer

Three.JS, ARKit, Vision Framework

While at Unity, I was tasked with creating the worlds first AR ads. The prompt, “you’re going to need to be shooting burgers into peoples mouths in a month” lead myself and a small team to developing a web-based AR ad architecture that would abide by all of the existing playable ad criteria (1 file, 1MB in size), while extending the playable ad API’s to allow consuming and using platform-specific AR API’s to deliver high-quality AR ads. It was an extremely unique challenge that I am extremely proud of being able to have a large part of accomplishing.

I built out the initial prototypes of a bridge that could consume native AR API’s and deliver them to a webview for consumption, and then after validating the process I transitioned to a team to build the first AR ads for a number of campaigns. I architected a project template that would allow us to build these ads quickly and efficiently, having a major role in how we structured and developed each ad so that we could iterate fast and deliver the smallest possible deliverables to adhere to existing playable ad acceptable criteria. Outside of the architecture of the projects, I contributed to the general development of each playable ad, implementing things ranging from UI, interaction systems, collision detection, and general environment scripting.

While AR ads may not have gone anywhere, I am incredibly fortunate, thankful, and proud to have been able to contribute to the projects as well as create one of the first working implementations of the WebXR spec.

Sometimes I also talk about stuff.

When possible, I love sharing my learnings and ideas with others. Below you can see a list of some of the more recent times I have been lucky enough to chat about things I am passionate about.

Wanna chat?

Wanna work together? Wanna ask something? Wanna listen to me yap about something tech related? Get in touch!

This portfolio is still a work in progress, and there is still plenty I would like to do to it, time permitting. Please keep checking back to see it evolve!

Small screen warning
This site is not currently optimised for mobile devices/small screens. Please go to a computer for the full experience!