About Me

I'm Christiaan Rudolfs, born in 1979 in a small city in the Netherlands called Zevenaar. In 1997 I started a Computer Science study at the Radboud University of Nijmegen which I successfully completed in 2002 and since then I'm a Master of Computer Science.

Currently I live in Den Bosch, the Netherlands, with my beautiful wife and our three gorgeous teenage kids. When I'm not working or in my spare time exploring new technologies, I like to spend time with my family and friends. I'm also a fanatic padel player. Padel is the fastest growing racket sport in the world which is only played in doubles. I love this dynamic sport because of its social and team play aspects and you also have to be creative and play tactical to win.

Senior Full Stack Java / Kotlin Developer

Professionally, I'm focused on backend development in Java and Kotlin with Spring (Boot), Java EE or Vert.x, but I also enjoy to develop frontend applications in e.g. Angular, React or Gatsby. In the cloud I'm most experienced on the AWS cloud platform, but I'm open to other cloud platforms as well. I hold two AWS certifications: AWS Certified Developer and AWS Certified Solutions Architect. In addition I'm of course also an Oracle Certified Java 8 Professional. My believe is we should use Kotlin more and more, therefore I got certified in Kotlin for Java Developers. Highly recommended to other Java developers!

As a developer I embrace Clean Architecture, Domain Driven Design, Test Driven Development and Clean Code (SOLID) principles in order to ensure software quality and good software development craftsmanship. I'm an advocate of the DevOps culture and Agile way of working within teams. I'm a (social) communicator and problem solver. I'm eager to learn new things and keep a close eye on new technologies. I'm energized by developing good solutions that add business value and can evolve and adapt easily to change.

From here on I'll inform you about how my career as a Software Developer has gone so far...

Master of Computer Science - graduation assignment

I started my first professional Java programming job back in 2002. During my graduation assignment at Edmond Document Solutions I conducted a study with the aim to develop a machine learning algorithm that enables a highly accurate automatic and incremental classification of emails based on the textual content. Besides the research I developed the E-Sl@ve system (in Java) that classifies email messages via an incremental learning process (which means that the system learns from user feedback) with a high accuracy. The core of E-Sl@ve consists of a self-developed machine learning algorithm. The research is published in my masters thesis.

Period: 2002 - 2006

In the second half of 2002 I started my first employment at Smile Software as a full stack software developer. I introduced J2EE and Rich Internet Applications (RIA) technology within the organization. We built a new complaint management system with a backend that was based on J2EE with JRun, Hibernate (ORM) and support for multiple relational database systems like Microsoft SQL Server, IBM DB2 and Oracle 8/9i. The frontend was based on Flash MX (programmed in ActionScript) and Adobe Flex. The product was sold to many companies in different branches like banking, transport/logistics, travel agencies and Dutch municipalities. I had a great time working at Smile Software, it felt more or less like a family to me, but after 4 years I decided it was time to move on.

Period: 2006 - 2013

In 2006 I joined Everest (currently known as Blueriq). Here I worked my way up to the level of Senior Java Developer and finally also Java Architect. I worked for many clients in different branches (banking, government, retail) developing applications that leverage complex business rules and knowledge to drive vital business processes. In my first project all products were developed in Java (6) based on the J2EE standard using Enterprise Java Beans (EJB 2.0). But in my subsequent projects, the products were developed in the Spring Framework, which was a great programming experience at the time when we exchanged the heavyweight EJBs for the more lightweight POJO-based Spring Framework. At Everest I also got the chance to develop my social skills by participating in a one year traject High Impact Personal Development Traject - Soft Skills. This was a great learning experience and has made me a more mature Senior Software Developer. After almost 7 fruitful years I decided to leave Everest and start a new international challenge at Quintiq.

Period: 2013 - 2017

I joined Quintiq (currently DELMIA Quintiq) in 2013 as a Senior Integration Consultant. Quintiq's mission is to solve the world's planning puzzles with a single platform. For me it was a great international experience in which I participated in many projects around the world. My first assignment was a workforce planning puzzle for Copenhagen Aiport, (see case study). Besides the integration with their HR system I also contributed to the development of a REST API that was leveraged by a third party mobile app used by their employees. For this project we worked closely with our development center in Kuala Lumpur, Malaysia. Great people to work with and during the project we've spent several weeks in Malaysia to deliver a good solution.

