About Me
Introduction
I am a software engineer with 15+ years of experience building business critical production systems.
My focus has been mainly on backend systems based on the JVM. I am most proficient in the Scala language but I am no stranger to Java. When needed I can also be of help in frontend development where I most familiar with the TypeScript and React combination.
Most systems I have worked on have been distributed in nature so I am very familiar with challenges in this domain. My experience includes:
- Managing distributed systems using Kubernetes or Nomad
- Cloud platforms to host these systems, in order of most familiarity: Azure, AWS, GCE
- Building automated pipelines for Continuous delivery on various platforms such as Azure pipelines, Github Actions and Jenkins
- Using techniques such as CQRS, sharding and caching to scale systems to handle large traffic volumes.
- Storing data in databases: Postgres, MySQL and Cassandra as well as search engines, mainly Elastic Search but also Solr
- Message bus systems such as Kafka and queue systems such as RabbitMq
As well as more technical aspects such as
- CAP theorem and its implications in practice
- Distributed state and it’s challenges, such as preventing split brain
- Dealing with systems that maintain their own cluster state (Akka)
- Different consistency models: ACID vs eventual consistency models such as CRDTs
- Event sourcing
Additionally, the principle “you build it you own it” has always applied for the code that I have written. Meaning I have always been responsible to maintain and operate systems as well. This comes with additional challenges
- Gaining insights into systems and being able to debug them through observability stacks (logs, metrics, traces). Most notably ELK and Datadog
- Responding to issues reported by automated monitors (preferably) or customers
- Being “on call” for 24/7 stand by using PagerDuty
Tech profile
Tier 1 (Daily driver)
Scala, git & Github, Intellij IDEA, Linux, MacOS, Docker, terminal, bash & zsh, ssh, Kubernetes, Kafka, Elastic Search, Postgres
Tier 2 (Proficient)
Java, Typescript, React, helm, nginx
Work Experience
Backend Developer at Team B2X
Team Responsibilities:
- Management of the primary service for label/parcel intake, > 1 million parcels per day. Including 24/7 on-call duty
- Management of My DHL Parcel (MDP) portal for business customers
Tech stack
Most of the backend is written in Scala using various frameworks such as akka, Play and tapir. A small percentage is using PHP. Services deployed on Kubernetes hosted on Azure, deployed using Helm with Azure pipelines.
The frontend stack is Typescript with React. Assets hosted by Cloudflare workers.
Other components and technologies used: Elastic Search, Kafka, Postgres
Way of working
Local flavour of Scrum/kanban with sprints of 3 weeks. Retro’s, refinements. PR reviews.
Projects
Numerous migration projects, the largest of which were:
- All services (30+) migrated from MesOS to Kubernetes. Long project (> 6 months)
- Kafka on-premise migrated to Confluent Cloud
- Approximately 10 Postgres databases migrated to Azure Postgres Flexible Server
Notable features developed
- Matrix barcodes on labels for improved scannability
- Account managers feature in MDP
- Upgrade the Direct Print Desktop application to support OS native printer drivers
- Integrating the support system with an AI chatbot
Technical improvements:
- Contract-first approach for communication using OpenAPI specs (for FE) and gRPC (BE)
- Observability, improved monitoring & alerting on critical systems and data flows
Overview
I joined Marktplaats during a time of reorganization. The reason for this was that the company was sold off to Adevinta by Ebay classifieds group. I experienced both the end of eBay and the start of Adevinta. Because of these hectic times I was part of 3 different teams (see below).
General way of working in all teams
Local flavor of scrum/kanban, ticket system using epics & stories, agile, dev-ops with on-call, git-flow using feature branches, PR reviews
Common tech stack of the platform
- Backend services : Mostly JVM using Scala with some parts still in Java.
- Persistence: A mix of MySQL, Cassandra, CockroachDB and ElasticSearch for search.
- Communication protocols: Thrift for internal, HTTP for external, Kafka for async message delivery, RabbitMq for traditional queue requirements
- Frontend: TypeScript / React with some parts still in vanilla Javascript
- Deployment pipeline: Jenkins for building and Nomad (on private cloud) for deployment with some homegrown tooling around it.
- Developer tooling: GitHub Enterprise, Jira, mix of maven & sbt, docker
Trust, safety & support team
November 2021 – December 2022
This team was responsible for maintaining services related to identity (login, account creation, 2FA, etc…) as well as customer support tooling.
My role
Senior developer contributing to mostly the backend but also frontend. Main contributions:
- A new customer support tool written in a modern tech stack (TypeScript/React frontend and Scala on backend) to replace an old legacy application still running as .war on bare metal on a servlet container.
- Various anti-fraud measures on the backend.
Platform modernisation team
May 2021 – November 2021
This team’s purpose was to ‘modernize’ the backend platform. It was later disbanded because of reorganization.
My role
Senior backend developer
Main contributions
- Helping to finish up a database migration project (switching from MySQ to Cassandra)
- Implement cleanup of dormant (unused) accounts as part of GDPR. This means that accounts inactive for a long period will be deleted.
Platform project team
December 2020 – May 2021
This team’s purpose was to pick up big projects to improve the platform. It was later disbanded because of reorganization.
My role Senior backend developer
Main contributions
- Helping on the backend side to finish up a big rewrite of part of the frontend.
- Mapping out a potential big migration project regarding identity (login, 2FA, account creation, etc…)
Sabbatical
May 2019 - November 2020

