Wybór języka

Moje prezentacje

Pierwsze moje wystąpienia publiczne (zwykle w zakresie IT) zacząłem dawać w 2016r. Do tej pory (grudzień 2024) wygłosiłem ponad 160 wykładów w różnych formatach: od Pecha Kucha (20 slajdów po 20 sekund każdy) do Deep Dive (3 godz.) Przemawiałem w Polsce i w Europie (w USA oraz Afryce też), zarówno na małych wydarzeniach społecznościowych, jak i w ogromnych salach kinowych. Wiele z moich prezentacji (ale nie wszystkie) ma zarówno wersję polską, jak i angielską. Niektóre były wygłoszone wiele razy, niektóre tylko raz, niektóre zostały nagrodzone, ale wszystkie były tworzone z pasją.

Jako prelegent miałem przyjemność wystąpić na paru konferencjach i JUGach, m.in. 4Developers Festival, BoilingFrogs, ChamberConf, CodeCamp Romania, CodeMotion Milan, CodeMotion Spain, CoffeeJUG Lviv, Confitura, dev2next, Devoxx Belgium, Devoxx France, Devoxx Greece, Devoxx Morocco, Devoxx Poland, Devoxx UK, Devoxx Ukraine, GDG DevFest Toulouse, GDG DevFest Wroclaw, GeeCON Poland, GeeCON Prague, GreenField Conf, Infoshare, Java Developer Days, JavaDays Lviv, JavaLand, Javeloper, JAVIPS, JCon Europe, jLove, Jfokus, JNation, JPoint, jPrime, JSpring, ScalaLove, SegFault (& CoreDump), SpreadIT, VoxxedDays Luxembourg, VoxxedDays Romania, VoxxedDays Zurich, Ya!va conf, ChicagoJUG, SilesiaJUG, TrójmiastoJUG, UtrechJUG, VirtualJUG, WarszawaJUG, WroclawJUG, SzczecinJUG, Zielona Góra JUG i innych.

NoSQL for years was associated with JSON. The thing is: if you’re a hardcore backend Java developer, JSON, YAML, and other data formats might not feel native to you. Also, if you were ears-deep into debugging a query from Java code, sending the same request for visualization in Kibana using KQL wasn’t trivial. Meet ES|QL: Elasticsearch’s new query language, being at first glance a mixture of SQL and… Bash ;-) Works the same in Java and Kibana (and other programming languages too!) Additionally, by leveraging Project Valhalla and vector operations, ES|QL can achieve performance improvements over previous solutions. If you’re eager to investigate the options of the ES|QL and how it makes your life easier (while also giving a feel of being a SQL DB), this talk is for you.

Do tej pory prezentacja była wygłaszana wyłącznie po angielsku. Chętnych na wersję polską zapraszam do kontaktu ;-)

Streams were a very nice addition to Java 8, based on lambdas. They allow streamlined data processing without side effects, taking us gently towards functional style. With newer additions to Java, like records and pattern matching, they shine even more in data-driven flows. However, they don’t come without flaws. For starters, the only available extension point was collectors: if your needs for gathering data weren’t satisfied by the whole Collectors ZOO, you could always fall back to creating your own Collector. However, if map, filter or flatMap weren’t enough, you couldn’t add your own intermediate operation. Secondly, parallel streams were limited to ForkJoin pool, effectively rendering them unusable for scenarios involving any IO. Since Java 22, Stream Gatherers are our extension point for intermediate operations in streams. If you’d like to comprehend how they work, find nice use cases and hunt for more performance, this talk is for you.

Oto Ty: programist(k)a Javy z pewnym doświadczeniem, a wszyscy wokół zdają się mówić tylko o LLM, NLP, RAG i innych rzeczach związanych ze Sztuczną Inteligencją. Z jednej strony trochę się tego boisz, ponieważ wśród tych skrótów nie ma JPA, a mówią, że SI może zabrać Ci pracę już w przyszłym miesiącu. Z drugiej strony jesteś też zmęczony/a, ponieważ każde wiadomości, każda platforma społecznościowa bombarduje Cię wszystkimi odmianami SI tak bardzo, że boisz się otworzyć lodówkę (kto wie, może SI jest już między jogurtami?)

Do tej pory prezentacja była wygłaszana tylko po angielsku. Jeśli ktoś byłby chętny na wersję po polsku, to zapraszam do kontaktu ;-)

Integration tests are nice. We all know that and love using them, don’t we? It’s just using all those databases, message brokers and other things as real dependencies, only wrapped by Testcontainers, might result in a really heavy CI/CD pipeline and developers’ attitude to never run them locally, because they’re so slooooooooooow. What if I could show you a number of techniques, mindset changes and tricks to get your integration tests shortened from quarters to seconds? Would that be interesting for you, to benefit from the confidence integrations tests give you, before you’re able to brew a fresh coffee? It’s really not about re-inventing the wheel, but using it the smart way.

Wykład odbył się jak na razie tylko raz i tylko dla Silesia JUG w Katowicach, po angielsku. Chętnych na wersję polską zapraszam do kontaktu:

Let’s talk about Java 21 and have a sneak-peek into Java 22, and things like: 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:

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.

Minęło kolejne pół roku, pora na wdrożenie kolejnej wersji Javy™ na produkcji. Tym razem na pewno, bo to w końcu LTS. ;-)

Zdaniem wielu “Java jest wolna”. Okazuje się, że rozwój Javy jest tak “wolny”, że kolejne wydania nie są tylko podbiciem wersji, bo mogą znacząco zmieniać reguły gry. To dobry powód na kolejny deep dive w Javie. Będzie mowa o:

  • Virtual Threads,
  • Pattern Matching for switch,
  • Record Patterns,
  • Structured Concurrency,
  • String Templates,
  • korzystaniu z rzeczy natywnych,
  • co wyleciało i wyleci,
  • i innych.

Dużo rzeczy pokazane w kodzie, nie tylko na slajdach.

Minęło kolejne pół roku, pora na wdrożenie kolejnej wersji Javy™ na produkcji. Tym razem na pewno, bo to w końcu LTS. ;-)

Zdaniem wielu “Java jest wolna”. Okazuje się, że rozwój Javy jest tak “wolny”, że kolejne wydania nie są tylko podbiciem wersji, bo mogą znacząco zmieniać reguły gry. To dobry powód na kolejny deep dive w Javie. Będzie mowa o:

  • Pattern Matching for switch,
  • Record Patterns,
  • Virtual Threads,
  • korzystanie z rzeczy natywnych,
  • co wyleciało i wyleci,
  • i innych.

Dużo rzeczy pokazane w kodzie, nie tylko na slajdach.

Piramidy w Egipcie zostały zbudowane w starożytności. Do dziś je podziwiamy, doceniając rzemiosło i ciężką pracę ich budowniczych. Jednak czy budujemy dzisiaj domy z olbrzymich bloków kamieni? Niewątpliwie nie, obecne czasy przynoszą inne potrzeby i oferują inne technologie.

Piramidy testowania zostały również zbudowane jakiś czas temu. Podziwiamy projekty dziedzictwa z bogatym zestawem testów, ale czy tworzymy dzisiaj projekty w taki sam sposób jak 10-15-20 lat temu? Jeśli nie, dlaczego wciąż chcemy je testować w ten sam sposób?

Wybór języka