Published using Google Docs
Victor's Talks GDoc
Updated automatically every 5 minutes

Victor’s Talks

Bio

With 20 years of experience, Victor is a Java Champion specializing in training software developers and architects. Thousands of engineers from over 150 companies have attended Victor’s workshops, enabling him to develop deep insights across a variety of application domains. Distilling the lessons learned from these sessions, he gave countless educational yet entertaining talks at top conferences, where he’s known as ‘the speaker with the soundboard’. In his spare time, Victor coaches individuals and teams and organizes online meetups for the European Software Crafters community. More on https://victorrentea.ro

Title: Trainer & Consultant

Company: Victor Rentea Consulting

- History of Talks: https://victorrentea.ro/blog/talks/

- Talk YouTube Playlist

No talk is identical to its previous run,  as I keep learning from the workshops I run every day.

I can also run a 1-2 full-days workshop for your conference, or for your local community on the following topics: http://victorrentea.ro/catalog 

In this document:

Bio

Streamtoxication: How a Fluent API Turns into a Tangled Mess.

The ⁠Psychology of Code

Top 10 REST API Design Pitfalls

Top 10 Event-Driven Architecture Pitfalls

Modular-Monolith-first Architecture

Code Smells - Hall of Fame

Clean Code, Two Decades Later

Functional Programming Code Smells

🌟 Evolving a Clean Architecture

🔥 Tracing Java Performance Bottlenecks

🔥 Tracing Java Memory Leaks

🔥 Java Concurrency Trends

Virtual Threads: Strengths and Pitfalls

Upgrading Java: Best Features and Practices

Pragmatic Hexagonal Architecture

Top Resilience Patterns for Microservices

Spring Integration Testing like a Pro

Refactoring Playbook

Test-Driven Design Insights

Security Vulnerabilities for Mortals [apisec]

The Secrets of the Fastest Java Developers on Earth

Software Craftsmanship - Growing a Technical Culture

The Dark Tenets of Hibernate and Spring

Deadly Java Puzzlers for Daily Life 🆕

⭐️ Conference Workshops

Tracing Java Bottlenecks Masterclass - 1 day

Practical Modular Monolith Architecture - 1 day

Mastering and Tuning JPA - 1 day

Event-Driven Patterns - 1 or 2 days

Spring Integration Testing, Zero to Hero - 1 day

Refactoring to Patterns of Modern Java - 1 day

Reactive Programming Patterns - 1 day

📆 Conferences

Speaker Credentials:

Best talks (Youtube playlist): https://www.youtube.com/playlist?list=PLggcOULvfLL_MfFS_O0MKQ5W_6oWWbIw5 

Full list of past talks: https://victorrentea.ro/blog/talks/ 

YouTube Channel: https://www.youtube.com/user/vrentea

Photo Young: https://victorrentea.ro/fata.jpg 

Photo jpoint: https://victorrentea.ro/face.jpg 

Twitter: @victorrentea

LinkedIn: https://www.linkedin.com/in/victor-rentea-trainer/

GitHub: https://github.com/victorrentea/

Streamtoxication: How a Fluent API Turns into a Tangled Mess.

Let’s use streams everywhere!! While streams are often clearer and more concise than traditional iteration, some scenarios require complex combinations of collectors, monads, and deeply nested lambdas, so the verdict becomes debatable. After implementing the same use cases in both imperative and functional style, you’ll get to vote which is best, and we’ll argue over the results. If you're a Java developer, this entertaining and highly interactive session will leave you with a sharper understanding of where streams excel and where you should stick with the old-fashioned imperative style.

The ⁠Psychology of Code

What if your worst bugs aren’t in the code, but in your head?

Cognitive biases, emotional traps, and mental load silently shape every line we write and every design we argue over. From Impostor Syndrome to the Shiny Object Effect, our psychology impacts team dynamics, architecture decisions, and even how we debug. In this keynote, we’ll unpack the hidden forces behind technical work—why smart teams make irrational choices and how to build awareness into your engineering culture. Learn to outsmart your own brain and ship better software, together.

Top 10 REST API Design Pitfalls

An entertaining review of the top mistakes in API design, from the most outrageous goofs to the most dangerous "innocent" shortcuts: breaking changes, exposing domain model, leaking sensitive data, performance massacres, endpoint coupling, CRUD-mania (vs CQRS), PUT/PATCH overload, and careless error handling. Collected with love from over 150 companies.

Top 10 Event-Driven Architecture Pitfalls

You send a message instead of an API call - what can possibly go wrong? Enter the Event-Driven Adventure Park, where every message is a rollercoaster ride! Hold tight as we race through the wild loops of duplicate deliveries, out-of-order, and race conditions. Survive the dual-write drop, escape the consumer error maze, solve the lost message mystery, and find the cure to the poison pill messages. We’ll have 10 thrilling rides — all real war stories collected with ❤️ from 150 companies Victor trained at. Whether you’re an architect, coder, or ops hero, get ready for a wild tour through the quirks and best practices of messaging systems. No REST, just ride! 🎪

Modular-Monolith-first Architecture

Trying to split a legacy codebase into manageable pieces? You aren't sure you really *need* microservices? Then this talk is for you. Meet the Modular Monolith Architecture - the best architecture for some domains, and the safest way to transition to microservices. What is a Module, and how do they communicate? Can they share tables? How to enforce code boundaries and ownership? What should go in the 'shared' module? How to test a module, and how does Spring Framework help us with all that? When and how to extract a module into a microservice? We’ll address these questions in an entertaining, interactive session that no tech lead or architect should miss, drawing lessons from many successful real-world projects.

In the agenda:

Code Smells - Hall of Fame

Clean Code principles have become a cornerstone of professional developer teams worldwide. Languages and frameworks have evolved, code analysis tools and IDEs have matured, so it’s time to raise the bar for code quality to increase our agility to rapidly incorporate changes and new features. Join this tour of the most common Code Smells as of 2025 and fill your toolbox with many techniques you can immediately apply in your practice, via an entertaining show spiced with live-coding moments.

Clean Code, Two Decades Later

Every year code quality improves everywhere thanks to mandatory reviews, quality gates, and #responsible unit-testing. However, many code smells survived, while fresh ones joined to poison our codebases in new ways. Join this entertaining tour of the top code smells in 2025, and ways to fix them.

Functional Programming Code Smells

Code quality rises yearly thanks to mandatory review, quality gates, and responsible unit-testing. However, teams started struggling with new challenges for code maintainability: Functional Programming misuse by newbies or abuse by FP enthusiasts. Join this entertaining tour of the newly emerging Functional Programming code smells: Fragmented Immutables, Tangled Tuples, Functional Chainsaw Massacre, Reduce Rodeo, Mutant Pipeline, Double-Edged Return, Function Frenzy, Optional Obsession and more.

🌟 Evolving a Clean Architecture

The architecture should help you solve your core complexity in the simplest possible way. But you can’t always anticipate where complexity will accumulate, so the only way to keep your code simple is to gradually evolve your architecture towards the most simple design that suits the problem. Building on concepts from Domain-Driven Design and Onion/Clean Architecture, this talk helps you find the right balance between "Clean" and "Pragmatic" design, showing ways to avoid common sources of over-engineering. Warning: this talk might shake your assumptions about design best practices, brutally questioning everything: agnostic domain? DTOs? strict layers? automappers? Rich Domain Model?

Plan 2025

Event: CUD -> Workflow

Event vs Command (request)

dups: de ce e o problema? ~command. idemp-key. delivery-promises; transactions

out-of-order -> temporal coupling -> freeze on error if critical

Event Storm (M cycle,watchdog retry,batch-to-stream) -> throttle

Error handling

🔥 Tracing Java Performance Bottlenecks

