- Java 27 Makes G1 the Default Everywhere: How to Test Your Small Containers Before You Upgrade
When JDK 27 was released on 15 September 2026, most of the attention went to compact object headers and post-quantum TLS. JEP 523 received less coverage, partly because its description sounds like housekeeping: G1 becomes the default garbage collector in all environments.
For most applications, that changes nothing. For a specific class of container, it changes the collector silently, with no warning in the logs and no failure at startup.
- Build a GitHub Contribution City With Java and Quarkus
GitHub's contribution calendar gives you an already iconic overview of your activity over the year. Each day has a square, and its color changes with the contribution level. And of course, those days and contributions can also be arranged into buildings, with a week becoming a small part of a city and busier weeks adding height to the skyline.
I had some spare minutes and built Quarkus Contribution City around this idea, using Java and Quarkus to generate an SVG from GitHub's contribution data. The visual inspiration came from Pink Pixel's skyline, and you can see a version with my real data on my GitHub profile. A scheduled GitHub Action updates the image at night.
- Stop Writing Database Migration Scripts: Declarative Schema Sync for Java
If you have worked on a mature Java backend application, your src/main/resources/db/migration folder probably looks like a chaotic history ledger:
V1__init_schema.sql
V2__add_users_table.sql
...
V142__add_status_column.sql
V143__fix_status_typo.sql
V144__drop_old_status.sql
V145__add_missing_index.sql
- Searching Kafka Without an Index: Lessons From Building Message Search for Kafdrop
The message left the first service at 2:14 PM and never reached the last one. Between those facts: four pipeline stages, six topics, a pub/sub API moving every record. The engineer on call had Kafdrop open, the offsets looked fine, and nobody could say which stage had eaten the record.
That gap is why we built message search for Kafdrop at a hackathon. The setup was familiar from my day job: a platform moving data between pipeline stages over a pub/sub API, with no way to ask where a message went when something breaks. Kafdrop showed partitions and offsets. It couldn't search inside the messages.
- Part 4: Multi-Agent Orchestration — Pairing Goose With Quarkus Flow State Machines
The Core Problem
In Part 1, we built a Quarkus MCP tool server. In Part 2, we secured it with agentgateway. In Part 3, we added distributed tracing. The architecture handles single-request tool calls well — but enterprise processes are rarely single-step.
Consider what happens when a developer tells Goose: "Migrate the users table to add an email column, then deploy the updated service to production." This triggers a chain of operations: