About bits and atoms
I'm a software engineer in Denmark. I write Go and build backend systems that stay fast, predictable, and reliable under real load. I started in games and now work in logistics, helping the transition to sustainable freight 🚚.
I'm a big fan of Go. The slightly awkward 2009 Go programming language promo with Russ Cox hooked me. A few months later, I used Go in a college paper on concurrency. Before that, I wrote C for toy robots and school projects, and I picked up Python at work. Go felt like fresh air: simple abstractions, fast feedback, and enough control.
One of my first larger Go projects was an open-source Redis client. Redis uses a text protocol over a socket: send a command, get data back, or mutate state. Building the client taught me to measure first, profile before optimizing, and keep network code simple under load.
I've written Go professionally since 2012. At KoGaMa, I built performance-critical services with Michael, Christian, and Jacob. We scaled to millions of users with weekend and holiday peaks. Our model produced high traffic and low conversion, so cost mattered. I focused on simple systems, commodity hardware, and our own content delivery setup.
At GameClub, I worked with Oliver and Niels on backend services and automation. While Eli maintained a catalog of more than one hundred iOS and Android games, we built workflows that let a small team keep that catalog running on modern devices and keep shipping updates.
Today I work at a logistics company, where I lead development on a Postgres-backed platform. The codebase and operational demands have both grown over the years. I enjoy that tension: keeping systems fast and reliable while the business moves toward more sustainable freight.
I spend much of my study time on database internals: B+ trees, storage engines, indexes, and query behavior. My notes on database systems are my working notebook.
Performance work is a constant thread in my career, from debugging regressions to redesigning systems that hit growth limits. I like to start with rough system math, then validate with profiling and tracing.
I recently ran a workshop on LLMs and software development. My view is practical: assistant workflows are the most useful for me today, fully autonomous agents still break on edge cases, and most visible gains come from longer thinking plus tool loops. In daily work, I use AI to draft and explore, then move from plausibility to verification with execution, tests, and review.
I tinker to learn. Some projects stay small, and some become tools other developers use.
I like teams with direct communication and short feedback loops. We get the best results when we write things down, challenge ideas early, and ship in small, reversible steps. I optimize for safety, performance, and developer experience.
I share code on GitHub. You can also find me on X. My work history is on LinkedIn.