GeeCON 2026 — a recap | blog.allegro.tech
GeeCON 2026 — a recap
The 2026 edition of GeeCON didn’t look promising at first. I arrived in Kraków expecting<br>the same slow decline I’d been hearing about — no crowds, only five sponsor booths, and talks<br>from sponsors about their great products. Last year I heard the conference business was slowly<br>dying, and I kinda agreed.
But then, I went to the talks. And everything changed.
GeeCON is one of the largest Java and JVM-focused conferences in Central Europe, held annually in<br>Kraków, Poland. This year’s edition took place on May 14–15 and brought together developers from<br>across the continent for two days of talks and hallway conversations. Here is my personal recap —<br>opinionated, as always.
Day 1 #
Become a rockstar developer — Dylan Beattie #
The conference opened not with a keynote from the biggest sponsor, but with a show. A reminder<br>that being an engineer is cool and fun. That we can go deep down the rabbit hole and create<br>something spectacular. Maybe not useful. But fun.<br>Dylan told us the story of how a very dangerous combination of internet, boredom, and alcohol led<br>to creating Rockstar: a programming language where the code<br>reads like rock ballads. He gave us an unforgettable rock performance of FizzBuzz. And we all<br>became certified rockstar developers.
“Baby, baby, baby, ohhh EOF” — where baby and ohh are closing brackets of code blocks in<br>this language. You can’t make this up.
An opinionated guide to bulletproof APIs with Java — Rustam Mehmandarov #
I’ve always said that conferences are for the “lowest common denominator” of software engineers.<br>This means a lot of beginner-level talks about best practices. This was exactly that, but done<br>well and concisely. The talk described principles for building production-grade APIs.<br>The companion repo is worth bookmarking.<br>Even though I’ve been in this business for 10 years, I learned something. Those error JSON<br>responses we see in Spring? They’re actually based on RFC 9457.<br>And versioning doesn’t need to mean a new URL — it might just mean a header change.
Agents with Seatbelts: Practical Ways to Keep AI Code Gen Under Control — Jonathan Vila López #
Jonathan (@vilojona, author of the<br>foojay.io newsletter) opened with a bold thesis: AI slows developers down<br>if not done in a smart way.<br>He showed us benchmarks and what accuracy metrics actually mean in practice. The key insights:
Principle<br>What it means
Decompose to multiple agents<br>If accuracy is 85%, errors accumulate in a single context. Split tasks across agents — don’t share context between them.
Right model for the task<br>Code generation has different top models than deep analysis. Don’t use an agent when a simple tool is the answer.
Think about cost<br>LLMs are subsidized now, but won’t be forever. Free models (GLM-5, Kimi K2 Thinking) perform surprisingly well on your own infra.
Use negative constraints<br>Don’t ask AI for something you don’t know yourself.
Skills over MCP<br>MCP = black box CVE (recent ones: Anthropic MCP or ContextCrush), context pollution, MCP sprawl. If you still use MCP — sandbox it.
Guardrail everything<br>Contracts, hook reviews, human in the loop.
His formula: Success = AI × (you + classic way) , where classic way = team, SDLC, tools,<br>specs. “AI gives you time, you give the confidence.”
Remember waterfall? With agents it’s specification-driven development. Sounds familiar? 🤔
Concurrency testing — Adam Warski #
A quick look at testing libraries:<br>Fray (Java) and<br>Lincheck (Kotlin).
Fray finds interleavings and takes control over locking/releasing instead of simply running a loop 10k times and hoping the race condition happens.<br>But it has gaps, like missing support for volatile primitives. Lincheck is older and may not be as robust, but it has nice logging of the interleavings.
Scotty, I need warp speed — Gerrit Grunwald #
Spinning up new instances at scale is fun, but what if your peaks happen so suddenly that you<br>need to react now? Simple JIT isn’t enough. Maybe you’re on a stock exchange and want to be first when the market opens?<br>Or maybe you are running a marketplace and decide to run promotional campaign with a smartphone for 1 PLN?<br>Those first seconds really matter.
Gerrit gave us a deep dive into JVM startup and the technologies that shorten the time to<br>hyperspeed performance:
Technology<br>What it does
JVM classloaders<br>Bootstrap, platform, system — understanding what can actually be optimized
JIT (C1/C2 compilers)<br>Baseline compilation vs. peak performance compilation
CDS / AppCDS<br>Class Data Sharing — pre-load class metadata
Leyden<br>Ahead-of-time condensation of JVM state
Native Image (AoT)<br>Full ahead-of-time compilation via GraalVM
CRaC<br>Checkpoint/restore — snapshot a warmed-up JVM
Ready Now<br>Persistent compiler optimizations with profiling data
Cloud Native Compiler<br>Central code cache with thousands of Linux process JIT compilers
And remember, you can always customize: create your own runtime with jlink.
Thread...