Shipping an AI feature into my own product
·
Part 2
I red-teamed my own AI concierge
My site has an 'Ask Zakaria' AI box that answers untrusted recruiter input. So I spent an afternoon trying to break it — prompt leaks, tool-call injection, XSS, a cross-language jailbreak. Here's what held, and why the real defense isn't a clever prompt.
7 Jul 2026
·
5 min read
Cloning my own voice on a CPU in 20 minutes with Pocket TTS
Kyutai's Pocket TTS is a 100M-param, CPU-only text-to-speech model that does zero-shot voice cloning. Getting it to clone my voice took one afternoon — two gotchas worth writing down (uvx isolation and the mp4 trap), plus a Claude Code skill so I can trigger it mid-session.
7 Jul 2026
·
7 min read
Spring and Java mechanics
Aggregate Roots in Spring Data JDBC: The Delete-Boundary Rule
Spring Data JDBC takes DDD aggregates literally. Here's a one-question rule for drawing aggregate boundaries — and how to avoid N+1 once you have them, verified against the real generated SQL.
5 Jul 2026
·
6 min read
Shipping an AI feature into my own product
·
Part 1
Ask Zakaria: I bolted a grounded AI chat onto my CV site
Why my career site now answers questions out loud — the graceful-degradation bean, the SSE streaming, the atomic quota race, and the discoverability bug that had nothing to do with code.
2 Jul 2026
·
5 min read
Working with Claude Code
Loop Engineering with Claude Code: Four Rungs and Three Bites
An evening climbing the loop ladder in Claude Code, from a one-shot fix to an unattended cloud routine. The lessons had nothing to do with the code and everything to do with how a loop stops: unenforceable budgets, self-writing reward hacks, and why a trapped loop cannot free itself.
1 Jul 2026
·
7 min read
Running the box: Docker, Linux, the JVM
Systemctl isn't the thing that runs your services
systemctl doesn't start your services — it's a client that phones PID 1. A mental model of systemd built from the D-Bus call down to the kernel cgroups that make it all reliable.
1 Jul 2026
·
7 min read
Spring and Java mechanics
Spring Batch 6, Hands-On: A New Engine, a Real Operator, and Stops That Cross JVMs
A code-forward tour of Spring Batch 6 on Spring Boot 4 and Java 25 — the resourceless repository, the new ChunkOrientedStep engine, Spring Framework 7 retry, the CommandLineJobOperator, and how stop and recover actually work under the hood.
28 Jun 2026
·
9 min read
The Model Context Protocol, hands on
Building an MCP Tool with Spring Boot AI
How I turned Apache Kafka into a set of tools an AI client can call — using Spring AI's MCP server, a handful of @Tool methods, and one ugly-but-necessary servlet filter.
28 Jun 2026
·
5 min read
Spring and Java mechanics
Flyway on Spring Boot 4 and Java 25: a silent failure, and what it taught me about modular auto-config
Wiring Flyway into a Spring Boot 4.1 / Java 25 app with a Docker-Compose Postgres - including the Boot 4 auto-config modularization gotcha that makes a missing starter look exactly like a missing library.
28 Jun 2026
·
6 min read
Working with Claude Code
OKF: How to Wire Durable Knowledge Into an AI-Assisted Project
Open Knowledge Format (OKF) is a dead-simple convention for storing durable, executable knowledge alongside your code — no database, no network, just markdown files your AI agent can read and act on.
28 Jun 2026
·
6 min read