The beauty is in simplicity, creating complex piece of software follow the same rule. I enjoy creating nice product (with amazing UX) and tooling (with amazing DX) that are simple to use and maintain (testability and observability are keys).
Any complex problem can be split in a smaller one. I also apply this principles in my hobbies, such as woodworking and climbing. With this mindset, nothing is impossible!
Used by millions of people, Mavenoid is an elegant system to support customers in their journey with hardware products (setup, support, spare-parts…).
As a FullStack engineer, I was in charge of modernizing our browser extension. This one is to support call center to help agents finding solutions.
Naturally, since our main product is a chatbot, LLM was part of the program. To make the best of it, I was involved in multiple aspects:
Make sources as pdf, json and third-party knowledge base accessible to the LLM. This was fully integrated to our UI and architecture, and I had to make sure that everything was robust to handle our customers demands.
Provide a way to the LLM to redirect to existing guided solutions.
This way we had the best of both worlds: human written flow when exists and curated generated solutions when nothing specific existed.
Startup created by the team behind the tauri project, our goal was to create a new platform to make publishing desktop applications easy. This involved packaging, signing and make the app available on market (with auto-update).
As a FullStack Engineer, I was part of the bootstrap of the platform, using Rust in the backend and SolidJS in the frontend.
First experience with Rust for me, my first challenge was to find a communication layer to keep the type safety from end to end. We picked rspc, it was risky since this was in alpha state, but no regrets, the DX was amazing!
The frontend was straight forward, I’ve crafted almost everything in this area, making sure it stays accessible and modular so it’s easy to iterate. A good example to illustrate this, was to have a simple type-safe router (not available in solid ecosystem at this time). Doing this, we avoid any dead routes & had auto-completion on the parameters 😊.
We had an interesting problem at work, some generated types where lying and caused some sneaky problems later in production.
Indeed, we were generating a SDK from open-api specs (thanks to openapi-codegen, another project of mine), but the underline specs were written by hand. To solve this, I’ve decided to start my most popular github project: ts-to-zod.
The goal is quite straight-forward, take the generated types and convert them to zod schema (runtime validation library). Later on, I will use those schemas to validate any response from the API to make sure they are 100% correct.
Interesting challenge, since we had a lot of types, I didn’t want any false-positive. This is with this in mind that I came with a “runtime validation” of the generated zod schema during the generation process. The idea is quite simple, every z.infer<originalType>
should be strictly equal to the original type. This worked perfectly, we found and fixed all the specs mistakes and had 0 false-positive!
Part of the founding team at Xata, we had a lot of challenges to solve:
I’ve started in the frontend team, crafting the foundation of our product. The main challenge was to keep the UI very responsive with a lot of data to display, but also keep the codebase as modular as possible since the product was constantly evolving.
Later, I’ve joined the dev-rel team where I’ve tried a lot of frontend frameworks as I was working on integration examples. SolidJS, Astro, Gatsby, NextJS and Svelte are all things I played with!
Helping people to build product around our database was also one of my responsibility, and I really enjoyed mentoring less advanced developers.
Lastly, I created a more real example, called “Xataform” that’s a copycat of Typeform, but using Xata as data layer. You can have a look here if you are curious.
Working for a language-learning company with a B2C product! This was a short experience for me, with a very lovely team and exceptional company culture.
I had the pleasure to play a bit with:
But sometimes, life is about opportunity, and one of my best friends offered me an amazing position with a new company called Xata with a state-of-the-art database product and I couldn’t turn down this challenge! 😁
An amazing team and an ambitious product, I’ve been working with Contiamo since 2018 and was part of the product-shaping since the beginning of a strategic change of the company.
We started by providing a solution helping datascientist to manage their jupyter notebooks: collaboration & easy deployment of function as service.
This solution was combined with a query engine, capable of querying any kind of databases with only one flavor of SQL.
Now, after a bit of refinement, our product is focused on cataloging, giving access and querying large data landscapes.
With this in mind, as a Frontend engineer, I had a LOT of fun challenges:
This was only possible thanks to my amazing teammates, always there to challenge the smallest edge case! Our favorite game is to slow the network, click everywhere, kill the network sometime, and see if everything still looks good! 😅 No better way to improve the robustness of your application!
Fun fact, this stack is almost fully REST, and the tooling of OpenAPI was really poor, but not anymore! A bit frustrated with the tooling available, I took this opportunity to create something very cool. Now, we have full autocompletion of our backend endpoints in VSCode, and can even use the frontend codebase as regression test for the backend 😁.
Development of the web application and the internal management tools for Baze.
Baze is a solution which provides you with tailored dietary supplements based on blood samples and personal data.
My projects/responsibilities were :
This was my first experience using GraphQL in a production environment and it went extremely well. It would be hard to go back to REST after that!
I’ve also used this opportunity to participate actively in open-source projects like graphql-yoga
and apollo-link-rest
. After all, there’s nothing like an application in production to improve your tools 😊
Active participation in the Gatsby community : development, code review, tests and support.
When I decided to build this website, I knew I wanted to:
With these requirements in mind, I searched for the best solution, and this is how I discovered Gatsby (as a pre-alpha version) and I decided to take part!
My main interventions were:
After all this, I was finally able to start building my own website using the perfect tools.
Development of the software for the Tactronik chip’s demonstration kits.
This software, developed with Electron/React/Redux/Redux-observable/Jest, enables the configuration of different predefined haptic effects before sending them to the demonstration chip via the serial port.
The challenge was to have a layer of serial communication without having access to the chip to do testing before delivery.
Using Redux-observable and a battery of unit tests, the connection succeeded without a hitch. The project can now be easily maintained and evolved. Isn’t that great?
Development of a solution to generate haptic effects.
This was a quick project for a client’s POC, the aim was to create an application to generate and sequence haptic effects, then export the result.
The biggest challenges were the speed of the project and the necessity to handle a great volume of data. Therefore, we decided to use a 100% web solution with a CSV export, in spite of the risk of browser latency.
In the end, the product works and the client’s requirements were fulfilled!
I also used this first mission for Actronika as an opportunity to train the team in React/Redux/TypeScript/Jest, so as to allow an easy hand-over.
Conception and development of the entire Speekoo application
Speekoo is a language learning application. Its advantage lies in its method, based on the language’s structure instead of learning by heart responses for specific scenarios.
My responsibilities and projects included:
My greatest adventure (until now)! Vinoga, the social farming game set in the world of wine-making.
As a team of two developers, we implemented not only an entire game but also a complete developing environment to optimize our efficiency. I was personally responsible for the architecture of the servers and back-end. Architecture-wise, everything can be deployed and versionned on cloud formation, including a jenkins, a redis, and a system to manage docker instances. All of it is deployed continuously with 0 downtime.
The game in question is only accessible on Facebook and is entirely programmed using javascript. Many challenges were undertaken during these 2 years: performance, UI, A-B testing, occasional animations… In short, it was all good!
Using my personal experience in graphic design, I was also able to lead and train our graphics team and ensure handover. Furthermore, due to the specifics of working in a start-up environment, I endeavoured to help out wherever possible (shooting promotional videos, organizing events, designing graphical elements…). It wasn’t always easy, but one thing is sure : I learned a lot from this experience!
Our last field of experimentation was project management. From “on-the-fly” development to the the implementation of agile methods (Scrum first, then Kanban), we were able to ascertain the pros and cons of each method, adapt them and learn from them.
Studying management?! Indeed, during my studies I chose to dive deeper into business subjects differing from my passion: programming.
As a matter of fact, I’ve been developing since I was 11 years old, and I’ve always been self-educated. Having a desire to learn, I decided to pursue studies in the management/commerce fields. However, I chose a business school sharing a campus with an IT college, and I chose a specialty that is common to both schools: Engineering Information Systems.
I do not regret this choice, which allows me to apprehend projects with a greater open-mindedness. :)
During that period, I also took intensely part in the club life of the campus: I became vice-president of the Arts Office, President of the makers’ club and member of the robotics club.
One of the best trainings for working life, in my opinion, these two years of teamwork on a variety of projects have made me who I am today!
It was there, right after high school, that I truly experienced teamwork. It taught me the importance of good communication and organisation, which are still at the core of my profession today.
During that time, I was constantly in contact with professionals and have participated in projects with concrete results (fundraising “téléthon” in a mall, proposal for a communication campaign…).