Working with Claude Code
Three agents, one repository: how Claude Code uses git worktree
I gave three agents a worktree each and watched what landed on disk — the pid inside the lock file, the worktree that erased itself completely, and the shared site-packages that no amount of git isolation was ever going to protect.
2 Aug 2026
·
6 min read
Git, past the happy path
git worktree: one store, many working directories
Switching branches is a destructive operation on your files. git worktree removes that coupling — here is the model underneath, the plumbing that makes it cheap, and the three rules Git only mentions when you break them.
2 Aug 2026
·
6 min read
Security and privacy, in practice
Why /.well-known/security.txt matters, and how to serve it properly
RFC 9116 answers the one question a stranger needs answered about your site: who do I tell about a vulnerability. What the file must contain, why the expiry date belongs in a test, and the routing trap that makes an SPA host serve it as HTML at 200.
2 Aug 2026
·
8 min read
Security and privacy, in practice
I didn't need an MCP gateway, I needed a smaller credential
I put an MCP server on the public internet so an AI client could file todos onto my private kanban board. The interesting part wasn't the protocol — it was making the dangerous call unrepresentable.
1 Aug 2026
·
7 min read
Shipping an AI feature into my own product
·
Part 4
The mic was the easy part
Adding browser dictation to my AI concierge took twenty minutes. Making it behave in a real composer, refuse to leave a microphone running, and tell the truth about where the audio goes took the rest of the day.
1 Aug 2026
·
8 min read
Building agents on the JVM with Embabel
·
Part 10
One mistake, three failures: named bindings in Embabel
When an Embabel action needs two objects of the same type, binding becomes two declarations that must agree — and nothing cross-checks them. Get them out of step and you get a startup exception, an unreachable goal, or a confident wrong answer, depending on which half you forgot.
31 Jul 2026
·
5 min read
Building agents on the JVM with Embabel
·
Part 9
The second run is cheaper: what an Embabel Context actually buys you
Ask the same question twice in one session and the planner drops a step. Not a cache — a consequence of A* refusing to schedule an action whose output is already on the blackboard, for better and for worse.
31 Jul 2026
·
6 min read
Security and privacy, in practice
A fourth host on the same jar: taking my kanban board off localhost
My kanban board had no authentication at all and handed its entire database to any caller. Putting it on focus.zakaria.lu meant a fourth host on the jar that was already running - plus a disclosure bug caught in review, and one cookie dot that 500'd every sign-in.
30 Jul 2026
·
8 min read
Building agents on the JVM with Embabel
·
Part 8
Blackboard vs Context: what an Embabel agent keeps between runs
An Embabel blackboard lives and dies with a single agent process. A Context is the thing that outlives it - and because it seeds the blackboard before planning starts, it changes which actions actually run.
30 Jul 2026
·
6 min read
Working with Claude Code
Seven ways to steer a coding agent — one of them is binding
I had written the same rule three times, which is a diagnostic, not a wording problem. Splitting my Claude Code config across the layer that fits each instruction: CLAUDE.md 250 to 163 lines, six path-scoped rules, and two hooks that cannot be talked out of it.
29 Jul 2026
·
13 min read