Valentin Vivier
I write software
that scales.
Based in France. TypeScript, Go, Python, whatever the job needs. Currently running the engineering team at a cybersecurity company. I like infrastructure, side projects, and understanding how things actually work under the hood.
The kind of problems I like
Systems that can't go down and data that can't be lost
I keep ending up in places where the pipeline handles 1TB/day and the cluster ingests 40k events per second on fixed hardware. I like that. Throwing money at infrastructure is easy. Making it work within real constraints is the interesting part.
How I got here
Dropped out of school, started a company, figured it out
I left Epitech in third year because I had clients willing to pay me to write software. Ran a consultancy for 4 years, worked with 6+ startups, built everything from distributed ledgers to embedded systems. Then Societe Generale, then cybersecurity. No diploma, no regrets.
After hours
I build weird stuff for fun
A tabletop RPG system with a physics-based damage model and a web codex built in React. A game prototype in Godot with a Go server. A NixOS theme switcher that live-reloads 10 apps at once from a rofi picker. An AI code orchestrator that forces QA gates the model can't skip. I don't really stop building things.
The manager thing
I run a team of 8 and I still write code every day
I've been Director of Engineering at Stamus Networks since 2024. I set the technical direction, I rebuilt the test strategy, I manage the roadmap. But I also wrote stamusctl from scratch in Go, tuned the Elasticsearch cluster myself, and I deploy my own PRs. I don't want to be the kind of manager who stops touching the codebase.
What I'm working on
Dosismart
A radiation dosimetry SaaS I'm building. Go, React, Zitadel, 12 containers in the dev stack.
This website
Astro + Tailwind. You're looking at it. Blog, portfolio, excuse to write about things I find interesting.
NixOS everything
4 machines, one flake. I keep adding things. Latest: a theme system that switches 9 color schemes across every app simultaneously.
Writing
All postsMy Go binary decides what it is by reading its own name
stamusctl ships one source tree as two programs, a CLI and a daemon, and the process picks its role by looking at os.Args[0]. Why I keep building things that way, what breaks under go run, go test and hot reload, and what I would change.
Read moreFour ways to pay an order in Go
The same feature written four times, each rewrite moving the business rules further from the database, until they are two pure functions you can test with no infrastructure at all. What each step buys, and what it costs.
Read moreSum types in Go, or how to model events the compiler can check
Go has no sum types, and event sourcing really wants them. The sealed interface pattern, why type switches lie to you about exhaustiveness, and how to get the missing compiler checks back with a linter or a visitor.
Read moreSay hi
I'm always up for talking about infrastructure, NixOS, or whatever you're building.
valentin@viviersoft.com