Painful days wasted optimizing the wrong part of the code... Blind attempts to fix a production performance issue. Then, speculative “micro-optimizations" that clutter the code for no measurable gain. Only to later trace the problem to the most unexpected cause. This talk explains how to efficiently zoom in on a performance bottleneck using opentelemetry distributed tracing, metrics, and execution profiling. After we learn to read a flame graph, we’ll trace typical backend bottlenecks, like resource starvation (threads and JDBC Connections), time-consuming interceptors, repeated network calls, CPU hot points, and lock contention, all using a variety of mainstream tools. Join this session to prepare for the performance issues that any successful application will eventually have.

TODO: dT waiting for Tomcat thread=?

TODO: async-profiler for a C++ bottleneck example

TODO: @Observed + OTEL for reporting a custom span + baggage example

TODO: N+1 query/API call problem on a trace

TODO: tracing down to PostgresSQL article splunk

🔥 Tracing Java Memory Leaks

Deep-Dive: 105m=50+10+45, or 3 hours

Let's explore memory leaks and memory inefficiency patterns in Java backend systems. After reviewing the Java Memory Model and the JVM flags you #musthave in production, we’ll analyze heapdumps of 10 common memory leaks, collected with ❤️ from 150+ companies over a decade of consultancy. You'll hear about ThreadLocal, inner classes, cache/hash keys messup, thread leaks and many others. As the end, you'll get access to a large repo of memory leaks + heapdumps for later self-study. Oh, and you can get a bounty for any real memory leak you had, which is not yet in that repo 😊.

🔥 Java Concurrency Trends

Over the last 3 decades, Java language acquired various concurrency techniques. But which is best for my use case? Would virtual threads help my project? Are CompletableFutures dead? Do I need the complexity of reactive programming? What are the pros and cons of each technique, and what would be an ideal use case for each of them? Join this talk if you want to avoid useless complexity while optimizing performance, and understand the future of concurrency and parallel programming in Java.

You will hear about:

- Thread Pool Executors (Java 5)

- Completable Futures (Java 8)

- Reactive Programming (RxJava / Reactor)

- Virtual Threads (Java 21)

- Structured Concurrency (Java 25 LTS)

Bring your use-case to the debate.

Virtual Threads: Strengths and Pitfalls

In September 2023 Java 21 introduced Virtual Threads, one of the longest-awaited improvements in the history of Java language. Massive concurrency with cheap threads without the cognitive load of a callbacks-based/reactive model, says the commercial. But what dark tenets and best practices must you learn to adapt to this paradigm shift? Can I expect a benefit from VT? How to measure it? What does Virtual Thread Pinning, CPU Monopolization, and Platform Pool Deadlocks mean, and how they can hurt me?

Upgrading Java: Best Features and Practices

Upgrading the language version has never been such a hot topic in the entire Java history. One in three teams that I train is ‘transitioning’ to Java 11, 17, or even 21, sometimes upgrading two LTS versions at once. Suddenly you can use so many cool features: immutable collections, records, sealed types, switch expressions, text blocks, virtual threads ... But which of these will be a game changer for your project? Which are worth embracing and refactoring your old code to use them? Don’t miss this critical review of the best practical use cases of the modern Java features.

Pragmatic Hexagonal Architecture

Many developers working with Hexagonal Architecture (aka Ports-and-Adapters) complain of overengineering. This talk starts from the religious architecture and brutally challenges every boundary to explore when and how you might want to soften them. Along the way we will use a couple of tools that will forever change how you look at code structure: ArchUnit and DSM. If you are an architect or senior seeking to keep complexity under control, you should not miss this talk.

Top Resilience Patterns for Microservices

The network is reliable and has zero latency with infinite, free bandwidth. And then you wake up. The plan was to go to microservices to build those reliable, super-scalable systems you saw in the ad. But your systems only communicate over synchronous protocols and the team never had a serious discussion about timeouts, retries, circuit breakers, and bulkhead patterns. If that’s your crude reality, please attend this session!

