Piotr Przybyl
Senior Developer Advocate for Elastic, Software Gardener
Senior Developer Advocate for Elastic, Software Gardener
Wrocław, Poland
Actions
Notorious engineer at work and after hours, tracing meanders of the art of software engineering. Java Champion. Testcontainers Champion. Remote Software Gardener, mostly working in web-oriented Java gardens. Programming usually in Java (since 1.3), Scala and Go, but in other languages too. Fan of agility, seen mostly as choosing the right tools and approaches after asking the right questions. Developer, trainer and conference speaker. In his talks, Piotr covers not only hardcore Java but also software architecture, computer security, and soft-skills.
Notoryczny inżynier w pracy i poza nią, podążający za meandrami sztuki programowania. Java Champion. Testcontainers Champion. Zawodowo Remote Software Gardener, od kilkunastu lat wyrywający chwasty w ogródkach webowych. Zwykle przycinający Javę (od wersji 1.3), Scalę i Go do kształtów pożądanych przez klientów, ale i inne języki nie są mu obce. Miłośnik lekkości i zwinności, która powinna przejawiać się przede wszystkim w stosowaniu właściwych narzędzi. Programista, trener, prelegent. W swoich wystąpieniach mówi nie tylko o czystej Javie, ale także o architekturze oprogramowania, bezpieczeństwie komputerowym i umiejętnościach miękkich.
Area of Expertise
Topics
Sailing modern Java
Another (half a) year has passed, another major Java™ version is ready to deploy on production.
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'll cover
* Pattern Matching for switch
* Record Patterns
* Virtual Threads
* Simple Web Server
* what's gone and what will be gone
* and other stuff
Java Records for the Intrigued
Java 14 brought Records as one of the preview features, and in Java 16 they're a standard feature. For many it was reasonable to say "no more JavaBeans code generation" or "Lombok is dead". Is that the case? What one can do with records and what can't? What about reflection and serializations? You will learn in this session.
Hunting with Stream Gatherers
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 24, 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.
ES|QL FTW!
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.
Making your Testcontainers experience smoother
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.
Java™ 21. What's new and noteworthy
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:
* Pattern Matching for switch,
* Record Patterns,
* Virtual Threads,
* Calling native stuff,
* what’s gone and what will be gone,
* and other stuff.
If you find them interesting, let’s dive deep together into new interesting stuff.
Integration tests are needed and simple
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? If not, why do we still want to test them the same way?
Maybe the shape of today's projects' tests should no longer resemble a pyramid? Our needs are different, and the possibilities, thanks to the Testcontainers family of libraries, have also advanced a lot.
If you have a feeling that integration testing can bring a lot to your project, but somehow you haven't had the chance to get acquainted with Testcontainers so far, or you're afraid that it's just "magic for top developers", this lecture is for you.
We will quickly, easily and pleasantly rearrange the pyramids of our times ;-)
Go Go Java Developer
“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 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. Learning Go is a great journey and the best are these AH-HA moments, when doing things in Go I suddenly understood Java better.
Sure, during a single talk I won't teach you Go. Thing is: I don't event want to, as all I want is to show you some concepts in Go which can help you (just as they helped me) become better Java developer and understand why we need projects Valhalla and Panama. It's about leaving our comfort zone to get... more comfort.
Butcher Virtual Threads like a pro!
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.
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top