The ground changes, the standard stays,and what is missing, I build.
I design how applications are built, delivered and run, for my own products as for the teams I advise. My rule: everything that runs is described in code and can be rebuilt identically, its restoration is proven by a drill, and every claim about its state is dated and verifiable.
I map a system before touching it,and every intervention leaves a trace.
Claims that can be verified
Before touching a system, I map it, and the register of what exists is produced by the machine rather than written by hand: every server, service and backup appears in it with its state and the proof that establishes it. Every intervention leaves a trace (the operation log, the fingerprint of a restored file, the result of a test), kept next to the code that produced it.
Read moreShow less
Code that touches money or access goes through a tooled security review, and every finding is fixed with the test that stops it coming back. When I do not yet know something, I write it down as such, with what it would take to establish it.
Fixing upstream
When an open-source tool gets in the way, I fix it upstream rather than work around it. In Veyon, the classroom supervision software, I fixed in the remote view and the PipeWire VNC server under Wayland, two patches in C++ and Qt 6 accepted by the project.
For each area, the tools I use and the reason I chose them.
Cloud and Infrastructure as Code
Everything that runs is described in code, so that it can be rebuilt identically, and sits with the provider that fits the need rather than the habit.
Google Cloud
AWS
Hetzner
OVH
Cloudflare
Pulumi
OpenTofu
Ansible
CI/CD and the software supply chain
A change reaches production only after its tests, in a signed image whose contents are known, and the itself knows how to restore itself.
GitLab CI
GitHub Actions
Docker
signed images
SBOM
provenance attestations
BorgBackup
Systems and network
A fleet is described like an infrastructure: the configuration applies itself, access goes through a single identity and secrets stay encrypted.
Linux (Ubuntu)
bootc
Ansible
Keycloak
OIDC
SOPS
Tailscale
Backend
TypeScript end to end and a : the domain depends on no framework, so it can be tested and evolved without rewriting everything.
TypeScript
NestJS
GraphQL
REST
PostgreSQL
Python
Solidity
Interfaces and engine
Next.js and React for applications, and an engine in Rust compiled to when a game or a tool must hold its compute time on the most modest device in the classroom.
Next.js
React
Rust
WebAssembly
WebGL
Agentic AI
I bring AI in where it serves the work, at the scale of the organisation: the right model for each task, agents that act under human control, and a trace of everything they do.
Claude
Codex
agent orchestration
human validation
traceability
Teaching
A course is built like software: a single source gives the course book, the platform, the exercises and their corrections, and every student project goes through a real .
Git
GitLab CI
Docker
Python
online labs
Teaching
From Year 5 to master’s level,and on to professionals, I teach the way I build.
My students range from a Year 5 child to an adult changing career. For each audience, I design teaching as a complete system: objectives, one , reproducible activities, tooled assessment and materials drawn from a single source.
Sciences, English and geography, from Year 5 to Year 10
Edeys school, in Le Haillan, welcomes , or pupils in small groups. I have taught there since 2025, from Year 5 to Year 10: life and earth sciences, physics and chemistry, technology, mathematics, English and geography. This calls for explicit teaching, short instructions, materials that each pupil can pick up without help, and the exact vocabulary of the curriculum.
Preparing for the classes préparatoires
For a final-year pupil aiming at a preparatory class (classe préparatoire), I wrote a collection of exercise books in mathematics (advanced mathematics included), physics and chemistry, and Python. Each skill starts with a course reminder and a worked example, then grades its exercises over four levels, with hints and corrections. Every numeric result is recomputed by an independent program.
At EPSI in Bordeaux, I teach at Master’s level what keeps software running in production: observing it, testing it, securing it and governing the cloud that hosts it. In Master’s 2, I also supervise a project in an international team and sit on the juries.
Read moreShow less
In Bachelor 3, I teach Git and CI/CD, Docker and blockchain development. Each subject has its course book and its learning platform, which I wrote and run, and projects go through the same as my production systems.
Training adults
For engineering teams, I wrote a Docker training course in twenty chapters (Engine, Compose and Swarm), each with its runnable lab, and I teach it remotely. I also guide adults changing careers towards digital professions.
Engaging through play
Play is my main lever for engagement, provided it serves real learning. I designed and played in class an algebra card game, Enquête dans le bois (a field guide in cards for life sciences), English duels and Mission Terminal, which teaches the through checked missions. For the ÉCHO days of the Compétences & Développement network, I designed the app of the same name, where every meeting with a person from another school moves the group and its campus forward.
My practice raises questions that I would like to investigate with research teams. Does a game designed for a single notion, then revised from how the session went, change engagement and memorisation in dys, ADHD or autistic pupils? Does a workstation that does less make them more autonomous? What does immediate feedback on every project change for learning? And can an AI designed for one school, from its own rules, help teachers without replacing their judgement? Today I judge a game by the engagement I observe in class: the approach resembles , but these are a practitioner’s observations, not measurements.
Read moreShow less
Part of the set-up already exists. My games follow and the W3C guidelines on cognitive accessibility, and my planet game can be played without an account or a real name. An observation protocol, with its grid, is under way with pupils aged 10 to 13, and my work at LIRIS taught me what an experimental protocol demands. I am open to joint work in didactics, inclusive education or educational technology, on my tools as on the ground of my classes, within the framework set by each school and with the families’ consent.
Image tearing: the screen shows the top of one frame and the bottom of the next at the same time, leaving a visible dividing line.A server that hosts code repositories, their reviews and their pipelines (here GitLab).Keeping an application’s core logic apart from its databases and interfaces, which plug in around it through interchangeable adapters.A binary format that browsers run at nearly the speed of native code, here produced from Rust.Continuous integration and delivery: every change to the code is built and tested automatically, then delivered if everything passes.One realistic case that runs through the whole course: every new idea is applied to it, so you watch the project grow.Specific learning difficulties such as dyslexia, dysgraphia, dyscalculia and dyspraxia, which affect one precise function and have nothing to do with intelligence.Attention deficit hyperactivity disorder: attention, restlessness and impulsivity are harder to regulate.On the autism spectrum: a different way of perceiving and communicating, which often needs a clear and predictable framework.Hosting where you write functions without managing servers: the provider runs them on demand and bills by use.The series of automatic steps (build, test, deliver) that a change goes through before it reaches production.The command interpreter: you type instructions into it and the system runs them straight away.Research guided by design: you improve a teaching set-up in the classroom through successive cycles, and each cycle also produces knowledge that can be reused elsewhere.Designing teaching from the start so that it is accessible to as many people as possible, by varying how it presents, how learners act and how they engage.