On one project I was there from the first line and stayed sixteen years. On the next I took over a system that was already running, and I have looked after it on my own since. The first taught me what an early decision costs years later. The second taught me how to work my way into somebody else's code instead of throwing it away. I enjoy both.
Where I have worked
since 2024
An e-commerce platform, single-handed
I came in as the only developer on a project that was already running. Since then, front end and back end in PHP with Laravel: product and stock management, the UPS and FedEx integrations, a sturdier DATEV interface. I introduced PHPStan and CI/CD pipelines, moved the shop off its iframe-based legacy code onto a single-page application, and containerised the PHP microservices onto a local Kubernetes environment. Architecture, deployment, monitoring and log analysis are mine.
2007 to 2024
A community platform, from three developers to five million users
Sixteen years on the same product, starting as one of three. Things I drove myself: the move from plain JavaScript to TypeScript, the real-time chat on Node.js and Socket.IO, the design and implementation of a feed and timeline for millions of users, a voting feature on Apache Cassandra, two-factor authentication, and an IntelliJ plugin with code inspections of its own. Things I helped build: session management and security, a GraphQL API in TypeScript, the payment provider integrations, and an OAuth2 identity management system as a service of its own.
How I work
I spent long enough building things that already existed. Today I would rather get everything out of a framework than replace it. Symfony and Laravel can do more than most projects ask of them. I can tell good architecture by how easily new requirements fit into it. Static analysis and automated pipelines are part of a project from the start for me, and so are security and performance. That is what keeps a project quick to change two years later. And then just get on with it.
Operations and infrastructure
This website is also where I learn. I taught myself the server, the delivery and the hardening here because there was nobody to hand them to. That means Docker Compose in development and in production, Ansible to set up the machine and GitHub Actions to build and ship. Also encrypted secrets, a tunnel instead of an open port, encrypted backups and retention jobs that actually run. None of it is big, but it all runs.
Automation
At the moment I mostly work on taking data out of other systems reliably and traceably. Steps that somebody used to start by hand I turn into repeatable processes, some of them with n8n. Alongside that, Kubernetes: the microservices run on it, so far in a local environment.
AI in my working day
I work with Claude Code every day. It takes the repetitive part off my hands so I can think about architecture and domain logic. I do not take code I do not understand. Much of this website was built that way. Every decision is explained in the repository, so the next person does not have to guess, and that includes me.
Toolkit
- Back end: PHP, Symfony, Laravel, Node.js
- Front end: TypeScript, Vue.js, React, Angular, Tailwind CSS
- Data: MariaDB (master/slave and Galera cluster), PostgreSQL, Apache Cassandra, Redis, Memcached, Elastic Stack
- Interfaces: REST, GraphQL, OAuth2, OpenAPI
- Operations: Docker, Kubernetes, Helm, Ansible, GitHub Actions, Terraform, AWS
- Quality: PHPStan, Pest, PHPUnit, Playwright
- Working together: Scrum, Jira, Confluence, Miro
Education
Diplom-Informatiker (FH), the German pre-Bologna degree in computer science, from Hochschule Hof, 2003 to 2007, in applied computer science. German is my first language, English my working one.
In my spare time
A CNC mill for wood and aluminium, designed and built by me. A heating controller reverse-engineered over its COM port and wired to Discord so I can see what it is doing. InDesign extensions that typeset print catalogues instead of somebody doing it by hand. And 2D game mechanics in Unity and C#, out of curiosity.
Enquiries
Have a cool project, a team looking for someone, or a job to fill? Then get in touch. I am not actively looking, but I am happy to hear from anyone. There is one condition: fully remote. I live in Upper Franconia, and what there is locally does not match what I can do. I would most like to work where good engineering is taken seriously.