I’m a software engineer based in Seoul with a background across full-stack development, DevOps, and engineering management. Over the years I’ve worked on customer support platforms, content creator apps, and on-premise LLM infrastructure. The scope has been pretty varied.
I care most about software that actually holds up. Solid infrastructure, good test coverage, and shipping things that work in production. Right now I’m doing freelance DevOps/MLOps work — high-availability database clusters, LLM serving, and keeping model output quality consistent across deployments.
Outside of tech, I chair Kiwi Alumni, a community for New Zealanders living in South Korea. It keeps me grounded in the people side of things, which matters just as much as the technical.
From my MSc at Kyung Hee, this SCI(E) paper on optimising drone base station placement has since been cited by dozens of studies across ten-plus countries — including work in Production and Operations Management and Applied Geography — on everything from emergency medical response and police drone deployment to urban air mobility and disaster relief logistics.
DevOps / MLOps Engineer — Freelance
Mostly on-premise infrastructure work. I built a high-availability PostgreSQL cluster on Patroni and etcd, then designed and deployed the serving infrastructure for LLMs running on the same hardware. More of the job turned out to be quality control than plumbing — watching traces and multi-turn conversation flows to find where output drifted, and keeping model behaviour consistent across deployments.
Chairperson — Kiwi Alumni
A volunteer role running the community for New Zealanders in South Korea. I refreshed the logo, launched a new website so members could actually find what was going on, and did the SEO for both Google and Naver myself. The rest is people work — organising events, and building relationships with the New Zealand Embassy and education institutions here. The social following grew along the way.
Engineering Manager — DNK
I ran a team of engineers, which meant most of my time went to mentoring and to keeping projects moving rather than writing code. I owned delivery from scoping through to release — timelines, resourcing and risk — and acted as the main point of contact between engineering and the rest of the business. The part I cared about most was pushing for engineering practices that would still hold up after I’d moved on.
Full Stack Developer — Picky
Acting lead developer on a content creator platform, alongside a community platform for cosmetics and skin care. The backend was spread across FastAPI, Rust Axum and Quarkus with Next.js on the front, which is more stacks than I’d choose today. I also handled the operations side — Serverless Framework, CI/CD and AWS.
Full Stack Developer — Oqupie KR
Two years on a customer support platform built with Django. Alongside the application work I looked after the infrastructure — Kubernetes on AWS, and the CI/CD that got things there. This is where I learned how much of shipping software is actually operations.
Research Assistant Manager — XiiLab KR
Research work on two unrelated things: generating training data inside game engines, and building a UI for renewable energy monitoring. The game engine side was the more interesting of the two — a rendering engine doubles as a data factory better than you’d expect.
Network Operations Engineer — Spark NZ
Part of a team of over a hundred keeping the network running for millions of customers across New Zealand. I handled outages and escalations, and kept the rest of the company informed when things broke — which is where I picked up the habit of writing incident updates people can actually read. I also supported cell tower and mobile base station deployments during large events, and helped out with international roaming.
Associate Business Analyst — Methanex NZ
A short stint building a data quality framework — working out what good looked like for their data, then investigating where it fell short and recommending fixes. Only three months, but it is where I first saw how much downstream damage bad data quietly causes.