About me
I am a functional programmer with a strong focus on statically-typed languages and distributed systems.
I specialize in domain modeling that makes illegal states unrepresentable, robust error handling, performance optimization,
and comprehensive testing.
I’ve been programming since age 13 as a hobby, and professionally since 2017.
My experience spans multiple languages (Ruby, JavaScript, Clojure, ReasonML, PureScript, Erlang), including 4 years of commercial Scala development,
and the last 2 years working with Rust.
I enjoy exchanging knowledge with others. I have participated in various conferences and meetups.
Experience
Rust Software Engineer @Qwant (Cralwer Team)
My work extends across the crawler’s core infrastructure, encompassing URL redirection management, filtering systems, and comprehensive end-to-end testing, all contributing to Qwant’s robust search engine infrastructure.
Lead Scala developer @Canal+
As a lead Scala developer, I used Kafka and fs2 to develop ETLs that allowed us move massive amounts of data safely from the legacy systems, and eventually shut down legacy systems. I led the archiving feature team. My team was providing archivists the tools they need to document and retrieve videos from a very large catalog.
We used Cats, Cats Effect, fs2, Tapir and Akka. I encouraged my team mates to apply functional programming, hexagonal architecture, and test everything with property-based tests (Scalacheck).
Functional programming tutor @HEI, Graduate School of Engineering
Taught a 15-hour tutorial course on functional programming to students of the HEI School of Engineering in Lille.
The course covered the fundamentals of functional programming in Scala (referential transparency, totality, lazy and eager evaluation, composition, collections manipulation …) and a few more advanced topics such as IO monads and functional streams (using Cats effect and fs2).
We applied these notions to the making of a project : a purely functional Tic Tac Toe game that could be played simultaneously on two computers through a TCP server.
Scala developer @Colisweb
Colisweb is a french delivery service specializing in last mile delivery.
I developed Scala micro-services, using a purely functional style and libraries such as Cats and Http4s. I’ve had the opportunity to migrate several services from Play Framework to Http4s and Tapir; and also contributed to an open source tracing library to improve the observability of their platform.
Full-stack Javascript developer @Decathlon Maps
I worked a progressive web app (PWA) that let people find places for sport practice. I developed several features on the front end (React, Redux and Redux Saga) and on the back end as well (Koa and Postgres).
I implemented a better code delivery process, brought code reviews and end-to-end automatic tests to the project, and introduced my peers to functional programming principles that led to better separation of the business logic and greater maintainability of the product.
Front-end developer @Norauto
I developed progressive web apps (PWA) as part of a complete overhaul of Norauto’s information system.
As a team, we built a library-agnostic design system using custom web components (developed using Polymer) and leveraged those components in several PWAs, implemented using Vue and React.
Front-end developer @Qlikbeton
Qlikbeton is an international online marketplace that sells concrete at attractive prices during off-peak periods. I worked on the front end of the marketplace within a team of 4 React developers.
We strived for a mostly functional codebase: side-effects were carefully separated from the purely functional business logic, UI components had little to no intelligence and could be composed easily. We made an extensive use of Ramda, a functional Javascript library that encourages immutable objects and function composition.
Full-Stack developer @Pingflow
Pingflow develops a no-code software a service that allows anyone to design big, interactive dashboards that automatically displays up-to-date information from various data sources. These dashboards can be created by dragging elements on a canvas, and connecting them to data sources such as APIs, SQL databases and spreadsheets.
I led the development of a new major version of the product and migrated the codebase to a more modern an more scalable architecture: from stateful services that were hard to scale to stateless services that could scale horizontally, from jQuery to Vue, from Javascript to Typescript, from release in zip files to containers.
It was also my first professional experience with Scala and Akka, which I has taught myself and introduced in an attempt to build a more scalable platform. Actors and message-passing made it easier to reason about the live data update that were dispatched throughout the system.