I build backend systems that teams and AI agents can run and change.
I take backend problems from schema to deployment and stay on for maintenance. As CTO of a legal platform, I led a legacy migration, built billing and access control, and ran the system in production. I adapt to the team's stack and leave code the next engineer can change.
9 years of programming and building web platforms for public services, SaaS products, and internal operations.
6+ teams across legal, education, media, open source, research, and operations.


How I work
A typical engagement, from the first brief to handover.
Start from the constraints
Before any design, I list what the system has to live with: data quality, budget, team size, deployment, and who needs access. I turn that into a short brief the team can challenge early, not after launch.
Model the business, not the tables
I organize code around business capabilities such as billing, identity, and access, and keep the rules in the domain layer, away from the framework and the database. Rules like expiry and eligibility become named, testable code instead of conditions scattered across controllers.
Test at the right boundary
Domain rules get fast unit tests. Use cases run against in-memory adapters, so a scenario like "a covered user cannot buy a second subscription" reads as a specification. A few integration tests cover the database, HTTP, and payment-provider edges. Time is an input I control, so no test depends on the clock.
Change live systems in stages
I refactor and migrate live systems in stages, with legacy data and real users in mind. Architecture checks fail the build when a dependency points the wrong way.
Work with AI agents, with guardrails
I use coding agents to draft code, write tests, and handle repetitive refactors. They work from conventions written in an AGENTS.md file, and every change has to pass formatting, lint, and type checks. I review each diff, and architecture decisions stay with me.
Hand over, don't just deliver
I record each decision with the options I ruled out, keep documentation short, and make ownership, access control, and audit trails explicit. The team can then run the system without me, and so can an agent.
Selected roles
Roles that shaped how I approach software, operations, research, and maintenance.
Technologies
Tools I use in production and research.
What I use for production systems, internal platforms, and research prototypes.
Backend
Symfony, PHP, MySQL, PostgreSQL, Doctrine, Ruby on Rails, Redis, Python, Jupyter Notebook, Neo4j, Hono, tRPC
Frontend
React, Vite, TypeScript, Next.js, TanStack Query, Tailwind CSS, TanStack Start, React Native, Leaflet, OpenStreetMap, shadcn/ui, Zod
References

Salvatrice Bahindwa
Business Lawyer, Managing Partner at LegalterLaw

Guus der Kinderen
Founder at GoodBytes.nl

Henrique Mukanda
Co-founder and Deputy Chief Executive Officer at Itot Africa

Uriel Balela
Software Developer at Silicon Overdrive PTY (LTD)

Kileshe Kasoma
Vice President, Ukamili Digital City

Josue Yenga
Data Analyst | Project Management | Artificial Intelligence and Data-Driven Solutions.
Research alongside the engineering
Peer-reviewed research in applied computing, published in journals and conference proceedings.




















































Need a software engineer?
Send the goal, stack, and timeline. I'll reply with a next step.





