About

Hi, I'm Ollie! I'm a second-year Computer Science student at the University of Warwick, working across full stack development, embedded systems, and machine learning. I enjoy a challenge, and I'm drawn to seeing complex problems through to a complete and robust system.

I like building it all, from firmware up to the browser: knowing how every part works, and how the layers interlock to come together as one. Building something bottom-up, from embedded devices through backend APIs and storage to a user-facing front end, while thinking about security and performance along the way, gives me both viewpoints. I can work through the small, intricate details while still seeing the bigger picture.

Lately that's included machine learning, where computing and my love for music collide: Heimdall listens to a guitar signal and works out which effects have been applied to it, using a CNN I designed and trained from scratch in PyTorch.

Outside of computing, I play guitar (I got my first guitar for Christmas when I was six!). I listen to as much music as I can (it's my favourite thing to talk about), and you'll find a few albums I've had on repeat lately further down. I've also recently been working on my own guitar pedals, which gives me an excuse to learn a new riff instead of finishing the last one. When I'm away from a screen and an amp, I'm usually out on a long walk with my dog :)

Me as a child, sitting on a sofa playing an acoustic guitar
Age six.
Me now, sitting on the floor in a sunlit room playing an electric guitar
Now.

Tech stack

What I reach for first

Python
My default for anything with moving parts: services, data handling, one-off scripts.
Bash, Linux & Docker
Everything I build ends up containerised on Linux, with Bash for the glue.
Postgres & TimescaleDB
Postgres by default, TimescaleDB once the data is time-series.
MQTT, AMQP & RabbitMQ
Sending data between services without either end needing to know about the other.

For more varied projects

C & MicroPython
Microcontroller work: MicroPython for simplicity and convenience, C when it needs to be small, fast or closer to the hardware.
TypeScript, React & Tailwind
Front-ends, for anything that needs an interactive UI.
PyTorch
Training and running CNNs in Python.
LLM workflows & MCP
Pulling structured data out of messy input and validating it; MCP for giving models access to tools.