Building this site in public
BuildCV: I shipped a free CV builder — no account, no paywall, no server-side data
I got annoyed at 'free' CV builders that paywall the download button, so I built one that is actually free: a guided wizard with a live A4 preview, French and English, and a PDF that never touches my server. Here is the product thinking, the architecture, and the near-outage a code review caught.
21 Jul 2026
·
6 min read
Traces, Tempo and the LGTM stack
Metering the agent fleet: cost & metrics for Claude Code subagents
If you distribute a Claude Code agent to a marketplace, every developer who runs it spends your reasoning budget and yours to answer for. Here is how I wired Claude Code's built-in OpenTelemetry into a Grafana/LGTM stack to watch cost, tokens and tool decisions — per run.
19 Jul 2026
·
12 min read
Security and privacy, in practice
The most honest cookie banner sets no cookies
I added a privacy notice to my site and refused to make it a cookie banner — because the only cookie I set is a functional one. Here's the reasoning, and why the dismiss flag lives in localStorage, not a cookie.
16 Jul 2026
·
5 min read
Learning MongoDB
·
Part 2
MongoDB, Part 2: The Aggregation Pipeline, Stage by Stage
Part 2 of my MongoDB learning series: how the aggregation pipeline reshapes documents stage by stage — $unwind, $group, $lookup — plus the type-mismatch bug that silently joins nothing and why stage order is a cost decision.
15 Jul 2026
·
5 min read
Learning MongoDB
·
Part 1
Learning MongoDB, one document at a time
Part one of a series: a Spring Boot 4 playground, the embed-vs-reference call that replaces schema normalization, and the Decimal128 default that would have quietly corrupted every price I stored.
15 Jul 2026
·
6 min read
Shipping an AI feature into my own product
·
Part 3
Adding a job description match to my AI Concierge
I added job-description matching to the AI concierge on my career site. It shipped with no new bean, no new table, and no migration — because the leverage was in a seam I'd already built. A design note on shared streaming cores, streamable structured output, and treating a pasted JD as hostile.
13 Jul 2026
·
11 min read
Building this site in public
I dropped an AliBaba's AI agent into my own website
A 5 minute experiment: wiring Alibaba's page-agent into my career site and pointing it at DeepSeek, so the whole UI takes orders in plain English. How it works under the hood, what its reasoning traces actually look like, and why I kept it strictly local.
9 Jul 2026
·
5 min read
Running the box: Docker, Linux, the JVM
Where does app.jar find its dependencies? The JVM rule hiding in your Dockerfile
Spring Boot's layered jar extraction splits your dependencies from your code for faster Docker rebuilds. But the mechanism that makes the pieces find each other at runtime isn't Spring at all — it's a JVM rule from 1998.
8 Jul 2026
·
5 min read
Security and privacy, in practice
Four security headers, and the CSP I deferred on purpose
The cheapest security win on a single-container stack lives at the reverse proxy. Here's the four-header Traefik middleware I shipped, the two things I deliberately held back, and the report-only CSP rollout I'm lining up next.
8 Jul 2026
·
6 min read
Working with Claude Code
Shipping my own site at the speed of a prompt
How I turned my repo's operational knowledge into custom Claude Code skills — /dev, /code-review, /ship — so any change goes from idea to verified-in-production in a single session, with me still on the trigger.
8 Jul 2026
·
6 min read