Hanno Embregts

Hanno Embregts

Java Developer by day, musician by night. A bit of both at conferences.

Leusden, The Netherlands

Actions

Hanno Embregts is a Java Developer with a passion for learning, teaching and making music.

In his day-to-day job as a Teacher / Technology Advocate at Info Support, Hanno prefers work that is fast-paced and versatile. This is why he juggles Java development, software architecture, public speaking, leading Info Support’s Speaker Community and teaching courses at Info Support’s Knowledge Centre.

Hanno is a Java Champion, an Oracle ACE Pro and one of the leaders of the NLJUG (the Dutch Java User Group). Outside of work Hanno likes making music with his friends. He plays the flute, the guitar and he likes to sing.

Software conferences are Hanno’s favourite thing in the world, because they allow him to do the three things he loves most at the same time: learning new things, teaching others about stuff he discovered and yes: even making music from time to time!

Badges

  • Most Active Speaker 2025

Area of Expertise

  • Information & Communications Technology

Topics

  • Core Java / Java SE
  • Enterprise Java / Jakarta EE
  • Spring Boot
  • quarkus
  • DDD
  • Version control
  • Music

Let's Introduce Value Classes into an Existing DDD Project

When modeling a domain concept, Domain-Driven Design (DDD) advocates for the use of value objects over entities whenever possible. Their immutability and lack of state make value objects a far simpler concept, and their strong typing moves an entire class of potential bugs from runtime to compile-time. However, this approach is at risk of 'type explosion,' where types with just a single `String` are wrapped in yet another type, drastically increasing the number of types in a project and, with it, memory consumption.

JEP 401 (from Project Valhalla) proposes _value classes_, whose instances lack object identity and can contain final fields only. This allows the JVM to store them in a flattened layout on the stack, making their memory consumption (and performance) very similar to primitives. Now that JEP 401 is targeted for JDK 28, we can look forward to representing DDD's value objects more efficiently very soon, due to the extra memory efficiency and performance benefits, potentially solving the memory consumption problem.

Let's put that to the test in this talk, by introducing value classes in an existing DDD project using a fun domain and a JDK 28 early-access build. We'll cover benchmarking results, the pros and cons of this approach, plenty of value class characteristics, and the status of Valhalla's other features. You'll walk away with a good understanding of value classes, their related features, and when (not) to use them.

All the JUnit Features!

Imagine you meet a large group of Java & Kotlin developers, each with their own unique experience. Chances are the one library they all know and use is JUnit: *the* industry standard in test automation for the JVM. You'd expect such a popular library to be well-known and thoroughly understood, but that is not necessarily the case.

Every time I teach a test automation course to a group of (both junior and senior) developers I'm surprised by how many JUnit features are still new to them. This has led me to believe that 80% of the time, we tend to use only 20% of JUnit's features, revealing a 'JUnit feature gap' that is probably worth knowing about. Your ability to master these features is what makes you stand out from other developers.

So it's about time we bridge that gap! Join this talk if you want to find out how big your JUnit feature gap is, or if you simply want a chance to hear about All The JUnit Features! I'll make sure to cover parameterized tests, how to make your tests more descriptive, how to deal with flaky tests, the best ways to use extensions, what is new in JUnit 6 and how to get the most out of JUnit in Kotlin environments. I'll conclude the talk by writing The Ultimate Unit Test live on stage, using a fun domain and as many of JUnit's features as possible.

Don't Let Agentic AI Steal Your Joy of Coding

What do you enjoy more in software development? The act of creating something, or the feeling you get when your creation is appreciated? If you're in the second category, this current age of agentic AI will probably fit you like a glove. You can produce more software than before and get more praise for it. If you're in the first, at the very least you'll have mixed feelings towards the agentic AI movement. Because how will you make sure AI doesn't take away the thing you love doing the most?

If you feel like this, you're certainly not alone. Across the globe, people who work in creative industries such as art, music or movies are standing up against AI. It's not just because AI is threatening their job security, it's threatening their joy of doing it. And the absence of joy in the workplace can be a dangerous thing.

So if you've ever been bereft of joy after a particularly intense day of babysitting AI agents, this talk is for you. What are signs that AI is taking (part of) your joy? Should you simply accept your fate, or can something be done about it? And how can you regain your joy in the workplace without having to give up the benefits that agentic AI brings? Join this session to get the answers to these questions, and the chance to walk away with a newfound appreciation of the current state of our field.

