Projects
Quorum
2026 · Go · Raft, write-ahead log, snapshots, Docker, Prometheus
A replicated key-value store on an implementation of Raft written from scratch. The consensus
core never touches the clock, the network or the disk, so a whole cluster runs inside one
test and replays exactly from a seed. That made it possible to throw message loss,
partitions and crash-restarts at it and check Raft's safety properties after every step.
- 3,000 randomized fault scenarios on every CI run; deliberately broken versions (a forgotten vote, a lost entry, a wrong snapshot rule) make them fail.
- Concurrent operations under partitions, with log compaction on, checked linearizable with Porcupine.
- Durable writes went from 842 to about 3,450 per second once replication was pipelined and fsyncs were batched.
It runs on a small cloud VM where a cron job kills the leader every ten minutes. The first
days showed an election storm after each restart: the other nodes kept writing into their dead
connections to the restarted one, and TCP only told them so 26 seconds later. Fixing the
transport, then adding PreVote, lets a restarted node rejoin without forcing an election.
Live dashboard
Code
What went wrong along the way
Vigil
2026 · Go, Python · MQTT, Kafka, TimescaleDB, Prometheus, Grafana
Telemetry and failure detection for a fleet of machines. A crashed machine is easy to
notice: the broker publishes its last will. A machine that is still connected but has
stopped working is not, because its network thread keeps answering pings. Vigil catches
both, the second with a phi accrual detector that learns each machine's heartbeat rhythm.
- A stalled machine is flagged after about 1.2 s of silence; a crash is reported in about 1 s (50 simulated machines).
- A stream processor keeps a 10-second history per machine in TimescaleDB and stores its Kafka offsets in the same transaction, so a crash never leaves a bucket half written.
- No message lost at 16,000 messages per second from 8,000 simulated machines, in a load test on a 4-core CI runner.
Live dashboard
Code
What went wrong along the way
Fault-tolerant key-value store
2026 · Java, Akka · team of four
A multi-writer, multi-reader atomic register in the style of ABD, over N actors and
tolerating fewer than N/2 crashes. Execution histories were checked for linearizability,
and latency was measured across nine configurations.
Code
Distributed robotic factory
2025 · Java, Spring Boot, Kafka, Docker
A monolithic factory simulator turned, in four stages, into a concurrent and then
distributed system: one thread per robot with livelock detection, a binary TCP persistence
protocol, a Spring Boot service and state streamed over Kafka.
Code
HARO
2025 · Python · research, INPT
A multi-objective optimiser that proposes ways to split a Java monolith into microservices
and ranks them by expected refactoring return. It compares more than twenty
community-detection and metaheuristic methods on five real Spring systems. The code is
private for now.