My name is Niels, and I’m a professional Senior Software Engineer with a passion for backend services and infrastructure. Consolidating and cleaning up (unused) services is always something I’m naturally attracted to. When you go over my resume, you will notice it’s not my first rodeo when I comes down to leading migration projects ranging over different kinds of services and technologies. Below is a more detailed description of all my activities but you can also download my resumé
Senior SRE Engineer, 2020 - current
Onesignal, San Francisco, United States (Remote)
At OneSignal, I’m responsible for building and improving our infrastructure, which runs our applications. It includes a broad range of activities, from maintaining our on-premise Kubernetes cluster to improving our databases to scale horizontally to load testing.
Senior Software Engineer, 2015 - 2020
Blendle, Utrecht, Netherlands (Remote)
At Blendle, I developed, deployed, and maintained several distributed (a)synchronous microservices in Ruby, Golang, and Python following TDD and BDD best practices. I’ve also managed our cloud infrastructure, networking, and CDN, including monitoring and alerting for our Kubernetes cluster and applications.
Lead the migration project from Adyen to Stripe, including migrating existing customer payment details. Also, implementing a service to keep track of Stripe subscriptions and develop the interface for our client apps to communicate.
Accomplished increasing the speed (reading 4m rows per second) of our newsletter recommendation pipeline by designing and implementing a storage service to persist and read personalized selection of articles per customer. Saving the data to multiple different types of storage (Google BigTable, Google Cloud Storage, ElasticSearch) to facilitate different kinds of access.
Upgraded Elasticsearch cluster increasing performance and reducing resources. Document relying services, create and discuss approach with team members. Execute the plan with the team, deployed a new cluster on Google Cloud with Terraform and Ansible.
Migrated our databases from 3rd party database provider to Google Cloud SQL. Research, discuss strategy, and execute the plan. Communicate across multiple teams to provide a smooth migration and notify customers of expected downtime. Reducing the latency by 10~20%, which increased the throughput of our microservices.
Implemented a system to generate personalized emails from a selection of articles, taking into account users’ preferences and a time constraint sending out 300k~400k within ±40 minutes timespan. Using Golang, Docker, and Amazon SES. Making use of Golang’s profiling tools generating flame graphs (back when it wasn’t part of the tooling) to improve the performance.
Setup and maintain an in-house CI/CD pipeline on top of Jenkins and Kubernetes to reduce the speed of delivering our software.
Initiated a standard format for structured logging to be used across our microservices in different languages to increase the visibility into errors and increase the TTR (Time To Recovery)
Software Consultant (Self Employed), 2012 - Current
Hodari, Rekem, Belgium
As a self-employed senior software consultant, I’ve helped businesses to develop custom applications to make their work more efficient and integrate with their already existing software packages were possible. I am taking care of the whole process from design and development to the final deployment and monitoring.
Develop a system tray desktop application in Golang to upload DBF files to a Ruby on Rails backend. Storing the data on GCS storage and process the information asynchronously using background workers written in Golang. To easily install and distribute the application, I used NSIS to create a Windows installer.
Design, develop, deploy and maintain a custom order portal for a Paint Company with Ruby on Rails, Backbone JS (later migrated to React). For testing, I used RSpec and cucumber. The orders, articles, units were synchronized with Microsoft Navision using SOAP rest service. Deployed the application Kubernetes (GKE) with MySQL (Cloud SQL), Redis (hosted on Kubernetes) used for background jobs with Sidekiq and Elasticsearch (hosted on Kubernetes) to search for articles.
Develop, deploy, and maintain an inventory tracking system connected to a USB barcode scanner with integration to a Microsoft Navision back office. Using Ruby on Rails, MySQL, and RSpec to develop the application. Deployed the app with Docker and Kubernetes on Google Cloud GKE and Cloud SQL to host the MySQL database.
Develop a service to synchronize files between an FTP server and a remote network drive using Apache Camel. Deployed the application on a Debian VM instance hosted on Linode.
Software Consultant, 2011 - 2015
Kabisa, Weert, Netherlands
Design, develop, and deploy a health care backend service written in Golang for Philips Health Solutions, collecting data from multiple different hardware devices that communicated in different custom protocols over Radiofrequency (RF) and Bluetooth Low Energy (BLE). Setup a GitLab instance to improve the workflow by having reviews within our team. Working both on-site and remotely with colleagues in different countries.
Design, develop, deploy, and support an Enterprise Integrations system with a frontend developed in BackBone JS using a Ruby on Rails API backed by a MongoDB database. The UI and API stored and deployed configurations of the integrations flows created in the browser to the OSGi container Apache Karaf using Apache Camel. Always following a TDD and BDD approach, some of the tools used RSpec, Cucumber, JUnit, Jasmine. I worked mostly on-site in collaboration with colleagues in different countries.
Provide first-line support for several customers with projects in Java, Ruby On Rails, and C#. Manage their infrastructure on Hetzner, Linode, and AWS. I have debugged and fixed issues also involving hardware devices communicating over Radio Frequency.
Internship Software Engineer, 2010 April - June
Zetes Burotica, Lissabon, Portugal
Design and developed a license feature for online framework CCTools used to sign documents, verify identity with Portuguese Electronic Identification Card (eid). The framework works on three major operating systems on Linux, Mac OS X, and Windows. Developing the feature required to work with C, C++, and Java, making these languages talk to each other with a JNI bridge and use the cryptographic libraries OpenSSL and Bouncy Castle to make the protocol secure.
- Ruby, Rails, Golang, Python, Shell scripting
- Agile / Test Driven Development, Pair Programming
- Git, Github
- Google Cloud Platform (GCP), Amazon Webservices (AWS), Kubernetes, Terraform
- Mac OS X, Linux
- Postgresql, MySQL, ElasticSearch, Redis, BigTable, BigQuery, MongoDB