From Zero to Secured: Live-Coding a Full-Stack Jakarta EE REST App with MicroProfile and JWT Auth

Join me for a comprehensive session designed to take you through building a secure, full-stack Jakarta EE application from scratch!

Over the past years, I've taught groups of junior developers the intricacies of Java and Jakarta EE, and we happened to encounter various challenges in securing a REST application with JWT and connecting it to a frontend. Let's address these challenges together during this talk by:

- Live-coding a RESTful app from scratch using the latest versions of JAX-RS, JPA, and MicroProfile.
- Implementing JWT-based authentication.
- Documenting REST endpoints with OpenAPI.
- Connecting an Angular frontend to the REST app.

Along the way, you’ll hear about key concepts like CDI beans, EJBs, dependency injection, DTOs, password encryption, and JWT structure & verification. Not the biggest fan of theory? Don’t worry - I'll include as much live-coding as possible, which makes this talk is perfect for developers who want to master practical Jakarta EE application development and security.

HTTP - How Teenagers Talk to their Parents

As a parent, I’ve often found that getting a straight answer from a teenager can feel like an exercise in debugging. This realisation led me to discover the surprisingly close parallels between navigating those conversations and understanding HTTP status codes. This talk won’t be about parenting (though there will be anecdotes!), but rather about decoding the language that modern systems use to communicate – success, failure, and everything in between. We’ll explore common HTTP status codes, their implications for developers, testers, architects, and anyone who works with data, and discover how these codes can help us troubleshoot problems, build more resilient applications, and perhaps even understand the often-mysterious responses we receive from the teenagers in our lives.

Will Git Be Around Forever? A List of Possible Successors

In the early 2010s, only early adopters used Git. The majority used Subversion. Ten years later, almost everyone uses Git. So what will we use another ten years from now? And what features would we need? We’ll dive into a few post-Git products (including Fossil, Pijul and Sapling) and see their pros and cons. I'll top it off by predicting whether Git will remain in the top spot or not.

When Music and Software Come Together

"Can you perform under pressure?" the interviewer asked. I had to resist the urge to sing "PRESSURE! PUSHING DOWN ON ME!" at the top of my lungs. Instead I absent-mindedly said "Sure" and provided a few dull examples to back the claim up.


Still, when you love doing what you do, you'll be happier and your performance will benefit. Being both a developer and a musician, I am happiest when I see music and software come together. When I do a 'git push', I hum "push it to the limit". And when I hear a pop song, I believe the lyrics are actually about software development.


This talk takes you on a journey throughout a typical software development process, showing you where music and software cross paths. And because I'll perform the songs myself, the talk doubles as a mini-concert - featuring songs by Coldplay, Oasis, Imagine Dragons and many more.

What "Stairway to Heaven" Can Teach Us About Software Development

One of the most iconic rock songs ever written starts with the line "There's a lady who's sure all that glitters is gold..." and chances are you know the rest of the lyrics by heart. Though one could argue that this ability is rather useless. It's not like it makes you a better software developer, right? Right?!

Allow me to change your mind! I know that the lyrics to "Stairway to Heaven" have sparked countless online debates over its meaning, but being a developer and a musician I think it is actually about software development. In fact, I even believe it contains a few good lessons on it and if that is the case, knowing the lyrics by heart can really benefit you.

So during this talk I will perform snippets of the song, explain why I think it is about software development and how your next software project can be better because of it. I'll make sure to cover the identity of 'the lady', interpretation of requirements, reverting architectural decisions and the cost of overly ambitious guitar solos.

Java's Concurrency Journey Continues! Exploring Structured Concurrency and Scoped Values

Java's concurrency journey has been a long and winding one. We departed from the 'classic threads' station and traveled through Runnables, ExecutorServices, CompletableFutures and ForkJoinPools, before finally arriving at 'virtual threads'. But does 'finally' mean that we've arrived at our final destination, or is it a transfer at best?

Now that virtual threads are available, our Java programs will likely use an abundance of threads. This increase in thread count will immediately make thread coordination, observability and isolation more difficult. Two new Java features are currently in development that might make things a bit easier: Structured Concurrency and Scoped Values.

In this talk, we'll introduce and demonstrate these new features, and how they can help address the challenges that have emerged since the introduction of virtual threads. We'll also discuss how the availability of these features will impact your day-to-day programming life and whether Java's concurrency journey is actually over now that these features have become available or if there are still more stops to come.

Hanno Embregts

Java Developer by day, musician by night. A bit of both at conferences.

Leusden, The Netherlands

Actions

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