Profil

Je suis un développeur Rust travaillant pour Wire. Je suis toujours curieux d'apprendre et soucieux d'écrire du code le plus propre possible. Mon principal domain d'expertise est la cryptographie et plus particulièrement MLS.

Experiences

Développeur Rust

2022 -
Wire (Berlin), remote

J'ai commencé mon premier emploi de développeur Rust pour Wire, une application de messagerie sécurisée. Je travaille sur les librairies de cryptographie qui sont en charge du chiffrement des messages et des fonctionnalités primaires de l'application. Mon travaille consiste essentiellement à implémenter un protocole de messagerie: MLS, qui rend les conversation à plusieures centaines d'utilisateurs plus performantes que le traditionnel Double Ratchet. Cela implique également d'exposer une interface commune (FFI) aux consommateurs de cette librairie (Android, iOS et WASM pour le web). Je suis également contributeur de la librarie open-source openmls qui est l'implémentation de référence de MLS. Je contribue aussi à la solution d'identité de bout en bout propriétaire à Wire qui permet aux clients de messagerie de vérifier de manière autonome l'identité de l'expéditeur d'un message. Enfin, dans les prochains mois, je projète d'aider Wire sur le chemin de la conformité DMA (Digital Markets Act), une nouvelle régulation européenne qui vise à rendre les messagerie intéropérables et dont la pierre angulaire est MLS.

Architecte

2020 - 2022
Sopra Banking Software, Nantes - Paris

Après avoir suivi la formation certifiante dispensée par Télécom Paris, j'ai été désigné architecte et ai commencé à réaliser les études de développement des nouveaux projets, donné des formations aux nouveaux arrivants et bien entendu continué à développer des fonctionnalités critiques des systèmes bancaires.

Développeur Spring

sept. 2017 - 2020
Sopra Banking Software, Nantes - Paris

Le projet SBCP (Sopra Banking Cloud Platform) fait suite aux directives européennes PSD2 obligeant les banques à ouvrir leurs APIs à des tiers. Le but du projet est de fournir une exposition des APIs internes des banques vers un des formats normés de la réglementation PSD2. La solution proposée s'articule autour de microservices SpringBoot. Mon rôle au sein de ce projet est d'accompagner techniquement l'équipe sur la résolution de bugs, de proposer des solutions aux problématiques techniques et de mener les revues de code hebdomadaires

Développeur JEE

mars 2016 - sept. 2017
Sopra Banking Software, Annecy

J'ai intégré l'équipe chargée de la réalisation d'un framework JEE à destination de l'ensemble des projets applicatifs de l'entreprise (plus de 30 projets). Ma principale tâche fût de designer et de mener la transformation des web services existants vers des APIs REST. Cette tâche s'est accompagnée d'inplémentations, de rédaction de documentation et de conseils.

Développeur Android

sept. 2015 - fev. 2016
Genii, Annecy

Dans le cadre de mon stage de fin d'études j'ai intégré la jeune startup annécienne Genii alors en cours de développement de son produit : CastByGenii. L'idée s'articulait autour du concept de rendre la TV plus social en permettant à des personnes géographiquement éloignées de pouvoir visionner un contenu tout en partageant leurs réactions en temps réel.
J'ai participé à la conception de l'application Android ainsi qu'à la gestion et l'amélioration des flux vidéo.
J'ai de plus eu la chance de participer avec toute l'équipe au CES de Las Vegas en 2016 ou j'ai eu la charge d'organiser les démos privées et de tenir le stand en pitchant le concept à tous les visiteurs.

Développeur Javascript

sept. 2013 - fev. 2014
Current, Paris

J'ai intégré la toute jeune startup Current pour mon premier stage en entreprise durant ma seconde année d'école d'ingénieur. Le concept était de développer un player vidéo aggrégeant plusieurs flux afin de tous les afficher simultanément pour permettre à l'utilisateur de sélectionner sans latence le flux de son choix et ainsi de prendre la place du réalisateur de l'émission.
J'ai eu la charge de porter l'application Flash existante en HTML5 / Javascript. J'ai ensuite assuré la livraison au client (Taratata).

Projets

Quelques "side projects" que j'ai pu mener

stubr - Réimplémentation de Wiremock en Rust pour améliorer ses performances et développer le contract testing en Rust
asserhttp - Permet de faire des assertions fluent pour la majorité des clients http Rust
restdocs-dsl - Permet d'alléger la syntaxe de Spring Restdocs (génération d'une documentation à partir de tests) à l'aide de DSLs Kotlin. Ma contribution comprend l'apport d'un générateur de DSL à l'aide de kapt afin d'alléger encore la syntaxe
dxp-gradle - Librairie configurant le build de tous les projets Gradle réduisant la configuration nécessaire à une simple ligne.
dxp-cli - Command Line Interface en Rust (~10k lignes) gérant la plupart des tâches courantes d'un développeur : proxy switching, project initializr à partir de templates, log parser, kubectl helpers...
Instant Payments POC - POC sur l'implémentation des Instant Payments en microservices. Implémenté en JEE à l'aide de Kumuluzee, de bases MongoDB et Redis et du client Redisson.
Rest Design Principles - Documentation de référence de 80 pages sur REST et ses principes ainsi que des règles de design d'APIs à destination de tous les projets Sopra Banking et ses clients.

Compétences

Rust

Kotlin

Java

Javascript

Rust

Spring

Android

Java EE

Reactive Programming

Mongo DB

Redis

Kubernetes

Istio

Docker

Gradle