Hello World, I'm Adam.

An engineer from Cardiff, Wales. Ten years of platforms, backends, frontends and the infrastructure underneath, plus a long tail of projects that peaked my interest. None of it was planned, it was a series of successful stumbles, each one mostly figured out as I went.
This site is the record of that: what I built, and the lessons learnt along the way.
Games, and some really interesting problems
Lead engineer at a games consultancy in Cardiff, working with studios whose ambitions usually run ahead of their infrastructure.
The running theme is walking into complicated projects and working out what actually matters. Two things have mattered more than anything technical. The first is focus: there is always more to do than you can do, and picking well is most of the job.
The second is getting as close to the client as possible: how they actually work, the nuances of their business, the things nobody writes down. Only then do you have a fighting chance of building them something genuinely valuable rather than something technically correct.
Games is a good place to be doing this. The clients are often whimsical, the briefs are genuinely creative, and a lot of what is settled practice elsewhere is still up for grabs here. Bringing that in from other industries is a really satisfying part of the job.
Some of my favourite projects
Four projects that were harder than they looked, in the most interesting ways
Game server observability for Amazon GameLift Servers
2024 · Platform
The observability system behind Amazon's official GameLift Servers SDKs
Averages hide exactly the frames you care about. Once the timing signals moved to histograms and percentiles the problems became obvious, and they had been sitting there the whole time. Measuring the right thing beats measuring more things, and on anything latency-sensitive the right thing is almost always the tail. The tick budget taught me the rest: the measurement has to be cheaper than the thing it measures, and cheap on every tick rather than on average, because a spike from the collector is indistinguishable from the bug you were sent to find. Designing for three languages added the last piece: the hard part is not the code, it is agreeing what a metric means and holding that meaning identical across implementations, because the moment two SDKs disagree the dashboard stops being trustworthy. And an SDK nobody can work out how to switch on measures nothing at all, which is why the docs and the default dashboards mattered as much as the instrumentation.

ScrapKings
2026 · Game
A top-down arcade roguelike about bolting a ridiculous machine together mid-run.
This one is on pause, and I would rather say so than pretend otherwise. The scope grew faster than I could keep up with and the summer of 2026 has been a glorious one. Due to pick it back up in October. Writing the design pillars down before building anything was the best decision on it: driving has to be fun with zero upgrades, behaviours over stat modifiers, readable chaos. Those three lines killed a lot of bad ideas cheaply.
Cheddar
2025-26 · Robotics
A six-wheeled rover that crabs, spins on the spot, and climbs stairs.
I shelved this for the best part of a year over a serial connection. I was set on running it over the GPIO pins, and it worked perfectly in isolation - Pi to ESP32 to drivers to motors and servos - and fell apart every single time it was integrated. I came back a year later, plugged in a USB cable instead, and it worked immediately. Weeks of pain resolved by the most boring option available. Keep it simple, stupid rang very true that day.

Grimoire ML
2025 · AI / Web
Natural-language Magic: The Gathering search, as a small fleet of services.
Asking a language model to emit search syntax directly is brittle and impossible to debug. Putting a structured intermediate representation in between turned an unpredictable component into a testable one - I could exercise the whole query layer with no model involved at all. That indirection is what made the results trustworthy, and it is the bit I would do first next time rather than last.
If you’re sat on a weird idea wondering whether it’s worth building: it is. Half the things on this site are stalled, shelved or a bit broken. Give it a go. See what happens.
Say hello.
Whether it’s work, something you’re stuck on, or a project you’re thinking about starting, I’m happy to chat through it.
- Something you're building, or thinking about building
- A problem you're stuck on and want another pair of eyes on
- Anything on this site you want to know more about
- A role or piece of work worth a conversation


