Simon Klee

Software engineer living in Denmark with a background in the game industry. Working on the transition to sustainable freight 🚚. Fan of building fast software, databases, and all things open source. Extensive knowledge of Go, scaling, the web, and getting products to launch.

Things I've worked on

I'm a big fan of Go. Do you remember the slightly awkward Go programming language promo from 2009? The one where Russ Cox compiles the Go source code and times it. It got me hooked. A few months later, I used Go to demonstrate a concurrency concept in a college paper. Before this, I wrote C for toy robots and school projects — and had picked up Python for work. Go was a fresh breath of air. It had the right abstractions, felt lightweight and easy.

An open-source database client for Redis was one of the first larger projects I worked on in Go. Redis has this fun text-based protocol. You can send a command to a socket, and Redis will return the contents of some data or mutate its state. The project taught me how to write performance-conscious code and how to use Go's profiling analysis tools.

I've primarily written Go professionally since 2012. As part of a gaming startup, I wrote our performance-critical and standalone services in Go. Together with Michael, Christian, and Jacob, we grew the business to millions of users with peaks in weekends and holidays. This reinforced my belief in simple, solid, and performant solutions. The monetization model meant we had many users and low conversion rates. I built solutions to reduce operating costs — such as scaling on commoditized hardware and building our own content delivery system.

With Oliver and Niels, I worked for a few years on GameClub. We focused on homogeneous solutions and automation to scale with a small team. Eli ensured we had a back catalog of over one hundred iOS and Android titles that we updated to run on modern iPhone and Android devices. I built network servers in Go and tooling for automation to support developing and publishing such a breadth of mobile apps.

These days I am solving problems for a small logistics company. We have an event-sourced microservice architecture–with NATS as a key component. A setup similar to what you might find in Kafka Streams and stateful/stateless processors — but combined with a dependency graph, that internally allows you to write processors that have dependencies on other processors and so on. The architecture draws inspiration from Martin Kleppmann’s thoughts on “turning the database inside-out” — the commit log becomes a core primitive that you can use to build distributed applications.

Tinkering and projects

I love to explore technologies that challenge the expectation of how we build software today. My current focus is on databases, to become better at understanding possibilities with the tools that stand at the core of most businesses today. My approach is to look at existing solutions — such as PostgreSQL internals, follow industry experts and talks, and explore simple concepts on my own. I'm experimenting with a simple disk-backed multi-version concurrency control database management system written in Zig.

Other projects I have worked on

Specialties

My roles have involved working directly with senior executives, across multiple sectors, on product development, launch, and growing the business from a few hundred customers to millions.