Curriculum Vitae

  • Age: 34
  • Location: Huissen (near Arnhem)
  • Phone: +31630290107
  • Email: rick@vandenhof.eu

Education

  • 1996/2000: HAVO
  • 2000/2001: MTS Technische Informatica

Working Experiences

April 2017 - October 2017: Avisi, Linux DevOps Engineer

I returned to Avisi to further support the Hosted Insight platform which was now beginning to gain quite some traction. With the insights gained from the experience of adding new customers to the platform, a number of features were added to the wishlist and it was my responsibility to implement them.

January 2017 - May 2017: IJsvogel Retail, DevOps Architect Online

As DevOps Architect Online, I supported a number of teams in the IJsvogel Retail organisation, the corporation behind Pets Place and Boerenbond. I was responsible for the day-to-day operations revolving around the ecommerce platform built on Magento 2. This included troubleshooting issues and reporting these to the correct suppliers, such as Payment Service Providers (Buckaroo), Magento 2 developers or iOS/Android developers. I helped introduce a Customers Loyalty program consisting of iOS and Android mobile apps. Together with the Online Business team I was responsible for Scrum sprint planning and project prioritization.

June 2016 - December 2016: Avisi, Linux DevOps Engineer

As a DevOps engineer, I was tasked to setup a new fully automated platform. Customers will be able to request a dedicated, Atlassian-stack based DTAP environment in a private cloud. Other tools like Jenkins and Rundeck may be added to the stack. I developed a Python tool that reads configuration from Puppet Hiera and consequently creates the necessary virtual machines in a VMware vCloud environment. It will also configure a private LAN for the customer as well as networking (SNAT) and firewalling rules. YAML configuration files are created for the new virtual machines and automatically checked into git. The public internet facing proxy servers, running nginx, will receive a signal to update their configuration when virtual machines are created. The tool also creates a Bacula backup server, which will be powered on when the backup needs to start and powered off when it’s finished. To test the backup, there’s also an option to launch a shadow environment which will restore the latest backup and when successful the shadow environment is automatically removed. Aside from creating the DTAP environment, documentation and instructions for maintenance and provisioning new customers had to be written. A follow-up project consists of migrating current customers to a new, private cloud.

Other software used:

  • Vagrant
  • PostgreSQL
  • OpenDJ (LDAP server)

May 2015 - June 2016: Exonet bv, System Engineer

There was already a lot of Ansible knowledge present at Exonet when I started working there. However, it was only being utilized to install specific software on servers once. I helped deploy Ansible Tower. At the time of writing Tower was being used to apply configurations to more than 150 servers every day. These configurations consist of self-written ‘roles’ aswell as the playbooks themselves. I deployed many different server setups, all using ansible playbooks, such as:

  • Magento setup:
    • This setup hosts Magento-based CMS sites.
    • Nginx is optimized with Magento-specific settings.
    • It uses NFS shared storage on a NetApp cluster.
    • Backups are made amongst others with Bacula.
    • PHP is running in php-fpm mode.
    • There is a Redis instance per website for caching.
  • Trytond setup:
    • This setup uses nginx with gunicorn as backends.
    • PostgreSQL is used as a databasebackend and Sphinx / searchd for the search functionalities.
    • Python Trytond is installed into a virtualenv.
    • Redis is used as a caching backend.
    • Every service is controlled with systemd templates.
  • Plone CMS setup:
    • This setup is load-balanced using HAProxy on a number of Zope workers and Zope database hosts.
    • Each worker runs Varnish with a number of backends for each site. These are all periodically probed and removed from the pool if they are no longer responding.
    • The customer requested ansible playbooks on one of the worker to easily deploy and update sites.
  • Docker setup:
    • This customer uses docker extensively for deploying and automatically scaling websites.
    • Containers are limited to customer-specific networks.
    • Docker networks and nginx are managed with Ansible.
  • ElasticSearch / MongoDB / PostgreSQL / RabbitMQ / Redis cluster:
    • This setup contains a number of database servers and worker servers.
    • All services are running in either cluster mode or master/slave mode.
    • Workers run apps, written in go, that are exposed to the internet via nginx.