After 10 years of working in IT I felt the urge to take a break for a while. I did take some time in the beginning to familiarize myself with Kubernetes which had caught my attention during my last project. Beyond that I traveled around a lot and basically let go of the idea of work for a while. A sabbatical is a very fortunate thing that not many people have the opportunity to experience. I am grateful to have had this time for myself.
Consultancy at Trivento
I applied at Trivento with a wish to apply the Scala programming language which, at that point, I was not very experienced with. They successfully found me projects at Wehkamp and ING (see below). I had a very good time here and learned a lot but after almost 5 years I decided to take a break and go freelance.
Mobile Onboarding
April 2016 – December 2018
After two POCs we were given the opportunity to develop the backend for the Mobile Onboarding project. This project would allow customers to onboard and open a bank account at ING themselves using only their mobile phone.
https://www.ing.nl/particulier/betalen/bankrekeningen/mobiel-rekeningopenen/index.html
I was involved in this project from start to finish. During this time the Baker process orchestration library was developed to cope with the complex and often changing business process. It was open sourced after some time at:
https://www.github.com/ing-bank/baker
This library is built in Scala using Akka (including clustering, persistence & sharding). Petri nets were chosen for the underlying execution semantics because of its simplicity, mathematical foundation and personal experience with the concept.
My role
My main focus was the design and development of the Baker library although I also contributed to the Mobile onboarding project which the library served.
Way of working
Small team (3 developers), Kanban, agile, dev-ops, PRs & code reviews
Tools used: Docker, Git, Gitlab, Maven, Sbt akka, cats, fs2, scalacheck Kafka, cassandra, jenkins
Scala POC 2
Oktober 2015 - March 2016
Re-building a critical service with high scalability and resilience requirements using the Scala and Akka stack.
Scala POC 1
June 2015 - September 2015
A POC using Scala and Akka to prove the technology is mature and satisfies all requirements to deploy in production at the ING bank.
Blaze
January 2015 – June 2015
A new platform developed from the ground up for Wehkamp BE. Envisioned to later replace the .NET based architecture of Wehkamp NL. Based around a micro service architecture and hosted on AWS following the principles from the reactive manifesto: responsive, resilient, message driven & elastic.
My role
Developer in a feature team. Responsible, as a team, for the design/ development/testing/deployment & maintenance of a few micro services. The main focus was on the Scala backend but features sometimes also touched on the frontend which was written in AngularJS.
Way of working SCRUM, agile, dev-ops, Gitflow (PRs & code reviews)
Applied methods
- Micro service architecture
- Actor systems using Akka
- Functional programming, event sourcing & CQRS
- REST APIs
- Private cloud deployment on Mesos / Marathon
Tools used Git, Github, Scala, sbt, Javascript akka, spray, scalaz, AngularJS (1.x) Bamboo, ansible, docker, mesos / marathon, amazon AWS
Statebox
September 2009 - September 2014
Long running project that was the core of a SAAS solution by Stream B.V. of which Econosto and Dienst Justitiële Inrichtingen (DJI) at that time were the most important clients.
This product involved a low latency process engine based on petri nets which was tightly coupled with Drupal, which hosted all the business data of the process cases. A backend service in Java managed the process flow and a frontend written in GWT (java compiled to javascript) could be used to investigate process cases and their state and act on them.
My role First co-developer, then project lead (from 2011), small team 2-3 devs.
Way of working Loose kanban style.
Most important contributions
- A petri net extension system (arc-inhibitors, type restrictions)
- A Test platform with DSL
- A Scheduler/execution engine
- An immutable/persistent collection library for Java
Education
Universiteit van Amsterdam
Master Artificial Intelligence
2007-2009
WO, Master Artificial Intelligence (Universiteit van Amsterdam) Unfinished because of a full time job at the “Stream B.V.” start-up
Erasmus Universiteit Rotterdam
Bachelor Informatica & Economie
2002-2006
WO, Bachelor Informatica & Economie (Erasmus Universiteit Rotterdam) Diploma received in May 2006
Goudse Scholen Gemeenschap (Gouda)
VWO
1995-2001
Diploma received in June 2001
A Little More About Me
Besides software engineering I have a few other hobbies:
- Running
- Hiking
- Guitar playing





