Working with Claude Code
Claude Code mods change the harness, not just the prompt
Two Claude Code mods, Flightdeck and a prompt-cache meter, tested with an 8-agent workflow on a Play/Scala repo. A mod doesn't change the model; it changes what you see while it works, and so what you decide.
23 Oct 2026
·
6 min read
·83 views
Cats Core
·
Part 9
Cats Core, Part 7: Eq and the Comparisons == Lets Through
Scala's == compares any two values, so a TodoId against a String compiles and returns false. Cats' Eq makes that a type error, explains why Some(1) === None fails, and lets me decide which fields count as equal.
23 Oct 2026
·
5 min read
·49 views
Guice and play and escaping DI hell
·
Part 2
Guice and Play, part 2: the moment Guice can't guess
A test that could not pass forced my first trait into the graph. @ImplementedBy, a root Module, a test that builds the real Guice graph, and the error Guice prints when a binding is missing.
23 Oct 2026
·
5 min read
·52 views
Guice and play and escaping DI hell
·
Part 1
Guice and Play, part 1: I deleted my wiring file and Guice built the graph
At work I wire Play apps by hand with the cake pattern. In my own projects I switched a Play 3 template to Guice: one deleted config line, one @Inject(), and a timestamp that made me think Guice was broken.
23 Oct 2026
·
6 min read
·46 views
Working with Claude Code
Testing a Claude Code plugin against no plugin at all
I built a small commit-message plugin and ran claude plugin eval on it. The no-plugin baseline showed what the plugin actually adds, and the one red case turned out to be the judge's mistake.
23 Oct 2026
·
6 min read
·82 views
Blog search with one Postgres trigger: tsvector, Anorm and snippets that never trust HTML
How this blog's search works end to end: a weighted tsvector side table kept by a trigger, a thin Anorm query with websearch_to_tsquery and ts_rank, and highlighted snippets split on control characters instead of rendered HTML.
22 Oct 2026
·
5 min read
·52 views
Scala and the JVM
·
Part 20
unapply decides what catch catches: Scala extractors in match and try/catch
A hand-written unapply turns a catch block into a policy: pass your own errors through, wrap recoverable JVM exceptions, and let fatal ones propagate. A runnable Scala 2.13 demo shows exactly when the matcher calls it.
19 Oct 2026
·
5 min read
·50 views
Cats Core
·
Part 8
Cats Core: ValidatedNec and the Real Difference Between Applicative and Monad
I wrote a tiny Todo validator with cats' ValidatedNec and it made one rule click: you can only accumulate errors when the steps don't depend on each other. That's the whole difference between an Applicative and a Monad.
18 Oct 2026
·
5 min read
·87 views
Working with Claude Code
Mapping Anthropic's code review stack onto my one-person repo
Anthropic's Claude Code team review agent-written code in layers. I mapped their stack onto CV Next: an independent Claude review on every PR, a verdict tied to a commit, and a /ship skill that waits for it. Plus what I left out, and what broke on the first run.
18 Oct 2026
·
7 min read
·123 views
Working with Claude Code
Opus planned it, Sonnet built it, and the plan had the bugs
I ran a real feature through Claude Code's opusplan setting, then had Opus deep-review what Sonnet built. The two worst findings were lines in the plan I had approved.
18 Oct 2026
·
6 min read
·228 views