Besides engineering new setups and clusters, customers often requested a way of testing their software on their servers, without using the “live” servers. I used Packer to create Vagrant boxes that are identical to their production servers.

I also wrote a number of tools in Python:

Other duties include customer contact via phone and e-mail (3rd line support), configuring Cisco / NetApp infrastructure, implement firewalling and VPN using Juniper and pfSense appliances and implementing two-factor authentication for SSH.

November 2005 - May 2015: Totaalnet Internet Works, Manager Engineering

My job at TIW was two-fold: I was a Linux Engineer but also Manager of the department. As Linux engineer, my job mainly consisted of the following:

  • Managing 200+ web, mail, dns and database servers for the Shared Hosting platforms.
  • Implementing Puppet, DNSSEC, IPv6.
  • I created an Asterisk VoIP telephony system.
  • Migrated many servers from DirectAdmin, Ensim, cPanel etc to our own Control Panel.
  • Managing the network (BGP peerings and transits, IPv6 and uplinks).
  • Connecting our network to the AMS-IX and NL-IX.
  • Automatically creating VMWare virtual machines by implementing the C# API.
  • Engineering and developing the new Shared Hosting platform.
  • Developing systems administration scripts and services in Python, C# and Perl.
  • Developing and maintaining the Hosting and Domain names Control Panel for customers.
  • Third line support.

As Manager Engineering, I was responsible for the following:

  • Implement project management using Kanban/Scrum.
  • Lead the Engineering team (“Scrum” master).
  • Have periodic performance meetings with team members.
  • Ensure the company policies were applied and kept to.
  • Ensure the departmental planning were in line with corporate strategies.
  • Create and monitor budgets.
  • Measure and report on results of the department.
  • Describe, implement and ensure departemental processes.

March 2002 - October 2005: Rockingstone IT, System Engineer

At Rockingstone IT I was responsible for:

  • Installing and maintaining the company servers
  • Registering domain names for customers
  • Administrating user, e-mail and FTP accounts
  • Managing the company network
  • Developing various websites in Perl and PHP.

December 2001 - March 2002: Radix ICT, System Engineer

My job at Radix ICT was mainting and managing SCO UnixWare 7 servers on location at customers.

June 2001 - December 2001: Landis ICT Group, Junior Support Engineer

My job at Landis ICT Group was certifying for several SCO Unix courses with the intent on becoming a consultant.

January 1999 - June 2001: Tweakers.net BV, Server Administrator

At tweakers.net I installed and was responsible for the servers that kept the site running.

Certifications and courses

  • 2014: VMWare VCP 550
  • 2007: RIPE LIR Training Course
  • 2006: NL-ix BGP4 Course
  • 2001: SCO UnixWare 7 CUSA
  • 2001: SCO UnixWare 7 ACE (Shell Programming)
  • 2001: SCO UnixWare 7 Master ACE

Expertise

Linux / Unix

  • Ubuntu
  • Debian
  • Slackware
  • RedHat / Fedora Core
  • Gentoo
  • CentOS
  • FreeBSD, OpenBSD, NetBSD

Virtual Infrastructure

  • VMWare
  • Xen / XenServer
  • KVM

Configuration Management

Continuous Integration & Deployment

  • Jenkins
  • Atlassian Stash / Confluence / Jira
  • Docker
  • Vagrant / packer

Databases

  • MySQL
  • PostgreSQL
  • MSSQL
  • ElasticSearch
  • MongoDB
  • Redis
  • Memcache
  • SOLR

Programming

  • Python
  • Perl
  • PHP
  • C#
  • Java
  • Objective-C
  • Bash
  • Ruby

Server Technologies

  • Apache
  • nginx
  • PHP-FPM
  • Varnish
  • HAProxy
  • Supervisor
  • LogStash
  • Kibana
  • NodeJS / PM2
  • RabbitMQ

Backup Technologies

  • Veeam
  • R1Soft / CDP
  • Bacula
  • Rsync / rdiff