The next project I joined was Van Den Bosch Transporten. Here we built a logistics inter-modal transport planning solution for an international logistics services provider that transports liquid and dry bulk products for both the food and non-food industry (see case study). I contributed to the development of many system integrations and also the Quintiq mobile app with GPS tracking support (native both on Android and iOS).

In 2014 I started on another workforce planning puzzle for Air Traffic Navigation Services (ATNS) of South Africa. I travelled many times to Jonannesburg in South Africa to discuss the desired architecture and design for the required system integrations. It was a great experience working with a different culture.
In between I provided cloud service consultancy to PostNL, in order to support the migration of their current planning system to a cloud environment.

In 2015 I started another workforce planning solution to plan 8000 employees within DHL Express distributed over several hubs world wide. This solution used IBM Websphere MQ to facilitate system integration with many other systems. For this project I visited Kuala Lumpur, Malaysia again in order to develop a great solution together with the local colleagues. Also in 2015 I trained several key administrator users at Red Bee Media (London) on how to administer their workforce planning solution.

In 2016 I started a new project for Drax where we've built a planning solution for vessel discharges and (inland) inventory movements of biomass and coal products to Drax Power Stations (UK). This project went really smooth due to great cooperation with Drax and went live within time and budget (read here).

My final project at Quintiq was a planning solution for pipeline and rail scheduling of oil products between terminals for PKN Orlen, a big Polish oil company. Here we integrated the planning solution with SAP and many other custom systems. A great project that also went live successfully (see announcement).

After more than 3 years I gained a lot of international experience in solving the worlds planning puzzles in sometimes very complex environments with smart colleagues. Thanks Quintiq, for having this great time together!

Period: 2017 - now

In 2017 I started as a semi-independent Senior Java Developer at PanCompany. In my first assignment I was hired by Malmberg (a Sanoma Learning company). For a period of 4 years I helped to shape the future of digital (primary and secundary) education as a Senior Java Developer. Besides that I was also involved in many architectural decisions. We developed several solutions within Malmberg. All applications and services that we've built were cloud-native and use Amazon Web Services (AWS) as a cloud computing platform. One of the solutions is a new platform for primary and secondary education that offers a variety of learning applications to many students and teachers in the Netherlands, Belgium, Finland and Sweden. The technical stack was based on a Reactive Architecture were we used Reactive Programming with Java 8, Java 11, RxJava, Vert.x, Spring (Boot), MongoDB and Amazon Neptune (graph database) in the backend and Angular for the frontend. The solution is deployed on the AWS cloud (EC2).

Another solution that we've built is the Publication Suite, which is responsible for publishing and previewing of learning content to Customer Facing Applications. At the start of 2018 we started developing the Publication Suite in order to replace functionality that was currently offered by a legacy application that was unstable, unreliable and not scalable. We decided to structure our new solution as a collection of services and applied a Microservice architecture. All microservices were built in Java 11 with Vert.x or Spring Boot and use AWS serverless services like S3, DynamoDB and SQS. The microservices ship as Docker images and are deployed on AWS, distributed over multiple EC2 nodes and communicate through a clustered Vert.x eventbus. We've used AWS DevOps services for Continuous Integration and Delivery: CodePipeline, CodeBuild and CodeDeploy. The final result is an application that is highly available, extremely scalable and super reliable. It was taken into production before start of the (Dutch) schoolyear in June 2018. End users are really happy as their perceived response times for content publications have reduced enormously.

At the start of 2019 we were asked to build a (scalable) Virus Scanner solution around a third party virus scanner product. We decided to go serverless and used the Serverless framework and multiple AWS Serverless solutions, like AWS API Gateway, Lambda, DynamoDB, S3 and SQS, to build this solution.

During my 4 years at Malmberg I learned a lot and gained valuable experience in several areas. One of these areas is the wonderful world of Reactive Programming (in Java). This has quite a steep learning curve, but is extremely powerful once you grasp the concepts, apply it where useful and really start working with it. I decided to conduct a workshop about Reactive Programming within PanCompany (mid 2019) to deepen my knowledge and share this with colleagues. This was a great experience, the slides of the result can be found in the following presentation: Thinking Reactive.

Another area that I've gained a lot of experience is building cloud-native applications on AWS. In order to strengthen my knowledge on AWS I decided to educate myself (successfully) as an AWS Certified Developer and AWS Certified Solutions Architect. I'm excited to develop more cloud-native (Java) applications on AWS!