Table of Contents
Independent consultant, public speaker, Google developer expert (GDE) for GCP, certified Kubernetes CKA/CKAD, university guest lecturer.
Google developer expert (GDE) for GCP, conference speaker, certified Kubernetes CKA/CKAD, university guest lecturer.
Master in Computer Science (graduated 2007).
Serverless first mindset, data operation and data engineering.
Like building scalable distributed systems.
Design, architect, develop, deploy, operate, maintain and monitor software.
Achievements: KubeCon 18’ Seattle speaker, University guest lecturer, open source contributor.
Work remotely (good writing communication skill).
Embark Studios 🇸🇪| Infrastructure Engineer for Machine Learning
August 2020 - Present | Stockholm, Sweden
Machine learning and game development, that’s all I’m allowed to say at this point.
KTH Royal Institute of Technology 🇸🇪| Guest lecturer
Apr 2019 – Present (1 yr 6 months) | Stockholm, Sweden
- containers (Docker, CRI)
- orchestration (Kubernetes, swarm)
- serverless & FaaS
NetEnt 🇸🇪| Site Reliability Engineer
Apr 2019 – May 2020 (1 yr 2 months) | Stockholm, Sweden
Cloud migration from OpenShift to Kubernetes on Google Cloud Platform (GCP).
Infrastructure as code management with Terraform, Terragrunt and Atlantis.
Containerization of legacy python applications.
Automation of dependency upgrades with GitHub Actions.
Securely rotating secrets and credentials used in application code with KMS and Berglas.
Using binary authorisation in Kubernetes to certify deployment in highly regulated environment.
Security and regulation: complete traceability with audit logs from code (GitHub) to production (GKE) using serverless architecture.
Using Cloud Functions to query GitHub using GraphQL API, storing the data in BigQuery and displaying the results in Data Studio.
Data cleaning and data lifecycle using Cloud Functions, PubSub and BigQuery scheduled query for costs management and monitoring data.
Data mining GitHub organisation to provide relevant KPI in order to make data driven decisions.
Frontend development for backoffice API in Typescript/Angular9
Migration from Python 2 to Python 3 of full stack Flask app
Presentations and workshop dedicated to Terraform, Kubernetes, Go, serverless, service mesh and site reliability engineering.
56K.Cloud 🇨🇭| Site Reliability Engineer
Nov 2018 – Mar 2019 (5 months) | Zurich, Switzerland (Remote)
Building infrastructure in the cloud and on premise with Terraform, Terragrunt, Bash, Go and Python
Main cloud providers: AWS, GCP, Azure.
Architecting cloud migration from on premises to cloud providers.
Setting up kubernetes clusters
Presenting and teaching DevOps and Chaos Engineering.
Discovery Inc 🇸🇪| Software Engineer
Mar 2018 – Nov 2018 (9 mos) | Stockholm, Sweden
cloud native, containerized environment.
Dev Tools: Bash scripting, containerization w/ Docker(-compose). Setting npm cache for build pipeline on Jenkins.
CMS-UI: Single Page App for editors to manage content for the website of https://www.dplay.se/ Built with React + Redux, react-router v4, lodash, Immutable.js, SaSS, testing with Jest, enzyme, mocha, chai, sinon.
CMS: Implementing new features on performance critical microservice written in Java 8 using Redis cluster with Sentinel which was migrated to PostgreSQL. ElasticSearch for indexing and full text search, using VertX for service to service communication, migrating to gRPC. Testing with Rest-assured and JUnit. Using Agile and TDD with code review via pull request on Github. Using containers, testing & deploying with Jenkins to Kubernetes cluster running on AWS Logs gather with ELK stack. Metrics with Prometheus.
Database migration from Redis to PostgreSQL: Live migration (no downtime) from Redis to PostgreSQL using jsonB.
Unity Technologies Finland 🇫🇮| Software Engineer
2017 – Mar 2018 (1 yr 3 months) | Helsinki, Finland
cloud native, containerized environment
CI pipeline with Gitlab for Go project: Build & test Go projects in container. Provide template for other projects.
Ads delivery cross promotion: Performance critical scalable microservices in Go. Using Redis as a cache. Using Nats to receive data from other microservices, Kafka to store all events related to the ads to a data pipeline and gRPC for request-reply to other services. These events are processed from Kafka and then stored on S3 for analytics and data mining. Service is used to select the best potential advertisement campaign for every ad request. Handling tens of thousands of events per seconds. Deployed in Docker container with HELM on a kubernetes cluster running on AWS. Highly tested microservices with code coverage > 90% and code review on everything.
Coordinator: Library written in Go implementing the Bully algorithm to elect leader among instances over Nats.
Advertiser campaigns: Microservices written in Node.js. Using event driven architecture with Nats as message broker for distributed system. Uploading video / pictures to S3. Using MongoDB (NoSQL) and express. ES6+ with > 90% test coverage with Mocha, Chai, Sinon. Continuous delivery (github + jenkins CI). Deployed in Docker container with HELM on a kubernetes cluster running on AWS.
Advertiser self-serve Single Page Application using React.js + Redux, React router, ES6+, Sass with BAM, Material UI, webpack. Component based architecture. Server side rendered. With > 90% test coverage with Mocha, Chai, Sinon. Continuous delivery (github + jenkins CI).
Technical recruiter: Part of the recruitment process, review technical tests, conduct interview.
Give presentations to teams
Freelance 🇹🇭| Software Engineer
2016 – Dec 2016 (5 mos) | Chiand Mai, Thailand (Remote)
Full stack web development in Clojure and ClojureScript using PostgreSQL as database. Part of the project can be found on my github account https://github.com/veggiemonk/guestbook.
Group S 🇧🇪| Software Engineer
May 2014 – Aug 2016 (2 yrs 4 months) | Brussels, Belgium
Transfer: Analysis, development, maintenance, support of Single Page Application (Redux + React, ES6+, JSX, SaSS, Mocha, Chai, Sinon, Localization: EN, FR, NL) and backend (Java 8, Tomcat 8, JAX-RS, Hibernate, JUNIT) connecting to Oracle 11g, MySQL, cache (Redis) and a secure FTP server (proprietary) containing sensitive documents (accounting, payroll, salary, …). In front of load balancing running on RHEL 7. +1000 downloads/day for 3000 customers in Belgium and France.
Portal: Analysis, development, maintenance, support of Single Page Application (vanilla JS, CSS, Sass, HTML, Mobile website, Localization: EN, FR, NL) acting as Single Sign On web app for 20+ web apps with users in 8 different Oracle, Active Directory, MySQL and a FTP server (see: Transfer) in Belgium and in France. Backend written with Java 8, Tomcat 8, JAX-RS, Hibernate, JUNIT. In front of load balancing running on RHEL 7. https://online.groups.be/
Translation: Analysis, development, maintenance, support of Single Page Application (Redux + React, ES6+, JSX, SaSS, Mocha, Chai, Sinon, Localization: EN, FR, NL) and backend (Java 8, Tomcat 8, JAX-RS, Hibernate, JUNIT). Internal project meant to be the intersection application between documentation and the internationalization (i18n) of all customer facing application.
Buildman: Node.js server allowing every team members (technical or not) to build and deploy any applications (web app or java server, version or branch) in one click. This tool also has self-update and can update other internal tools. The challenge was to configure user access on RedHat Linux with SELinux. Technology Stack: Node.js, Express, git, grunt, terminal.js, SonarQube, RedHat Linux, SSH, BASH.
Analytics: Setup monitoring/alerting ELK. ElasticSearch (search), Logstash (gather logs), Kibana (visualization), Golang (mail client). Gather logs and statistics from web applications and servers + alerting developers (email only) when a customer has an error.
Presentation: Teaching web technologies, agile methodology, unit testing, integration tests and e2e tests to others developers. Presentation to team leaders of git based workflow, merge requests (GitLab), dependency management (Nexus), continuous integration (Jenkins, GitLab CI + Docker), issue tracker (Redmine, GitLab), wiki (MediaWiki, GitLab).
Code quality check: Install and configure SonarQube (running inside Docker containers) for code quality and technical debt tracking.
Writing reports: Conferences, meetings, projects requirements analysis. Example of conference report: https://docs.google.com/document/d/1ahblUs2BaIyEdtQamSX7O9XwRi1GiOZQ4W-G48CooIo/edit?usp=sharing
Share2Grow 🇧🇪| Partner | Software Engineer
Feb 2014 – Jul 2016 (2 yrs 6 months) | Brussels, Belgium
Remote work with developers. Developing web and mobile solutions cross platform with phonegap and GWT.
Web Development, Technology Assessment, Technical Business Analysis, SEO, Python programming, mobile application development, GoogleWebToolkit GWT, Node.js/Express, GIT server on Windows.
Freelance 🌏| Software Engineer
2010 – May 2014 (4 yrs) | World (Remote)
Web Development, Technology Assessment, Technical Business Analysis, SEO, Python programming, mobile application development, GoogleWebToolkit GWT, Node.js/Express, MongoDB, Django, Plone, …
Piton Lux S.A. 🇱🇺| Software Engineer
Apr 2008 – Oct 2009 (1 yr 7 months) | Luxembourg
Development of custom/tailor-made solutions with CRM Software “eLink” at University of Luxembourg.
- HTML and CSS
- SQL (Oracle with PL/SQL, Microsoft SQL Server)
- Virtualization: VirtualBox
- Software Versioning: Subversion (svn)
- IIS, COM+
Callataÿ & Wouters 🇧🇪| Release Engineer
Oct 2007 – Mar 2008 (6 months) | Brussels, Belgium
Worked in team for the release of Banking Software “Thales”. Now called “Sopra Banking Software”.
Universitat Politècnica de Catalunya 🇪🇸| Researcher
Sep 2006 – Feb 2007 (6 months) | Barcelona, Spain
Research over the MPLS protocol: Multiprotocol Label Switching (MPLS) is a type of data-carrying technique for high-performance telecommunications networks. MPLS is a scalable, protocol-independent transport. In an MPLS network, data packets are assigned labels. Packet-forwarding decisions are made solely on the contents of this label, without the need to examine the packet itself. This allows one to create end-to-end circuits across any type of transport medium, using any protocol. The primary benefit is to eliminate dependence on a particular OSI model data link layer (layer 2) technology,
Thesis “Dynamic Configuration of Label Switched Path” under the supervision of M. F. Casadevall. PDF
- Linux Kernel Module development in C with mpls-linux
- Advanced Bash scripting
- Advanced Networking in Linux Kernel with QoS and various queue model (such as Weighted Fair Queuing)
- Network load testing with tc (traffic control command), iptables, quagga, tcpdump.
- Virtualization of Network with Linux Containers (Netkit http://wiki.netkit.org)
Master in Computer Science - 2005-07
University of Namur, Belgium - https://www.unamur.be/
Bachelor in Computer Science - 2002-05
University of Namur, Belgium - https://www.unamur.be/
Google Developer Expert (GDE)
For Google Cloud Platform - Credentials
Google Cloud Professional Data Engineer
Issue by Google - Credentials
Certified Kubernetes Administrator (CKA)
Issued by the Linux Foundation - Credentials
Certified Kubernetes Application Developer (CKAD)
Issued by the Linux Foundation - Credentials