Architect but first and foremost developer and tech enthusiast, I enjoy a new challenge, learning new things and sharing my knowledge. I take projects from the requirements analysis all the way to production. Working in a startup taught me to be efficient and agile, while in a big company I learned to work with all sorts of technical and non technical constraints. I've been working in full remote with distributed teams for the last 4 years.

experience

Tech Lead Java/Go - Hands on architect
September 2015-February 2024
Ingenico / Worldline

I join Ingenico as a hands-on Solution Architect, our goal is to work as closely as possible with the development team, participating in the development of POCs, libraries or certain key features. I first define the architecture of new features in the Card Present payment applications (C++/Postgresql). I introduce a new service oriented model for some of those new features to isolate them from the core payment apps. I help the C++ teams embrace the Go language for these services. In parallel, I also train multiple teams on Git for the migration from SVN. The last application I design uses Kafka as a source of truth to remove the need of IPC message queues and reduce the dependency on a central database. This application will be written in Go and will be composed of multiple independent services.

After a year, I'm put in charge of the team developing the tokenisation service. It's a shared service written in Java/Spring exposing a Rest API and storing its data in a Postgresql database. Its role is to replace a sensitive credit card number (PAN) with a non-sensitive token. I participate in its integration by multiple internal business units of Ingenico and then Wordline. I also work with multiple big retail customers to define and operate the migration of their data to this service with minimum impact on their business. When I leave the company, more than 2 billion tokens are stored and it serve around 10 million requests every day with an average response time of 15ms.

After the merge with Worldline, I focus on the HSM usage in my business unit. I design and develop a loadbalancer to improve the availability and usage of our HSMs (specific protocol over TCP). This application has to be light and fast as an HSM response is usually within 3ms. I develop this application in Go and bring it to production in our local cloud. Every HSM call will go through this application (100 million per day). I then start working on higher level services with HTTP APIs (encryption, mac, pin...). I'm working with a team of 6 people in Sweden.

I'm also in charge of the scheme tokenisation service, a API translation layer in front of Visa, Mastercard and CB's own tokenisation services. This service is written in Java/Spring and the development team is based in India.

All our services are developped using the scrum method and deployed in our local cloud using Gitlab-CI/Terraform/Puppet. I work from dev to production in a devsecops way, using Gitlab to orchestrate the deployment lifecycle. I also manage the security reviews and certifications for my services (PCI DSS/PCI PIN). I ensure knowledge sharing among and across the teams through documentation, presentations, training and code reviews.

technologies/methods
  • Java
  • Go
  • C++
  • Spring
  • Postgresql
  • RabbitMQ
  • Kafka
  • HSM
  • Puppet
  • Docker
  • Linux
  • Scrum
  • DevSecOps
Senior Dev / Architect
August 2007-August 2015
Oodrive

Oodrive is a software editor specialized in sharing and saving files securely. I join as a senior dev/junior project manager on a backup software for Orange. The software has a Java/Swing frontend for configuration, a Windows service written in C++ for the actual backup and sends files to an Orange storage server using HTTP.

I then manage teams in charge of the backup software for pros (C++ -> C#, Java/Spring server, GWT web client), and our new file sharing solutions ala Dropbox : Java/Spring server, clients for Windows (C#), Android (Java), iOS (Objective C), Web (Angular).

My role evolves into architect as I work on the scalability and reliability of our applications: database replication & load balancing, offloading of the image processing outside the main server with work distribution using RabbitMQ

technologies/methods
  • Java
  • C++
  • C#
  • Swing
  • GWT
  • Spring
  • Hibernate
  • Postgresql
  • RabbitMQ
  • Scrum
Java developer
September 2001-August 2007
SII

My main mission as a contractor is for MBDA. As a junior developer, I work on GUIs for aircraft and missile mission preparation in a team of 6 people. It's a Java/Swing software which communicates with computation servers using CORBA.

I also work on smaller mission in Java/JSF as my first experience in backend development.

As I gain experience in Java, I also provide training for other developers.

technologies/methods
  • Java
  • Swing
  • JSF
  • Spring
  • Hibernate
  • MySQL
  • Waterfall

skills

languages
  • French: native
  • English: advanced
technologies/methods
  • Expert: Java
  • Advanced: Go Spring Postgresql RabbitMQ HSMs
  • Intermediate: Git Docker Puppet Kafka Linux
  • Novice: Kubernetes Terraform Cassandra
soft skills
  • Problem solving
  • Adaptability
  • Collaboration
  • Leadership

education

Master's degree in Engineering - Specialized in software development
Université de Technologie de Compiègne
2001
Bachelor in Science - Math and Engineering technics
High school François Bazin
1996

interests

  • Woodworking, Weightlifting, videogames