Web development is very versatile, where the programmer is forced to use multiple technologies in order to make a product. Oftentimes, for a simple website, a minimum of HTML, CSS, PHP and MySQL is needed. If we look a bit further, knowledge about the webserver and operating system is also essential.

I started out as a PHP scripter in 2004, transitioned into a (mainly) back-end developer in 2008, and into a lead software engineer role around 2013.

Needless to say, web development means more to me now than it looked like as a scripter. Having worked in financial systems, designing a system for maintainability, testability and correctness is key.


During my time at TargetMedia I worked on the back-end of TargetPay and related systems. TargetPay is a payment service provider, making sure that payments are processed smoothly between the merchant and his or her clients.

TargetPay Logo

The focus of the product is to maximise automation, make the product simple to use, in order to connect many smaller clients. To this end multiple tools are offered, from copy/paste payment screen plugins using JS, to e-commerce plugins, to low-level APIs.

The code base is written in PHP and automated tests are an important aspect of these systems. Ensuring correctness of every written line of code has been my personal objective within this project.


A streaming website featuring Dutch music. There is a social aspect involved as users can share playlists and get recommendations.


I was involved in the back-end of this system (PHP), primarily to facilitate subscription management and automatic payments.

BoeP BoeP Logo

This is a digital music distribution platform that connects a big number of Dutch artists to music portals around the world. Using it, labels make sure that their content reaches the appropriate audience, for instance via Spotify, Itunes or HitsNL.

I was involved in the back-end of this system (PHP), primarily to process the listening numbers and to make sure the revenue finds their way back to the artists.

Minimax (library)

This is a PHP implementation of the Minimax game decision (AI) algorithm. It determines the next best move in a turn-based game, by assuming that the opponent also plays optimally. Looking sufficiently ahead, it will select the move with the best outcome, one where the opponent cannot win anymore if possible.

It is implemented as a PHP 7 Composer package. It has 100% test coverage and is protected by Continuous Integration and code quality tools. Interaction with the game is done via a set of logical interfaces, separating game logic from AI logic. This makes it usable for any turn-based game, possibly with players divided into multiple teams.


A personal blog where I write about what interests me. It's also a place to try out web design choices.

Personal blog.

The code base is from 2010 and gets updated when I learn about new web or PHP developments and need a serious place to try them out.


TaZrum was my first web project. It started as an experiment while learning PHP, and grew into a cozy forum with a nice community.

Personal forum.

Not only did it teach me web development, I have been continually in touch with the community, something which was educational. Along the way Silvan van der Veen joined in development and maintenance of the site and its community.


A hobby cocktail party planning app. Based on your current inventory, and the known recipes, it will recommend you which items to buy in order to maximise "satisfaction": a measure of how many drinks can be available. It's written in PHP.

Cocktail planner.
Bill Splitter

A hobby app to split bills among groups. Every expense can be attributed to specific people, after which the system decides who owes what to whom.

Bill splitter.

The app is written in PHP and models the problem as a flow problem. A max-flow algorithm is then run to obtain the result.