Spring Integration Testing like a Pro

Integration Tests are slow, flaky, and too deep -- developers often complain, then fall back to their Unit Tests riddled with mocks that break at every refactoring and slip bugs into production. Join this talk for 7 lessons that will turn you into a Pro in Spring Integration Testing: Test Context Cache Optimization, DB Cleanup techniques, Message Broker Draining, Awaiting for side-effects, Testing DSLs, Object Mother Pattern and Parallel Tests. All in an entertaining style spiced with jokes and real-life stories from 150+ companies Victor has trained at -- a must-see for anyone serious about testing their microservices.

  1. sa acoperi magia framew si misconfig
  2. test requirements, not implementation

Refactoring Playbook

Good engineers refactor code continuously, but we rarely dedicate deliberate time to improve this skill. We keep manually editing the code, cut-pasting, wasting time, focus, and risks. In this live-coding workshop, you will learn how to apply the must-have refactoring moves to fix various code smells in tiny, safe steps: extract and inline of methods, parameters, variables, constants, and interfaces, moving methods next to data, and much more. We will then study classic refactoring combos combining tiny refactoring moves for a significant design impact. Along the way, we’ll explore tradeoffs of each design change, touching on fundamental design principles that stand at the root of Clean Code. Apart from these refactoring moves, you will discover hidden gems for massive refactoring: IntelliJ’s Structural Replace and Error Prone’s Resharper.

Test-Driven Design Insights

Writing unit tests provides one of the most comprehensive feedback about how to improve the design of your production code. However, if this feedback comes too late it’s often too brutal and we ignore it, writing contrieved, fine-grained, mock-full tests that instead of helping us on the long run end up adding to our pain. This talk overviews ten design improvement points that unit tests are pointing to, from the most obvious improvements like more specialized method signatures and value objects to some of the most subtle design principles like Command-Query-Separation Principle and Separation by Layer of Abstraction. Attend this session to fill your design toolbox with practical techniques immediately applicable to your project.

Security Vulnerabilities for Mortals [apisec]

Security is NOT someone else's concern. You, the developer, are responsible to secure your application, provided with support from security specialists and tools. This introductory talk explores the OWASP Top 10 API Security vulnerabilities, through a series of simple, entertaining demos that everyone in your team should be familiar with.

The Secrets of the Fastest Java Developers on Earth

This session will teach you a lot of tricks that will skyrocket your Java coding speed, after a few days of practice. Writing, editing, navigating, and refactoring code faster will let you focus on your goals and allow you to experiment with various design alternatives without wasting precious time. In this talk, I’ll demonstrate some of the best IntelliJ tricks: Auto-completion tricks, live templates, postfix expansion, multi-cursor, statement completion, code navigation, and a few automated refactoring moves.

Note to organizers: Even though it was curated by a few JetBrains folks, this talk is not a pitch: the features that I demonstrate are all available in IntelliJ Community Edition (free). I have no commercial relationship with JetBrains apart from raffling 3 free licenses/month for the community that I run (as JB does with hundreds of other communities).

Software Craftsmanship - Growing a Technical Culture

Happy, motivated developers who take ownership of their product to deliver more value for their users, instead of blaming games, expedient patching, communication friction, and ceremonial "agile". How to get there? Join this talk for a series of practical tips and tricks for driving a change in mindset, collected from 150 companies by the founder of the largest software craftsmanship community in the world.

The Dark Tenets of Hibernate and Spring

Spring + Hibernate is probably one of the most common library combo in the Java ecosystem worldwide, allowing you to kick-start a project in no time. But these libraries hide dark secrets that cause hard to understand bugs and performance issues to both novice and experienced developers. This live-coding presentation reveals many of these secrets via a series of puzzles distilled from problems of projects throught Europe. You will learn the main pitfalls and best practices around transaction management, write-behind, lazy loading, concurrency management, and more.

Deadly Java Puzzlers for Daily Life 🆕

