Simple Personal Website

The short biography of a developer

Projects

All the projects I have worked on during my short life help me to learn a lot of skills.

Below a collapsed list, of course, not an exhaustive list, but rather a selection of the most important ones:

Skills

Programming language:

  • Rust (one of my favorite language due to its safety embedded directly into the compiler)
  • Java
  • Python
  • C
  • Bash
  • Nix

Back-end development:

  • Spring Boot (Java)
  • FastAPI (Python)
  • OpenTelemetry
  • MongoDB
  • Kafka
  • Redis
  • ElasticSearch
  • Vault

Cloud & DevOps:

  • SaaS
  • Kubernetes
  • AWS
  • Terraform
  • ArgoCD
  • Helm
  • GitOps
  • CI / CD

Low-level development:

  • Rust no_std (I worked on a personal project, which is not open source, to create a no_std library for AVR microcontrollers)
  • Multi-threading
  • DTLS / TLS

Open Source Projects

I attached a strong attention for Open Source Projects. Since my early days in the computer science, I have always been fascinated by these communities which dedicated their time to create and improve software for the benefit of everyone.

Brioche

Brioche is a package manager that is written in Rust, and with recipes that are inspired from Typescript. It is designed to be easy to use, and provides a smooth experience. I’m one of the maintainers of this project with a strong focus on the package management.

Nushell

Nushell is my daily shell driver. Since I discovered it, I have been fascinated by the new paradigms it introduces: this shell put the focus on the command output, to parse and interpret it. It’s a bit similar to PowerShell. Nushell is a great tool for writing fastly and comprehensibly scripts.

I contributed to the project by implementing most of the HTTP commands that can be later called in the shell or script.

Miscellaneous

I can’t enumerate all the open source projects I have worked on, but here are a few additional ones:

Personal Projects

Below, some of my personal projects I developed. And if you want to have a look to my public repositories, you can find them here.

Brainfuck interpreter + GUI (WebAssembly)

Brainfuck language is a basic programming language that is mostly used for educational purposes. Implementing an interpreter for this language is a good exercise to do a small step in the vastly world of lexers and parsers.

I wrote the core interpreter in Rust with a few adjustments to make the integration easier when working with I/O. The graphical user interface is written with the egui immediate mode GUI library.

If you want to try the interpreter using the GUI, you can find it here. It is deployed as a static website on Cloudflare Pages.

Calculator GUI (WebAssembly)

I always wanted to try Bevy, a Rust game engine, don’t ask me why, but sometimes I get these whims. In addition to that, I read that Bevy was compatible with WebAssembly (aka Wasm). Then why not creating something with Bevy + Wasm. And here come the idea of the calculator, since it was perfect to try the Bevy UI system !

If you want to try the calculator, you can find it here. It is deployed as a static website on Cloudflare Pages.

Distributed job system

Example of a distributed job system in Rust with clients receiving work on their HTTP endpoint and distributing it to servers for execution. It uses MongoDB as database, Kafka as message broker, and Prometheus / Jaeger for monitoring.

This project demonstrates distributed systems in a world where most of the microservices are today written in Java, Python, Go or JavaScript.

No-allocation vector library

No-allocation is most of the time a requirement in embedded systems, where memory is limited. Having a vector library with no-allocation involves to instantiate a vector on the stack with a fixed size at build time. It was enough to experiment with Rust’s capabilities regarding compile time methods. Unfortunately, not all the methods of this library are compatible in a Rust constant context. Most of them are currently being blocked by the non-possibility to use traits in constant contexts. But it’s just a matter of time.

No-allocation SLIP library

Based on the no-allocation vector library, the no-allocation SLIP library provides a way to encode and decode data using the Serial Line Internet Protocol (SLIP) without any memory allocation. It’s perfect for embedded systems, more specifically for the ones sending messages over a serial port (which is kind of the same thing as sending a raw message over TCP). Having message’s markers is important to differentiate the messages being sent.