I'm Michael, a data engineer from Darlington in the north-east of England. I come from a farming family (yes, that's where the surname comes from), which probably explains why I ended up in a job that's mostly about getting things to grow reliably in unpredictable conditions. Just with data pipelines instead of barley fields.
I've spent my career so far building the infrastructure that moves data from where it lands to where it's useful. I like the work because it sits at the intersection of software engineering and problem-solving at scale, and because when you get it right, everything downstream just works.
What I Do
At Salesfire, I engineer the data infrastructure behind an ecommerce personalisation platform: real-time pipelines ingesting billions of behavioural events across 700+ retailers, a ClickHouse data warehouse powering analytics, and an identity resolution system built on Neptune ML that stitches anonymous shoppers into unified profiles. Day to day that means SQL, TypeScript, and a lot of AWS and Terraform, with Python for data analysis.
Before this I worked across ecommerce, fintech, and ad-tech, starting as a software engineer building Python scrapers and product feed platforms. I gravitated toward data problems early: high-volume ingestion, messy source systems, the gap between raw data and something a business can actually use. I eventually made the switch to data engineering full time.
How I Think About Engineering
Every pipeline breaks eventually. I build for idempotency, at-least-once delivery, and clear failure modes so that re-running is always safe and the blast radius is small.
If a pipeline runs without metrics, quality checks, and alerting, you don't know if it's working. You just know it hasn't visibly broken yet. I instrument everything.
If it's not in a Terraform file or a Docker image, it doesn't exist. Manual setup is a liability. Reproducibility is a feature.
Postgres for transactional work, ClickHouse for analytical queries, Kafka for event streaming. I pick tools based on the workload, not the hype cycle.
My Setup
Linux is my daily driver at home. I love open source and like understanding what's running under the hood, but I'm comfortable working in whatever environment the team uses.
Neovim is my go-to. I enjoy tinkering with the config and the speed of staying in the terminal. That said, I'll happily pair in VS Code or whatever the team prefers.
tmux and keyboard-driven workflows are what I reach for personally. What matters more to me is that the team has a setup that works well for everyone.
Away From the Keyboard
I play regularly, mostly rapid and blitz online. I like that it rewards the same kind of thinking I use at work: pattern recognition, thinking a few moves ahead, and knowing when to trade complexity for a cleaner position.
I cook most nights and genuinely enjoy it. I lean toward big, slow dishes: stews, curries, anything that rewards patience. There's something satisfying about a process that takes hours but only needs occasional attention.
I follow rugby union and try to catch as many matches as I can. Growing up in the north-east, it's hard not to end up with a soft spot for the sport. It's part of the fabric up here.
I play in a regular campaign with friends. It's collaborative storytelling with just enough structure to keep things interesting. Also the only context where my spreadsheet habits are considered a personality trait rather than a problem.
I have a real soft spot for retro games. There's something about the constraints of older hardware that forced genuinely creative design. Plus, nothing clears your head after a day of debugging pipelines like a few rounds of something from the 90s.
Growing up on a farm with no light pollution will do that to you. I still get out when the skies are clear. There's a particular kind of quiet you only get when you're standing in a field at midnight looking up.