= classic and new pitfalls of the java basics, collections, and performance that you can encounter in real-life (not corner cases); audience votes using their phones; explanation follows

* Do you know your Java? It's time for some (not so) simple puzzles on operator precedence, object equality, performance, immutability, and null handling in collections. Join this interactive session and guess the outcome of the code samples to earn the "Java Geek of Devoxx Poland" gold medal (not kidding). Don't worry, everything will be explained so you will leave not only entertained but aware of both well-known and obscure new Java pitfalls you can easily encounter in your daily practice.

https://youtu.be/wbp-3BJWsU8 by Jeremy Manson, Josh Bloch, 2011

https://youtu.be/qRTIpyd_snc by Bob Lee and Josh Bloch, 2013

https://www.jrebel.com/blog/java-8-puzzlers by Viktor Gamov, 2016 <<<<

https://youtu.be/BVxrlc-pAX8 by Baruch Sadogursky and Viktor Gamov, 2017

https://youtu.be/NG-27PnRcTc by Baruch Sadogursky, 2018

https://youtu.be/w6hhjg_gt_M by Maurice Naftalin and Jose Paumard 2022

AI-Assisted Coding

About

We’re living in an exciting time. AI has clearly demonstrated enormous capabilities and yetis not highly reliable or even predictable for providing correct or factual responses.

How can we benefit from AI as programmers? Should we shy away from using it or jump in with full faith? How can we benefit without being burned by it?

Those are the questions we will answer in this workshop, by way of practical examples and hands-on exercises.In this workshop we will,not by talking, but by walking through many examples, see the power and the perils of AI for application development. We will tear thing apart to understand where it gives us the most benefits, and in areas where it is not reliable. We will identify the techniques we can use to make the best use of AI. We will look at how we can practically use AI tools and, in areas, vibe coding, and how to make sure the results are reliable, maintainable, and dependable.

The overall goal is for us to be able to use the powerful tools to accelerate the development of applications, but in a way that we can still standby and sign off the applications we are ultimately responsible to deliver.

Course contents

Day 1:

 

Day 2:

 

Tools:

The tools that will be used include, but are not limited to

 

What will you learn:

You will learn how to:

 

What can you do after taking this course:

 

Details of Topics Covered:

 

 

 

 

 

 

 

Target audience and prerequisites

This workshop is for you if you are:

 

⭐️ Conference Workshops

A suitable agenda will be extracted from https://victorrentea.ro/catalog 

Tracing Java Bottlenecks Masterclass - 1 day

Load tests, profiling, metrics

Practical Modular Monolith Architecture - 1 day

Module interation patterns, spring-modulith, comparison with microservices

Mastering and Tuning JPA - 1 day

Event-Driven Patterns - 1 or 2 days

Spring Integration Testing, Zero to Hero - 1 day

Refactoring to Patterns of Modern Java - 1 day

Reactive Programming Patterns - 1 day

📆 Conferences

Jan:

Feb: jFokus✅, Voxxed CERN.ch

Apr: Voxxed Ams✅, JCon.de

Mar: Voxxed Bucharest, devoxx Fr✅, JavaLand.de (cfp:sep)

May: DevTalks.ro⭐️, Spring IO✅, Devoxx.UK, Devoxx.pl, jPrime.bg (cfp:feb), JAX Hybrid, DevWorld Ams, TechWeek, JCon.DE(cfp.oct), GeeCon Krakow+workshops (cfp:dec)✅

Jun: DevBCN⭐️, NDC{Copenhagen}(cfp:jan), Craft-conf.hu⭐️❌

Sep:

Oct: GOTO Berlin, CodeMotion Milano, JAX London

Nov: Devoxx Belgium⭐️, Voxxed Cluj,  DevCon⭐️

Dec: JavaZone

====== 2026 submissions =======

Voxxed Amsterdam: memory leaks✅, java profiling✅

Voxxed Bucharest:

Spring IO: spring integration testing?, event driven?, psychology?,

DevTalks Bucharest: