CV

A brief overview of my professional experience, education, and skills.

Professional experience

I currently divide my 48-hour working week between two major non-profit organisations.

ResearcherHU University of Applied Sciences Utrecht (Hogeschool Utrecht)–present

Hogeschool Utrecht (HU) is a large public university of applied sciences that provides education to 35,000+ students and professionals aged 17 to 67.

As an applied researcher, I mainly develop human-centred disinformation-detection tools for the Horizon Europe-funded AI4Debunk project. I also do a bit of tangentially related development work for HU’s Robosub project.

Software engineerNederlandse Omroep Stichting (NOS)–present

NOS is the public broadcasting organisation that produces news, sports, and events programming for the Dutch public broadcasting system. It also happens to be the largest news organisation in the Netherlands.

Over the years, I’ve held various engineering positions at multiple technology departments within the NOS and have worked on a wide range of mission-critical systems and innovative projects, mostly related to – but not limited to – backend development and DevOps.

Works council memberNederlandse Omroep Stichting (NOS)–

An embarrassingly high number of colleagues voted for me to be a member of NOS’s works council (ondernemingsraad), which consults with upper management on behalf of employees.

My main areas of focus included the organisation’s – or rather, society’s – response to the COVID-19 pandemic, the transition to hybrid working, technology investments, working conditions, DEI, and social safety.

Backend developerYource–

Yource is a legal services company that helps passengers across Europe claim compensation for delayed and cancelled flights under Regulation (EC) No 261/2004 on air passenger rights.

I worked on the backend of the flight compensation platform, which includes generation of legal documents, payment modules, and a massive pile of REST APIs.

Technical designer and programmerICT InTraffic–

InTraffic is a digital solutions provider for multimodal traffic and transport. This just so happens to include the things I get really excited about, such as public transport data and passenger information systems. Its clients include major players in the Dutch public transport sector, such as ProRail, NS, GVB, and governments.

During my time at InTraffic, I contributed to BISON data exchange standards, prepared public tenders, presented solutions to prospective clients, and worked on both national and regional passenger information systems in the Netherlands.

Education

I’m merely trying to catch ’em all, like Professor Oak told me.

MSc, Software EngineeringOpen University of the NetherlandsCum laude (with distinction)–

I wanted an engineering degree, so I got one. That’s not a particularly good reason to sacrifice evenings and weekends for a second master’s degree, but I did learn a lot about software architecture, software quality, software security, and formal verification.

Grade point average8.3 / 10

Course load (ECTS credits)60 / 60

MSc, Information Studies (Human-Centred Multimedia)University of AmsterdamCum laude (with distinction)–

The Information Studies: Human-Centred Multimedia master’s programme was a joint programme between the University of Amsterdam and VU Amsterdam. I received my master’s degree from the former but actually spent most of my time at the latter.

Since this was the last time I could pursue a master’s with a fixed tuition fee – it’s more or less an all-you-can-eat buffet – I decided to simply take all elective courses that were on offer. These included courses on knowledge representation, information retrieval, and human-computer interaction.

Grade point average8 / 10

Course load (ECTS credits)78 / 60

BSc, Information ScienceUtrecht UniversityCum laude (with distinction)–

I did a bachelor’s in information science, which might be called human-computer interaction or information systems at other universities. My curriculum included a mix of courses on computer science, software development, business informatics, cognitive psychology, and user experience.

Grade point average8 / 10

Course load (ECTS credits)215 / 180

Computing ScienceRadboud University–

This bachelor’s programme was not a good fit for me, which I could’ve known if I had put more effort into researching the programme before enrolling. I did learn a lot about logic and algorithms, though.

Other positions

“Wait, you guys are getting paid?”

Being a guy who writes stuff on his blogChuniversiteit.nl–present

I have been writing articles about tech and software engineering research on my personal website since 2018, and people have inexplicably been reading and sharing them.

Master’s programme committee memberOpen University of the Netherlands–

I was an elected member of the programme committee (opleidingscommissie) for the master’s programmes in computer science and software engineering at the Open University of the Netherlands. The programme committee is responsible for monitoring and improving the quality of the programmes, advising on curricula, and playing an important role in shaping regulations.

(Final) editor of a student magazineStudy association A–Eskwadraat–

I served two terms as a final editor of the Vakidioot, the student magazine of study association A–Eskwadraat for Mathematics, Physics, Computer Science, and Information Science students at Utrecht University. I was responsible for the magazine’s content, design, and production, created Bonaparticle, and also wrote quite some articles myself. I like to believe I did a better job at this than Paris Geller did at the Yale Daily News.

User experience (UX) research internRabobank–

I learned the ropes of user experience research as an intern in Rabobank’s UX department at its corporate headquarters. I did some work on cataloguing design patterns, and I also conducted a small usability study in its state-of-the-art usability lab.

Certifications and courses

A selection of certifications and courses I’ve completed in the past few years.

EU Remote Pilot Certificate – A1/A3 (EASA)Directorate of Civil Aviation of Luxembourg (DAC)

This certificate suggests that I’m at the very least somewhat aware of the European Union Aviation Safety Agency (EASA) regulations on flying drones in the open category. I don’t own a drone nor have I ever actually flown one though.

AI Cybersecurity and GovernanceColumbia+

Online course about the risks of using AI and how to mitigate them, with a focus on cybersecurity and governance.

Building Customized LLMs with OpenAIColumbia+

An informative course on building customised large language models, with a good balance between theory and practice.

Generative AI FundamentalsGoogle

Introductory course on generative AI, covering how it works under the hood (encoders, decoders, attention, etc.), large language models, and how to use them responsibly.

Introduction to Web AccessibilityedX

It’s important that any software we make is accessible, but unfortunately accessibility can be hard to “get” as an able-bodied person.

Machine LearningCoursera

Andrew Ng’s course on machine learning, from before large language models (LLMs) and generative AI became household names. I’ve used the knowledge I gained perhaps once: for my master’s thesis.

Data Journalism FundamentalsThe University of Hong Kong

This online course by the Journalism and Media Studies Centre at The University of Hong Kong covers the fundamentals of data journalism, including data collection, analysis, and visualisation techniques.

Railway Engineering: An Integral ApproachedX

This online course by Delft University of Technology (TU Delft) covers the fundamentals of railway engineering, and the challenges associated with the operation, monitoring, and maintenance of railway systems.

From Poverty to Prosperity: Understanding Economic DevelopmentedX

An online course by Oxford University on how poor societies become prosperous and overcome obstacles to do so, mainly focusing on the political, social, and economic factors that influence development.

Software Construction in JavaedX

This online MITx course has arguably had a greater impact on how I approach software development than any of the software design courses I took at university.

Tech stack

These are the main tools in my toolbox right now.

DevOpsAdvanced

As a former user experience researcher and a backend engineer turned DevOps engineer, I strongly value developer experience and reproducibility in the work that I do. I set up and maintain CI/CD pipelines, Docker containers, Kubernetes clusters, and other infrastructure, and support my teams however I can.

PHPAdvanced

PHP is known in programmer circles as a fractal of bad design, while NOS referred to it as the onderbroek (underwear) of the web. Sure, it’s not Rust, but I think a lot of the criticism of PHP is unwarranted. PHP’s good parts are quite good, while its bad parts don’t matter that much in practice.

PythonProficient

Python has somehow become the default programming language for all my colleagues in data science, machine learning, and AI. Consequently, it has become one of my “favourite languages” as well.

Technical writingAdvanced

I spend more time drafting technical proposals and reports than (prompts for) code. Rumour has it that I actually enjoy it more than programming…

Other skills (A–Z)

This used to be called keyword stuffing. It still is, but it used to, too.

  • Academic writing
  • Accessibility (A11y)
  • Agile
  • Ansible
  • Argo CD
  • AWS
  • Bash
  • C#/.NET
  • Claude
  • Codex
  • Copilot
  • CSS
  • Datadog
  • Docker
  • Domain-driven design (DDD)
  • Elasticsearch
  • End-to-end testing
  • Excel
  • GitHub
  • Grafana
  • Hetzner
  • HTML
  • Infrastructure as code (IaC)
  • Integration testing
  • Java
  • JavaScript/TypeScript
  • JIRA
  • Kubernetes
  • Kustomize
  • LaTeX
  • Linux
  • MariaDB/MySQL
  • Object-oriented programming (OOP)
  • Observability
  • OpenShift
  • PHP
  • Playwright
  • PowerPoint
  • Prototyping
  • RabbitMQ
  • React
  • Rust
  • Scrum
  • SharePoint
  • Slack
  • Software security
  • SOPS
  • SQL
  • Static analysis
  • Storybook
  • Technical writing
  • Terraform
  • Test-driven development (TDD)
  • Typesetting
  • UML
  • Unit testing
  • Usability testing
  • User experience
  • Visual Studio Code
  • XML

Languages

For all intents and purposes, I only speak Dutch and English fluently. I really need to brush up on my Classical Latin…

Dutch (Nederlands)C2

In Nederland spreken we Nederlands (although, as usual, Amsterdam is exempt from this rule).

Fun fact: Dutch is technically not my native language. I learned it in elementary school through NT2 (Nederlands als tweede taal) language courses.

English (European)C1

I speak and write English with a subtle Dutch accent. Obviously.

Cantonese (廣東話)It’s complicated

Cantonese is technically my native language, but I don’t speak it well enough to hold a conversation. Reading and writing are completely out of the question. My mastery of Cantonese is probably on a similar level to that of a gweilo with a phrase book.

Memberships

Virtue signalling at its finest.

Association for Computing Machinery (ACM)

As an educational and scientific computing association, the ACM is mostly known for its conferences and publications, but it also happens to be a fairly reliable email forward service.

Reizigersvereniging Rover

Rover is the Dutch association for public transport passengers, which lobbies for better public transport services. I used to be an aspiring active member (until they ghosted me for a year).

Omroepvereniging VPRO

The VPRO is one of the broadcasting associations in the Dutch public broadcasting system that targets a more educated and informed audience. It’s more or less the Ravenclaw of Dutch public broadcasting.

Omroepvereniging BNNVARA

Another broadcasting association that emerged from the merger of BNN, which targeted younger audiences (which I am no longer a part of 🥲), and VARA, which used to be a progressive broadcasting association.

Things you can wake me up for

Both literally and figuratively.

PC games

I don’t own a gaming PC, so I’m limited to playing older games on my Mac. More or less what XKCD #606 describes, but with a ten-year lag.

PhD positions

I may have a thing for complex projects that take painfully long to complete and involve a lot of thinking, writing and presenting.

Things that interest me include (but are not limited to) software engineering, actionable intelligence, public transportation, disinformation, and academia.

Planespotting

The first place I drove to after buying my first car was the spotter zone next to Amsterdam Airport Schiphol’s Polderbaan runway (18R-36L).

PowerPoint parties

I’ve honestly never been to one, but they sure sound like fun. I also happen to be fairly good at PowerPoint.

Pretty university buildings

I make it a point to try and visit at least one university building whenever I travel abroad.

Production incidents at work

I mean, who else are you gonna call?

Public transportation in large cities

I don’t necessarily like riding public transportation, but I do like exploring metropolitan transport systems in large cities.

Things that don’t start with the letter P

I can’t think of anything right now, but surely there must be something…

Highlighted projects

Things I built because I was paid to, or because I wasn’t paying enough attention to what I was actually supposed to be doing.

Debunking disinformation with AI4DebunkHU University of Applied Sciences Utrecht (Hogeschool Utrecht)–

AI4Debunk is a four-year Horizon Europe project that develops AI-powered tools that help European citizens and professionals identify and debunk disinformation on the web.

I’m building the disinformation API that provides simple and unified access to the project’s disinformation detection models, and two of its user interfaces: a browser extension and a collaborative web platform. In addition, I’m also responsible for DevOps, deployment, user studies, and integration with the project’s social sciences and humanities work.

Alright: AutoLink References In GitHub TitlesNederlandse Omroep Stichting (NOS)

GitHub pull requests often reference tickets in issue trackers such as JIRA. GitHub automatically turns references to tickets in the body of pull requests into hyperlinks, but it inexplicably doesn’t do the same for pull request titles. I built Alright, a Chrome and Firefox extension which does exactly that. Alright is my most popular browser extension to date.

Inter-CTE, a shitty train travel plannerChuniversiteit

I built a journey planner for the Dutch railway network using SQL with common table expressions (CTEs). Was it a good idea? No. Does that matter? Also no, because it actually worked much better than I expected.

Static analysis of Java comment qualityOpen University of the Netherlands

For my master’s thesis at the Open University of the Netherlands, I built Coalaty, a tool for automated comment analysis and assessment of comment understandability. Simply put, Coalaty is a static analysis tool that rates the quality of comments in Java projects using an ensemble of predictive models that incorporate code and text features.

Coalaty turned out to be quite good at classifying very good and very bad comments, but sadly did a poor job of classifying everything in between.

Robot journalism for election resultsNederlandse Omroep Stichting (NOS)

Most of the software I built at the NOS is either hidden from the public or built together with so many people that it’s hard to tell what I actually contributed. For the 2019 European Parliament elections, however, I worked in a small team on an experimental web-based tool that generated articles about election results based on real-time data from news agency ANP.

The tool was featured in the NOS’s election coverage on TV and online and was reused in several subsequent elections.