What I Do


I work as a software developer across multiple domains and platforms, ranging from low-level embedded systems to modern application development.

My work includes:

  • Embedded C development for microcontrollers such as ATmega
  • C++ development on Linux and Windows. (I am old enough to have used MFC!)
  • C# and .NET MAUI development for Android
  • Designing systems that are testable, well-documented, and specification-driven

I am equally comfortable implementing a scripting-language compiler from scratch as I am designing a web application using Angular/TypeScript, or implementing the application backend in C++.

The last few years I have focused on low-level programming in C for the ATmega MCU series, implementing an EVSE based on the EN IEC 61851-1:2019 standard.

I’m a sucker for Vim which has been my primary editor of choice for over 20 years. Lately I’ve been looking for a viable GUI-alternative with Vim emulation but I’ve yet to find something that ticks all boxes. The closest is Code or maybe Zed with a minimalized configuration (I hate bloat).

Technical Stack

Languages

  • C (Linux, embedded, bare-metal) since around 98/99
  • C++ (Linux, Windows) since around 98/99
  • C# (.NET, .NET MAUI) since 2005
  • TypeScript (mostly in combination with Angular) since around 2017
  • CSS/HTML (incl. SCSS/HTML5) since before time…

Platforms

  • ATmega microcontrollers
  • Linux
  • Windows
  • Android

Frameworks

  • ASIO
  • Angular
  • Qt / QtQuick

Practices

  • Unit and integration testing
  • Specification-driven development
  • Test-driven development

Tools

  • build2
  • git / Gitea
  • Podman / Docker
  • Proxmox
  • Debugging at both hardware and software levels

Engineering Philosophy

I take pride in building software that is understandable, verifiable, and durable.

I enjoy reading, writing, and working from specifications. I also value precision in both implementation and communication. Writing tests and documentation is not a chore for me; it is part of the engineering process and a way to make systems trustworthy for future developers, including myself.

I prefer simple, explicit designs over clever ones, and I aim to leave codebases in a better state than I found them.

Modern C++ in Practice

I use modern C++ as a means to write safer, clearer, and more expressive code. I actively leverage contemporary language and standard library features to make intent explicit and to shift correctness checks as early as possible, preferably to compile time.

Resource management is handled consistently through RAII, avoiding manual lifetime management and making ownership rules explicit. I try my best to design APIs that are hard to misuse while also being easy to test.