A few weeks ago I was fortunate to be at JavaZone for the fourth year in a row. JavaZone is one of my favorite conferences; a large crowd, excellent speakers and very well organised. It is a great kick-off to the Fall/Autumn conference season!
On Tuesday, I travelled to Oslo. In the evening it was time for the speaker tour, where the JavaZone crew showed us around the venue, and answered any questions speakers might have. Next it was time for the speaker dinner, a great opportunity to meet fellow speakers. I had dinner with Adele Carpenter, Piotr Przybył, Iulia Feroli, met up with James Ward, Brian Vermeer, Andres Almiray and others.
Andres Almiray, Brian Vermeer, Marit van Dijk and James Ward at the JavaZone 2026 speaker dinner
Day 1
On wednesday I got up early to make it on time to see my colleague Wout Werkman speak:
Async is the New `goto`- Rethinking Structured Concurrency – Wout Werkman
Wout talked to us about Structured Concurrency, using a custom plugin he created to visualise the call tree in IntelliJ IDEA. He also did a shoutout to the talk “Learning modern Java the playful way” by Piotr and myself, which was very nice.
We also managed to get a picture of all JetBrains colleagues present at JavaZone.
JetBrains’ Marit van Dijk, Wout Werkman, Nikita Skvortsov and Frederik Pietzko at JavaZone
Personal live demo of IntelliJ IDEA features for Gerrit Grunwald by Marit van Dijk
At the end of the day, I went to see Piotr speak about how Elasticsearch is already using Vector API; an interesting explanation of this JEP and a concrete example of what it offers. He also made a reference to us speaking together, so it was nice to start and end the day being called out from the stage in the same room.
SIMD for Java- how Elasticsearch already benefits from the Panama Vector API – Piotr Przybył
Day 2
On Thursday morning, it was time for Andres Almiray and myself to speak. When the front row has people like Gunnar Morling and Rafael Winterhalter, that is slightly intimidating… Gunnar was kind enough to tell us he actually learned something new from our talk. (Thank you!)
Marit van Dijk and Andres Almiray speaking at Javazone 2026 (Picture by Ard Jongsma)
Also present were my colleagues Nikita Skvortsov & Wout Werkman. Nikita is the team lead for build tools support in IntelliJ IDEA, who build some of the nice things I get to talk about. Our talk gave him some ideas for things that could be improved even further (stay tuned!).
Getting more out of Maven – Marit van Dijk and Andres Almiray
Piotr took the opportunity to take a selfie with his memes, leading to this Piotr-ception.
Piotr got memed!
Later, I went to see some excellent talks by friends. First, Adele Carpenter is an amazing speaker and I love her take on Java:
10 Things I Hate About Java – Adele Carpenter
Next, Iulia Feroli is a very inspiring presence in the physical AI space. If you enjoy watching her and her robots, you should go subscribe to her channel Back to Engineering.
How I built my own intelligent Robot Arm from Scratch – Iulia Feroli
Aside from attending some talks, I managed to catch up with lots of people in the hallway track.
Finally, it was time to say goodbye to JavaZone. Hopefully, I will be able to come back next year!
Iulia Feroli, Marit van Dijk, Adele Carpenter and Piotr Przybył saying goodbye to JavaZone (Picture by Piotr Przybył)
Last month I had the honor of attending JCrete; “the hottest unconference on the planet!” I had heard many great things, and it certainly lived up to its reputation.
Unconference
JCrete is an unconference; the attendees create the program. Every day starts with a “marketplace”, where anyone can suggest a session. At JCrete, attendees then vote on the proposals and the most popular ones are scheduled in the available time slots and spaces. A session can be a presentation, but more often are discussions where people can share their thoughts and experience, and help others. It is much more interactive than a regular conference. Think of it as one big hallway track!
There were lots of interesting sessions on Java, AI, and other topics. You can find notes on some of the sessions here, but you really have to experience it for yourself.
Java: Virtual Threads and Scoped Values
Some of my favorite sessions were the ones by José Paumard on Virtual Threads and Scoped Values. In this smaller setting, there was room for lots of discussions and sharing. At some point, I even managed to give José some tips for IntelliJ IDEA which he immediately applied. Did you know you can use the live templates iop and ior for IO.println() and IO.readln()?
Live templates for IO.println() and IO.readln()
Impromptu presentation
Several people in the session asked for more tips, and there happened to be some time left at the end of the session. The only available laptop was José’s machine: a Windows machine with a french keyboard! This was certainly an interesting challenge in doing my demo. With the help of José , I managed to show a few tips…
This prompted me to suggest a session on IntelliJ IDEA Tips & Tricks for the next day. Here I managed to show all attendees something about IntelliJ IDEA they didn’t know yet, even my colleague Anton Arhipov (who has been using IntelliJ IDEA for much longer than I have).
When I told Pasha Finkelshteyn about this later, he asked me what it was because surely it would be something he didn’t know either. It turned out to be something he had been looking for recently!
The tip in question? You might know that you can use F2 to navigate to the next problem in a file (or Shift +F2 to go to the previous problem). By default, this cycles through problems by severity; errors first, warnings next, etc. To change this, hover over the Inspection Widget at the top right of the editor, click More (the three dots), click ‘Next Error’ Action (F2) Goes Through and select All Problems
IntelliJ IDEA – Change the order for Next Error action via the Inspection Widget
Alternatively, you can use Search Everywhere (press Shift twice) to look for the setting The ‘Next Error’ action goes through in Settings | Editor | Code Editing and select All Problems there.
IntelliJ IDEA – Change the order for Next Error action in Settings | Editor | Code Editing
JCrete is held on the beautiful island of Crete, which means lots of sun and the opportunity to visit lots of beaches. Fortunately, I also had the opportunity to join a trip to the botanical gardens with Gunnar Morling and his family; the gardens were beautiful, and shade and breeze were very welcome.
The last conference of the “Spring” 2026 season for me was Devoxx Poland. This was my third time speaking at this conference, and my second trip to Kraków this year.
The evening before the conference I went to a Polish JUG meetup, to meet up with friends Adrian Nowak, Ida and others. Adrian gave me a GeeCON shirt and sticker. It was also nice to see ex-colleague Pasha Finkelstein, who was speaking at the meetup.
Day 1
Since I was giving two talks, I spent some time preparing for them. Especially as I would be giving the Maven talk by myself this time, as Andres unfortunately was not able to make it. And also it had been a while since I last gave my Reading Code talk.
During the day, I did go meet my colleagues at the booth; conferences are always a good place to see and meet colleagues. JetBrains has offices all over Europe (including Poland) and several other countries.
Later in the morning it was time for Reading Code. When I first submitted this talk to Devoxx Poland two years ago, a friend on the Program Committee sent me a nice message about how much they liked the abstract. Unfortunately, it was not selected that time (but another talk was). So it was nice to be able to finally deliver this talk here.
In the evening it was time for the speaker dinner. It was a nice walk to get there, in the company of Anita Przybył and Katarzyna Leszczyńska-Bohdan. The dinner itself was great, with some delicious pierogi and other food. And of course great company.
On day 3 I attended a talk by Simone de Gijt. I love her talks; the topics are very interesting and her stage presence is great. Imagine my surprise when she mentioned me in her talk!
At the end of the conference I also managed to catch a talk about Dark Patterns by Sergès Goma. We had been at the same conference before, but had not yet properly met, so we finally got to fix that.
After the talks, a few of us had some conversations in the hallway.
Sergès Goma, Venkat Subramaniam, Marit van Dijk, Simon Maple, Balkrishna Rawool and Simone de Gijt.
In the end, being part of the community and meeting people in real life are the highlights of any conference.
People at Devoxx Poland
Going home
After the conference, Simone and I took the bus back to the airport. We spent some time in the lounge, running into other speakers like Abdel Sghiouar, Simon Maple and Simon Brown.
Overall, Devoxx Poland was a great conference to close out the “spring” season; I hope to be back next year!
In the third episode of IntelliJ IDEA Tech Talks, I talk to Ronald Dehuysser – creator of JobRunr, about the ClawRunr project. Ronald shows us how to use ClawRunr as a personal AI assistant and shares stories of how he uses it himself.
Description
What if you had a personal assistant who could check your emails, schedule tasks, prepare a legal dossier, and send a thank-you note, all from your phone while you’re on a ski slope?
ClawRunr is an open-source Java-based personal assistant that combines AI with background job scheduling. You chat with it in natural language, it figures out what to do, and Spring AI and JobRunr handle the rest.
Ronald Dehuysser, the creator of JobRunr, walks us through setting up ClawRunr, from choosing your LLM provider and connecting MCP servers to scheduling recurring tasks using live demos. He also shares what he learned taking it from a vibe-coded idea to an extensible demo app: why solid architecture matters for agent-style development, and why handing off as much as possible to the AI beats coding everything yourself.
June started off with not one, but two Java conferences: jPrime in Sofia, Bulgaria, and JSpring in Utrecht, the Netherlands.
When travelling to jPrime from Amsterdam, I already ran into two fellow Dutch speakers Hinse ter Schuur and Willem Jan Glerum at Schiphol airport. We were all on the same flight.
Travelling to jPrime
Arriving in Sofia
Upon arrival in Sofia, we met up with Piotr Przybył in the arrivals hall, as he had landed just before us. We then proceeded to arrivals to meet up with Ivan St. Ivanov, one of the jPrime organisers, who drove us to our hotel.
At the hotel, Piotr and I had some lunch before preparing for our talk (as it had been a few weeks since we last presented it at GeeCON).
jPrime speaker dinner
We then walked to the speaker dinner where we met up with Mitya, other organisers and several other speakers including François Martin, Johannes Bechberger, Arnaud Jean. Also present was my colleague Andrei Kogun, who was attending the conference. It is always nice to see him in person, as we work together a lot but he is located in a different country.
Speaking at jPrime
Our talk Learning modern Java the playful way was scheduled right after the opening. It was really nice to speak in the big room in front of about 800 people (probably our largest audience for this talk so far!).
Marit and Piotr at jPrimeSpeaking at jPrimeMitya announcing us at jPrime.
Our talk was well received. Thanks to everyone who came up afterwards to talk to us! Meeting people is one of my favorite parts of conferences.
Great start to jPrime
Unfortunately, we didn’t get to stay long and we had to head to the airport not long after our talk.
Thanks to the jPrime team for having us and taking such good care of speakers!
On to the next one!
From Sofia, I travelled back to the Netherlands, to speak at JSpring the next day. While I had planned to go to the speaker dinner that evening, it was too tempting to go straight home as I live close to the airport.
Speaking at JSpring
JSpring is one of my local conferences, organised by NLJUG. This was my third time speaking there, and I have attended several years prior to that. The lineup this year was stellar as always!
Since the conference was in a cinema, they had posters advertising the speakers. It was slightly intimidating to see my face up there, but also very nice…
My session Be more productive with IntelliJ IDEA was in the afternoon, so I had plenty of time to prepare. Even though the outline of this session is always similar, I like to include the latest features like command completion and upcoming features like logpoints (which is included in IntelliJ IDEA 2026.2).
In the second episode of IntelliJ IDEA Tech Talks, I talk to James Ward about SkillsJars, a way to manage skill files like dependencies.
James is a wonderful guest, with lots if interesting things to say about programming and AI. I hope you like this episode!
Description
Skills are a great way to bring specific knowledge into your AI, but how do you manage your skill.md files? Wouldn’t it be nice if we could manage them like dependencies, so we could version them, scan for security problems, etcetera. James Ward created SkillsJars to do just that! In this episode he walks us through skills, managing skills as dependencies with SkillsJars, how to consume skills in coding assistant and custom agents, and how to publish skills either through the skillsjars.com website or using Maven / Gradle. Watch this episode to learn how to manage your skills.
This year I had the opportunity to speak at JNation for the first time. It was a great conference; great speakers, nice people and a very responsive audience!
Getting there
JNation is held in Coimbra, Portugal. It takes some time to get there, but it is well worth it. The conference arranges for shuttles from Porto and Lisbon to Coimbra; I opted for Porto as it was a shorter flight and drive. At the Porto airport, I ran into Simon Schrottner, who I had met at Devoxx Morocco last year. It turned out we were on the same shuttle bus. We also picked up Martijn Verburg and his cousin Bella from the train station on our way to Coimbra. We had some interesting conversations on the way, which we continued over lunch once we made it to the hotel. While we were there, several other speakers also arrived.
Speaker dinner
The conference organised a speaker dinner the evening before. Andres Almiray, Patrick Baumgartner, Simon and I decided to walk there. This was a bit of an adventure, as the hotel we were staying at was next to a highway which we had to cross…
The speaker dinner is a good opportunity to see the other speakers. Fortunately, my colleague Anton Arhipov was also speaking; it is always nice to see him. And I ran into Sam Aaron, who I hadn’t seen in a while. To top it off, I had the opportunity to hang out with my friend Ewa.
Josh Long told me that he had some feedback on IntelliJ IDEA, and from my side I wanted to show him some new features we had been working on. After we got back from the dinner, we spent some time in the hotel lobby hunched over a laptop.
Conference day
The conference started with some live coded music by Sam Aaron, the creator of Sonic Pi.
The conference was officially opened by Roberto Cortez and team, followed by a keynote by Martijn. After that I had a little time to prepare for my talk, like finding the room where I would be speaking…
Speaking about IntelliJ IDEA
My talk was Be more productive with IntelliJ IDEA, where I live demo features in IntelliJ IDEA. Some features have been there for ages, but I also like to include new features that were added recently, like command completion, and even features that we are still working on for the upcoming release, like logpoints. The room was full, with some people even standing in the back, and the audience was lovely!
After my talk, I had some time to explore the venue some more and talk to people. Some of my friends were staffing a booth with their company, so I went to find them. Also, I spent some time in the speaker room, which was nice and cool. This is a good place to get some work done, or talk to other speakers. Walking around the venue is also a good way to meet people, and get feedback either on our products or my talk, or hear what people are working on.
There were plenty of food and snacks, including some delicious pastéis de nata as well as ice cream, which was very welcome in the hot weather! To get some of the snacks, you needed tokens which you could get by speaking to sponsors at the booths. (Thanks Michał for some extra tokens.)
Pastéis de nata
Livestream with Josh Long
Josh had invited me to come on his podcast, Coffee + Software. We had a lovely on-air conversation, which was also joined by our friend Daniel Garnier-Moiroux in the chat.
Interview with Andres Almiray
Andres Almiray was at JNation not as a speaker, but as an interviewer. He set up interviews with the speakers in the courtyard of the venue. Among other things, we spoke about some IntelliJ IDEA features, including the upcoming logpoints feature as an entry point to the debugger. Logpoints allow you to add logging to your application running in debug more, without having to change the code and redeploy your application. This will make it easier to start your investigation when debugging issues. It is built on top of the debugger, so you can expand your investigation with additional debugger features as needed.
The conference ended with an after party, with more music by Sam, and drinks with friends in the sun. From the party, we walked to a restaurant for another dinner arranged by the organisers. The food here was great, as was the company. This time I managed to get some pictures with Sam.
Marit van Dijk and Sam Aaron at JNation
Conclusion
Even though it is a little hard to get to, I really enjoyed the conference. The lineup was great, the organisers take good care of the speakers, and I would highly recommend speaking at or attending this conference in the future!
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 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.
In the first episode of IntelliJ IDEA Tech Talks, I talk to Moritz Halbritter from the Spring team about JSpecify.
We talk about what JSpecify is, and Moritz shows us how to add JSpecify to a codebase. We had a lot of fun recording this episode; I hope you will enjoy the recording!
Description
Null pointer exceptions have been called the billion dollar mistake. They are a common source of bugs and frustration. JSpecify aims to fix that, and with Spring Boot 4 and Spring Framework 7 now fully on board, it’s time to take a closer look. In this episode, Moritz Halbritter from the Spring team walks us through what this means for your Spring projects and how to adopt JSpecify in practice. Using a live demo, we migrate an existing Spring Boot application, tackling problems along the way. See how to use JSpecify for the contract, IntelliJ IDEA for the developer experience, Spring for the framework, and NullAway for the build guarantee. Whether you’re maintaining a large codebase or publishing a library, this episode gives you the tools to start eliminating null pointer exceptions in your applications.
Used to determine whether a user is included in an A / B or Multivariate test.
18 months
_ga
ID used to identify users
2 years
_gali
Used by Google Analytics to determine which links on a page are being clicked
30 seconds
_ga_
ID used to identify users
2 years
_gid
ID used to identify users for 24 hours after last activity
24 hours
_gat
Used to monitor number of Google Analytics server requests when using Google Tag Manager
1 minute
_gac_
Contains information related to marketing campaigns of the user. These are shared with Google AdWords / Google Ads when the Google Ads and Google Analytics accounts are linked together.
90 days
__utma
ID used to identify users and sessions
2 years after last activity
__utmt
Used to monitor number of Google Analytics server requests
10 minutes
__utmb
Used to distinguish new sessions and visits. This cookie is set when the GA.js javascript library is loaded and there is no existing __utmb cookie. The cookie is updated every time data is sent to the Google Analytics server.
30 minutes after last activity
__utmc
Used only with old Urchin versions of Google Analytics and not with GA.js. Was used to distinguish between new sessions and visits at the end of a session.
End of session (browser)
__utmz
Contains information about the traffic source or campaign that directed user to the website. The cookie is set when the GA.js javascript is loaded and updated when data is sent to the Google Anaytics server
6 months after last activity
__utmv
Contains custom information set by the web developer via the _setCustomVar method in Google Analytics. This cookie is updated every time new data is sent to the Google Analytics server.