Language selector

My talks

I started giving public and mostly IT-related talks in 2016. Until now (Summer 2023) I delivered over 120 talks in various formats, from Pecha Kucha (20 slides x 20 seconds each) to Deep Dive (2,5h long). I spoke in Poland and Europe, and in Africa, both at small community events, both in huge cinema rooms. Many of my talks (but not all of them) have both English and Polish versions. Some have been given many times, some just once, some were given awards, and all were made with passion.

I’ve attended as a speaker several conferences and Java User Groups, including: 4Developers Festival, BoilingFrogs, ChamberConf, CodeCamp Romania, CodeMotion Milan, CodeMotion Spain, CoffeeJUG Lviv, Confitura, Devoxx Belgium, Devoxx France, Devoxx Morocco, Devoxx Poland, Devoxx UK, Devoxx Ukraine, GDG DevFest Toulouse, GDG DevFest Wroclaw, GeeCON Poland, GeeCON Prague, GreenField Conf, Java Developer Days, JavaDays Lviv, JAVIPS, Jfokus, jLove, JNation, JPoint, JSpring, ScalaLove, SegFault (& CoreDump), SpreadIT, VoxxedDays Luxembourg, VoxxedDays Romania, VoxxedDays Zurich, ChicagoJUG, SilesiaJUG, TricityJUG, VirtualJUG, WarsawJUG, WroclawJUG SzczecinJUG, Zielona Góra JUG, and others.

Java™ 21 is real now. And so are virtual threads. Everyone got excited about them, yet you prefer to keep your Java 8 job forever, and you already have a nice plan to “accidentally” derail the migration to 21 by using virtual threads in a very, very unfortunate way. What a pity… So you decided to come for this talk to look for some inspiration ;-) Okay, please join us to learn how NOT to use virtual threads, and see the potential performance pitfalls of using them the wrong way.
Spoiler alert: this is a “from zero to hero” session. Assuming you’re familiar with programming (hopefully in Java), after this session you should be able to explain why Testcontainers are needed, simple and powerful 😉 The pyramids in Egypt were built in ancient times. We still admire them today, appreciating the craftsmanship and hard work of their builders. However, do we build houses from giant stone blocks today? Not likely, current times bring other needs and offer other technologies.
Hey, there are two major Java versions released every year! We don’t have to wait 3 years or so for new features anymore. Isn’t that cool? 😉 Java was supposed “to be slow”. However, Java turns out to evolve so fast, that next releases aren’t just version bumps, but might significantly change the rules of the game. That’s a good reason to check out what’s new in Java. To name a few changes:
Hey, there are two major Java versions released every year! We don’t have to wait 3 years or so for new features anymore. Isn’t that cool? 😉 Java was supposed “to be slow”. However, Java turns out to evolve so fast, that next releases aren’t just version bumps, but might significantly change the rules of the game. That’s a good reason to check out what’s new in Java. To name a few changes:
The pyramids in Egypt were built in ancient times. We still admire them today, appreciating the craftsmanship and hard work of their builders. However, do we build houses from giant stone blocks today? Not likely, current times bring other needs and offer other technologies. Pyramids of testing were also built some time ago. We admire legacy projects with a rich set of tests, but do we create projects today the same way we did 10-15-20 years ago?
When I have time to talk about Java for more than one hour, it’s a Deep Dive (I call it “What’s new and noteworthy?") When I have less than forty minutes, we can barely touch the surface, hence it’s called then “Surfing Modern Java”. Anything in between, like regular-size talk, is more than surfing, but less than deep dive, hence “Sailing Modern Java”. For such a talk I usually cover one or two latest releases, sometimes mentioning what’s ahead of us, trying to sneak in as many code demos as I can.
Hey, there are two major Java versions released every year! We don’t have to wait 3 years or so for new features anymore. Isn’t that cool? 😉 Java was supposed “to be slow”. However, Java turns out to evolve so fast, that next releases aren’t just version bumps, but might significantly change the rules of the game. That’s a good reason to check out what’s new in Java. To name a few changes:
“You can never understand one language until you understand at least two.” – Geoffrey Willans For years, I’ve been developing mostly in JVM languages. Sometimes in other C-derived languages, which was both cool and easy. A few months ago (due to a career shift) I had to learn Go rapidly. While technically Go has keywords looking similar to C, many things are simply different and even unheard of in C-based OOP languages.
Modern Java is really awesome when it comes to “Hello, World!” demos. It’s also cool for a sophisticated systems and algorithms, provided their authors write code which obeys a few fairly simple contracts and avoids obvious traps. There are a few mantras regarding recent features of modern Java, such as: records can replace JavaBeans everywhere you never need to write hashCode() for records pattern matching with instanceof is the best tool for equals() just ignore --illegal-access and set it to permit synchronize (new Long(42)) is the best for monitoring and so on.
Another (half a) year has passed, another major Java™ version has been released. Java was supposed “to be slow”. However, Java turns out to evolve so fast, that next releases aren’t just version bumps, but might significantly change the rules of the game. That’s a good reason to check out what’s new in Java. We’re going to cover: Records, where and how to use them, apart from DTO/VO Pattern matching with instanceof A.

Language selector