Skip to content

About

I'm Jason Yang, an engineering manager at Frontify in Switzerland. My team owns the media delivery path end to end: the engine that processes and serves every image and video for our customers, and the Kubernetes and CDN infrastructure it runs on. We build the product features on that path, from bulk asset transformation to fast previews, and we run the platform underneath them. I lead both, and I still write and review code.

Before that I was co-founder and CTO of ImpactNexus in Berlin, a sustainability-reporting SaaS. I took over an existing engineering team, built the company's first structured hiring process and grew the team through it, and owned the engineering cost base and tooling decisions. I built the delivery pipeline from zero: CI gates, zero-traffic deploys with gated promotion, and a preview environment for every pull request, taking the build from forty minutes to two and quadrupling test coverage. I introduced end-to-end tracing, cut API response times from seconds to under a hundred milliseconds, and shipped the audit trail and admin tooling a regulated domain needs. The team that followed kept building on that foundation rather than replacing it, and my direct reports' feedback on how I led them was the best I have received. Earlier I was the third engineer at Leapsome through its Series A, and a backend engineer on the Growth team at Grab in Singapore, writing Go microservices and the deploy tooling used by a thousand engineers. I started my career at two large internet companies in China, where a hundred million users on a single product is normal and a few milliseconds of latency is a lot of money. That is where I learned how systems behave at real scale. It is also where I ported XHProf, Facebook's C profiler for PHP, to PHP 7, which meant learning the Zend engine from the inside: execution hooks, opcode handlers, and the memory leaks and segfaults that come with them. Other people still use that port. I have always been drawn to what happens below the framework, the runtime, Linux, the kernel, a core dump in gdb, and it keeps paying off: the bugs that are not obvious from the application layer are usually the ones worth solving. Eleven years of engineering, the last few leading teams. Mostly Go, Python, TypeScript and Node.js, and PHP.

What I'm good at, and what I write about here: building high-performing teams that build high-performing systems. In practice that means developer experience and delivery discipline (CI gates, preview environments, staged rollouts, DORA metrics), Kubernetes platforms, CDN and media processing pipelines, observability that leads to real SLOs, and leading small teams through change. I also enjoy explaining a complex system to someone who does not build systems for a living, whether that is a founder, a customer or a board. I think that is part of what makes a good engineer.

This blog is where I write down the problems I run into at work and how I solved them: the decision, the tradeoffs I weighed, and what I would do differently now. Most posts are short. Every so often there is a longer write-up when a topic deserves it. Everything here is my own opinion and not that of my employer.

The best way to reach me is jason@jyang.ch, and my code lives on GitHub. If a post helped you or you think I got something wrong, I'd like to hear about it.