GeeCON 2026: Kraków and the Java community

Just over a month ago, I had the pleasure of speaking at GeeCON 2026 in Kraków, Poland. GeeCON is one of my favourite Java conferences, and this year they invited me to join the Program Committee this year along with Marcin Grzejszczak.

Arriving in Kraków

Conferences are a great opportunity to see friends who live abroad. Since Kuba Marchwicki would land in Kraków shortly after me, we agreed to meet up at the airport. He had suggested I should have had a “Welcome to GeeCON” sign ready for him, and fortunately I was able to improvise one on the spot. 

After checking into our respective hotels, we went for lunch at a ramen place which was delicious! Over the meal we had a very interesting conversation about how Kuba manages his “interns”, as he calls his AI agents. It’s interesting to hear how different people are managing their software development process these days.

Conference Day 1

Opening and keynote

The conference was opened by Adam Dudczak, followed by the opening keynote, How To Be a Rockstar Developer by Dylan Beattie, who delivered the entire keynote barefoot. As he described on his blog, a taxi had run over his foot on the way to the venue, and he was not able to put on his boots… Despite the injury, it was an excellent keynote, and he even managed to get the Polish audience to sing along at one point. 

Meeting people

One of the best things about conferences is meeting people. It was nice to finally meet Marcin Grzejszczak in person; I wasn’t sure we had actually met face to face before, despite working together on the programme committee. I also got to meet Tom Akehurst, the creator of WireMock! It was also lovely to see former colleague Ida again, as well as many others… Conversations and connections are what make in person conferences so valuable.

Talks and panels

Generally I prioritize the hallway track over attending talks. One talk I managed to attend was Concurrency Testing on the JVM by Adam Warski. He covered Lincheck and Fray; two tools that instrument bytecode to give you more confidence in your concurrent code. It was really interesting, and I shared with my colleagues who work on Lincheck that he mentioned their tool, which they appreciated!

In the afternoon, I had the honour of moderating the Java panel, where I got to ask Johannes Bechberger, Steve Poole, Piotr Przybył and Gerrit Grunwald what excites them most about Java in 2026. It was a great discussion, and well received.

Unfortunately, the panel was at the same time as Arjen Poutsma‘s talk Teaching an Old Pet Clinic New Tricks: Introducing Agents into Existing Applications. Arjen is a Spring legend (and a fellow Dutchie), so it was wonderful to see him at GeeCON, even if I had to miss his talk. I’ll have to catch up with the recording!

Speaker dinner

In the evening, Piotr and I met up beforehand and walked into town together before joining Kuba for the speaker dinner. We met a bunch of other speakers including Emanuel, one of Marcin’s mentees. It turned out Dylan was not done yet with his back luck; he managed to break some wine glasses at dinner… Other than that it was a wonderful evening with great food, excellent company and interesting conversations. 

Conference Day 2

On day 2 it was time for our talk, Learning modern Java the playful way. This talk is one of my favorites. We usually try to localize it a little for the country where we are presenting. When speaking in Poland, we have a few extra Polish things that Piotr likes to add (see if you can spot them!). Even though I had updated my Polish progress bar, I realised midway during the talk that I had installed it on a different version of IntelliJ IDEA, so it failed to make an appearance this time… 🤦‍♀️

This time, I managed to catch François Martin‘s talk 82 Bugs I Collected in a Year You Won’t Believe Made It to Production, which I liked a lot. I always appreciate good stories about software bugs, and was very amused to hear that François had been collecting them for a while. In fact, I think I might need to do the same…  🤔

When talking to François afterwards, he mentioned he would have loved to join a panel. He suggested that next time we ask speakers before the conference who would be interested to join a panel on a specific topic. Since it turned out that we were short a panelist for the upcoming panel on AI coding, François was able to join that session.

Dinners, discussions and a silly idea

The GeeCON crew take good care of the speakers, so there was another dinner on the second day. This was another chance to hang out with folks, like Adrian, Adam, Łukasz, Rustam, Alex, and others. Based on Dylan’s keynote, Kuba and I had a silly idea; over dinner, several people ended up giving us some excellent input for this topic. (No spoilers yet, as I’m not sure how far we will take this idea…) 

Exploring Kraków

Over the weekend, I had some time to explore in and around the beautiful city of Kraków. 

On Saturday, Spencer Gibb, Tom Akehurst, Jonathan Vila and I booked a guided excursion to the Wieliczka Salt Mine. While waiting for the bus to salt mine at the bus station, we saw a Kevlin Henney on the screen. Which was extra funny considering François’ talk about bugs, so I made sure to send him a picture.

The salt mine was a very impressive place to visit. My favorite were the chandeliers made entirely out of salt crystals. It did involve quite a bit of walking, so we were pretty tired by the end. 

Spencer Gibb, Tom Akehurst, Jonathan Vila, Marit van Dijk and Spencer Gibb at Wieliczka Salt Mine.

For dinner that evening, Spencer and I had pierogi at a restaurant recommended by both a friend of mine and his hotel, which was an excellent tip. 🥟

Pierogi

On Sunday, I visited Wawel Castle and had more pierogi for lunch, before heading home.

Thank you!

Many thanks to Adam Dudczak, Adrian Nowak and the whole team of organisers, volunteers, sponsors, speakers and attendees for putting on another wonderful edition of GeeCON. And a special thank you to Adam and Adrian for having me on the Programme Committee; it was a privilege. It was great to see friends old and new, and I’m already looking forward to the next one!

In the mean time, have a look at the videos and photos from this year.

Updating a vibe-coded plugin: The Polish progress bar

Polish progress bar

Last year, I vibecoded a plugin as a joke for a talk at Devoxx Poland. We have also used the same progress bar at other conferences in Poland since…

As we were speaking in Poland again at GeeCON, I wanted to reinstall the plugin. 

Unfortunately it turns out that the original project no longer builds. This might be because the version of Gradle it uses is too old (7.x instead of the current v9), because of changes in the IntelliJ platform, or both.

Fortunately, I could ask my colleague Jakub Chrzanowski for help.

Restart from scratch

As it turns out, it was easier to start a project from scratch with the help of a new template.

There are currently 2 ways ways to start a new project:

  • From the Plugin generator website
  • From inside the IDE – This option is available if you have the Plugin Devkit installed in your IDE and will have the same result as creating a project from the website, as they share the same generator.
New project: polishprogressbar

Since I figured it might be easier to start from scratch, I had created a new project using the Plugin generator website. To update the project, we copied the `src` folder from the old project to the new project.

Building and running

The template project comes with several run configurations that you can use to build and verify your project: 

  • Run Plugin will run the plugin, opening a sandbox IDE where you can try your plugin.
  • Run Verifications which will run verifications on the previous, current and upcoming versions of our IDEs (currently: 2025.3, 2026.1 and 2026.2)
  • Run tests will run any tests. (I am ashamed to say this project has none. In my defense, this is a simple plugin and the correct behaviour can be easily verified by running it in the sandbox IDE).   
Run Configurations for plugins

Code cleanup

Jakub also helped me with cleaning up some code. In addition, I did some cleanup myself, partially based on results from the verifications. Restarting the project was a good opportunity to make it a little nicer, and actually care about the code quality a little. 

Installing the plugin

After building the plugin, I installed it on my IDE.

Polish progress bar in action

The plugin is not published to the JetBrains MarketPlace, as I am not sure another progress bar is really needed. You can find the code here.  If you want to build and install it yourself, you can find the instructions in the README.

Thanks to Jakub Chrzanowski for his help with the plugin and this blogpost. ❤️