Systems
Services that run. Distributed transactions, message brokers and the failure modes that come with them.
- log-guard A Spring Boot starter that masks personal data at the Logback event level, so console, file and OTLP exports all see the same redacted output. Published to Maven Central.
- tripsaga A distributed booking saga over RabbitMQ. Flight, hotel and payment services settle all-or-nothing, or every step that succeeded is compensated. Orchestration, not choreography — the orchestrator is a durable state machine.
- nhx-finance/nhx-kesy Backend for a Hedera-based stablecoin issuance platform. Secure, event-driven services with RBAC enforcing strict separation between issuing companies and platform administrators, plus KYC verification, minting endpoints and Flyway migrations.
- pitwall High-throughput F1 telemetry ingestion — Kafka as shock absorber, Protobuf on the wire, TimescaleDB hypertables, SSE to a live dashboard. Every claim is measured: 211k events/sec generated, and the naive path collapses 221x under the same load.
- devlens Pull request analysis for Spring codebases where structural claims are parsed, not inferred. JavaParser establishes ground truth at both commits and the model is told not to contradict it — pgvector for retrieval, MCP for tool access.
Agent skills
Capabilities for AI coding agents — packaged as plain SKILL.md folders that work in Claude Code, Codex and Kimi Code CLI.
- spring-boot-skills Fourteen agent skills that take a Spring Boot 4 backend from scaffold to ship — persistence, caching, messaging, security, observability, DevOps, RAG and MCP servers, plus Boot 2.x/3.x → 4.x migration. Works in Kimi Code CLI and Claude Code — installable as a plugin or by symlinking the skill folders.
- voiceover-video-skill An AI-agent skill that turns a voice note into a fully edited, animated Short — word-level transcription, a designed shot list, kinetic typography cut on the word, licensed photos and footage of whoever you mention, and a music bed that ducks under the voice. Transcription, rendering and audio all run locally.
Run the saga
TripSaga in miniature. The orchestrator sends a command, waits for the reply event, then advances. Break it at any step and watch every step that already succeeded get reversed — that is the whole point of a saga.
Teaching
Repositories built to be read. Each one is a runnable answer to a question I kept getting asked.
- java-for-everyone Learn Java from the ground up — a sequential curriculum covering syntax, OOP, collections, streams and lambdas, with guides, code samples and exercises.
- spring-rabbitmq Hands-on RabbitMQ with Spring Boot — nine lessons from your first message to publisher confirms, manual acks and dead-letter exchanges.
- kafka-springboot Learn Kafka by building a real pipeline — a 28-lesson course that streams live Wikimedia edits through a 3-broker KRaft cluster into a Spring Boot consumer. The first seven lessons need nothing but Kafka UI and the CLI.
-
exception-handling
Production-grade exception handling — from a custom
ErrorResponseDTO all the way to a fully RFC 9457ProblemDetailarchitecture. Every endpoint is runnable. - springai Spring AI notes and runnable samples against models deployed on Azure AI Foundry — prompts, structured output, embeddings and vector search.
Move a message
The broker from spring-rabbitmq, in miniature. Turn confirms off and the publisher stops learning whether the broker ever had the message. Crash the consumer and nothing is lost — it comes back, three times, and then the dead letter exchange takes it.
Throw something
The error handling from exception-handling, in miniature. The
request descends the layers, something throws, the frames unwind untouched — no
try/catch anywhere — and one @ControllerAdvice turns whatever arrived
into an RFC 9457 ProblemDetail. Change the exception and only the
response changes.