2025

Teads (MPL)

Software Engineer @ SSP Video

Mar. 2025 - today

Stack: Scala, AWS, Terraform, Grafana (Loki, Tempo)
Infrastructure
  • Moved application to ARM to reduce costs
  • Handled ~20 billions requests / day
  • AWS us-east-1 outage management
Alerting & Monitoring
  • Implemented tracing with Grafana & Tempo
  • Reworked alarms to make them more relevant and reduce spam
  • Metric-based deployment
Business
  • Worked on the link between exTeads and exOutbrain

Software Engineer @ Format

Mar. 2024 - Feb. 2025

Stack: Scala, Typescript, GitHub Actions, Terraform, Jenkins, AWS, Grafana & Loki, Kibana
Jenkins to Github Actions
Migrated both the CI & Deployment pipeline from Jenkins to GitHub Actions & adapted it to better match our needs (more parallelization, caching, readbility etc.)
Newer encodings for ads
  1. Migrated the service used to encode ads from a legacy API to a newer one so we could move forward and introduce more performant encodings. Used the double-run strategy to ensure correctness
  2. Streamlined the worklow: SQL batch writes, parallelized SQL read queries etc.
  3. Introduced segmented video encodings with AWS MediaConvert, reducing resource consumption on both client & server side. Used event-based architecture with events, queues, etc. Gracefully handle failed event processing by retrying only what is necessary. Encoding process are templetized and versionned to be easier to use and future-proof
  4. Set up monitoring & alerting through CloudWatch & Grafana
Technical debt removal
Cleaned up (deduplication, use native construct instead of custom ones, etc.) legacy parts of the format's codebase to reduce accidental complexity and improve development speed, as well as confidence in the codebase. Since it's a critical part of the delivery each change affecting the codebase is going through a technical A/B test to ensure there's no regression.

End of studies project

Conecs.io, Montpellier, France

Dec. 2023 - Feb. 2024

Stack: Rust, Advanced Encryption Methods
  • POC on a privacy-preserving storage for clinical data with special encryption methods to allow re-using & sharing data easily across multiple actors, only if the patient allows it.
  • Reviewed several research papers to understand how these methods work, their use cases, limitations, risks, etc.
  • Implemented a small POC with Rust 🦀 as it's extremely CPU-efficient and a POC isn't used in production, so it was a nice opportunity to learn a new language :)

2023

Software Engineer Intern

Scala Center, Lausane, Switzerland

Apri. 2023 - Aug. 2023

Tech: Scala, JVM, Scala-Java interop, Reflection

Improved the Scala debugger in VS Code with a new evaluation mode, using runtime reflection. It is limited to expressions that can be correctly evaluated at runtime (e.g., in the case of an overridden method, using reflection we could pick a method different from what the compiler would have chosen).

The evaluation is performed in 2 phases:

  1. Validate the expression: correct syntax, evaluable using reflection. Transform the expression AST into a custom ADT representing the expression, that can later be evaluated.
  2. Evaluate the expression.

This evaluation includes a pre-evaluation mode. Instead of using the compile-time type of a value, if possible we evaluate it and use its runtime type. It eases the access to runtime information during debugging.

I particularly enjoyed the compiler-related part of the project: ASTs, type checking, overload resolution, etc.

As a secondary project, I helped with the implementation of Hot Code Replacement (HCR). This means that we can now launch a debug session, change the code, and just reload the session (so we keep the "progress" made +/-) instead of restarting from the beginning.

2022

Assistant Software Engineer

Teads, Montpellier, France

Jun. 2022 - Aug. 2022

Stack: Scala, Typescript, gRPC, React, Git, GitHub, Cypress, Jenkins

2-month internship where I worked on the V2 of their demo application. I did some backend development with Scala & the Typelevel ecosystem (Cats-effect, doobie...) followed by a more front-end part (in the end I worked on both backend & frontend at the same time).

For each feature I developed, I was responsible for the whole lifecycle: code, test, deploy, refactor, fix bugs...