Blog
Technical reflections on software architecture, AI-assisted development, and complex systems.
4 min readThread dump: usefulness, how to, and the difference from a heap dump
A thread dump doesn't show what's in memory, it shows what every thread is doing, or waiting for. It's the tool for a stall, not a leak.
→- 4 min read
Investigating a JVM stall with a heap dump: capture, read, resolve→
A stalled component isn't always a memory problem, and a heap dump isn't always the right tool. Here's how to know which one to reach for, and how to read one correctly once you have it.
- 4 min read
Running a coding dojo: choosing a kata and driving it with TDD→
A dojo isn't a meeting to ship code, it's a session to observe how code gets written. The format and the kata determine whether that distinction survives or collapses.
- 7 min read
What my MBA at Polytechnique taught me about digital transformation→
Twenty years of code teach you how to build a system. The Digital Transformation Strategist program taught me how to decide which one to build, and why.
- 4 min read
Swiss pairings: the algorithm behind a tournament's fairness→
Neither a round-robin that would never end, nor a single-elimination bracket that knocks out half the field after one unlucky game: the Swiss system solves a real pairing problem.
- 3 min read
Sealed classes: modeling a finite set of cases without a cascade of if/else→
A sealed class doesn't just replace an enum: it turns a forgotten case into a compile error instead of a bug discovered in production.
- 4 min read
Apache Spark on Kubernetes and Azure for computing risk indicators→
Simulating thousands of market scenarios across an entire portfolio, every night, before markets open: the kind of constraint that actually justifies Spark on Kubernetes.
- 4 min read
Optimizing token usage with Claude Code and Copilot: what actually works→
Tokens aren't just an API bill: a bloated context also degrades response quality. The techniques that make a real difference, day to day.
- 5 min read
Kubernetes day to day for a Java developer: what actually matters→
Not a kubectl tutorial, but the points where Kubernetes and the JVM rub against each other, across GCP, Azure and AWS.
- 8 min read
Doing real TDD with Claude Code: the step you must never skip→
TDD isn't 'write tests first'. It's a precise cycle, with named techniques, that AI makes both easier to follow and easier to unknowingly betray.
- 3 min read
Setting your day rate: the method beyond the calculator→
A day rate isn't chosen by looking at the market average. It's built from what it needs to cover, line by line.
- 3 min read
VaR (Value at Risk): what it measures, and more importantly what it doesn't→
The most widely used market risk metric in banking is also one of the most misunderstood, including by some who cite it.
- 4 min read
Schema registry: versioning a Kafka message without breaking existing consumers→
A Kafka topic decouples services, but the message format stays an implicit contract. A schema registry makes it explicit and verifiable.
- 2 min read
How I built this blog with Claude Code→
An exercise in transparency: this site was designed, redesigned several times, and filled with content in conversation with Claude Code.
- 4 min read
Hexagonal architecture in practice→
Why isolating the business domain from frameworks changes how you design and test a system.
- 3 min read
AI is not a code generator, it's a thinking partner→
After more than 20 years of development, it isn't AI that changed how I code, it's how I question it.
- 4 min read
Agent, harness, skills, hooks: four concepts people mix up→
AI agents are all anyone talks about right now, but four distinct concepts often get blurred together.
- 3 min read
The augmented developer: what Claude Code actually changes day to day→
Four concrete practices for using an AI CLI tool in a structured, safe and effective way, instead of blind vibe coding.
- 4 min read
Living documentation: a Claude Skill that updates itself→
The problem was never the team's willingness, it was the cost of updating docs by hand. Here's how a Claude Skill fixed that.
- 3 min read
Counterparty risk, explained to a developer→
A market finance concept that makes more sense in engineering terms than in formulas.
- 4 min read
Why TDD isn't optional when you're shipping fast→
The most common intuition about TDD is also the most wrong: that it slows you down when you're in a hurry.
- 3 min read
Why Kotlin remains my JVM language of choice→
Three unrelated projects (a revision app, a counterparty risk library, a tournament engine) share the same language choice, and that's no coincidence.
- 4 min read
Spaced repetition: what the Leitner algorithm teaches about data structure→
Kortex, Kafkex, Vocably, Lingopack: four different apps, one revision engine. What makes this problem interesting to model.
- 3 min read
Running Stockfish in the browser: what WebAssembly actually changes→
On OpeningBook, chess analysis runs entirely client-side. What that actually implies, beyond the WASM buzzword.
- 3 min read
Event-driven with Kafka: what you gain, and what you lose→
Decoupling services through events solves real coupling problems, but introduces others that are less visible at first.
- 3 min read
Getting started with Terraform: what the tutorial doesn't cover→
Writing a resource block is easy. What takes time to really understand is state, and why it's Terraform's actual subject.























