Jan Ouwens
jqno.nl
Jan Ouwens
@jqno.nl
Developer ◦ Java/JVM ◦ EqualsVerifier ◦ speaker ◦ @yoinknl but opinions mine ◦ 👨‍👩‍👧 ◦ 🇳🇱🇪🇺 ◦ 🖖🏻 ◦ 💚 ◦ 🇺🇦🌻 ◦ he/him
EqualsVerifier 4.3.1 is out!

It respects the Kotlin data class contract as described here: kotlinlang.org/docs/data-cl...

As always, check out the changelog: github.com/jqno/equalsv...

#java
Data classes | Kotlin
kotlinlang.org
January 24, 2026 at 9:32 AM
I just found out that my Lego model of the Tilburg city skyline was put up for sale on AliExpress without my knowledge or consent.

I guess that means I'm in the big leagues now!! 😂

(It's cheaper if you go through bricklink.com BTW 😉)
January 15, 2026 at 7:26 AM
My J-Fall (@nljug.bsky.social) talk is now on YouTube!

www.youtube.com/watch?v=4nVc...
Less is more: reduce $ and CO₂ to improve performance 🚀 and joy 🥳 I Jan Ouwens
YouTube video by NLJUG
www.youtube.com
January 5, 2026 at 8:58 AM
EqualsVerifier 4.3 is out!

It fixes an issue with consecutive calls to `ScanOption.except()`.

Check it out at github.com/jqno/equalsv...

#java
github.com
January 1, 2026 at 1:48 PM
EqualsVerifier 4.2.6 is out! 🎇

For sealed types, it can now use all permitted non-abstract subclasses instead of only the first one, which is handy if the first one has a recursion. It also fixes a potential bug for records.

As usual, check it out at github.com/jqno/equalsv...

#java
github.com
December 30, 2025 at 7:04 PM
EqualsVerifier 4.2.5 is out. It runs slightly faster, and is slightly better factored!

Check it out at github.com/jqno/equalsv...

#java
github.com
December 3, 2025 at 7:25 PM
Frank interviewed several experts, and me, about sustainability in IT at J-Fall for the @foojay.io podcast. I like how it came out!
In the next @foojay.io #podcast, we're exploring an increasingly important topic: developing #sustainable software that is both #performant and #ecofriendly. Learn more from Daniel Witkowski, @koturk.nl, Ronald Dehuysser, and Jan Ouwens. On YouTube www.youtube.com/watch?v=wZvU... or in podcast app.
Sustainable Engineering (#84)
YouTube video by Frank Delporte
www.youtube.com
December 2, 2025 at 10:28 AM
I spent 6 hours in MS Teams meetings today.

Let's not repeat this any time soon...
November 27, 2025 at 3:55 PM
EqualsVerifier 4.2.4 is out!

Some people reported an UnnecessaryStubbingException caused by EqualsVerifier. This is now fixed!

Check out the changelog at github.com/jqno/equalsv...

#java
github.com
November 25, 2025 at 8:30 AM
EqualsVerifier 4.2.3 is out!

It contains some small improvements for tests that are run on the module path. Also, it improves on error messages when Mockito is in use.

Check it out at github.com/jqno/equalsv...

#java
github.com
November 15, 2025 at 7:34 PM
EqualsVerifier 4.2.2 is out!

It now supports EnumSets and EnumMaps for enums with only one value. Also, I fixed an error message that referred to Warning.ZERO_FIELDS, which was removed in version 4.0.

All in all, very exciting stuff

Check it out at github.com/jqno/equalsv...

#java
github.com
November 9, 2025 at 6:58 PM
Thank you to everyone who joined my talk at #jfall today!

You can find my slides here: jqno.nl/talks/slides...
Less is more: reduce $ and CO₂ to improve performance 🚀 and joy 🥳
jqno.nl
November 6, 2025 at 11:55 AM
I'll be at #JFall next Thursday! Hope to see you there!
November 4, 2025 at 12:29 PM
EqualsVerifier 4.2.1 is out!

It fixes an issue with Kotlin lazy delegates with a generic type.

Check out the changelog at github.com/jqno/equalsv...

#java
github.com
October 29, 2025 at 8:05 AM
I really appreciate that license! I often try to game it in my PRs by having 0 surviving issues on the first try. I just opened a big PR and managed to kill 187, but 7 still survive. I'm a little bit proud of myself now.

But I'm also happy that I get to ship without those 7 issues that I missed!
We provide free arcmutate licences to open source projects as a matter of principle, but a great side benefit is that we get sent good quality bug reports and feature suggestions.
October 27, 2025 at 9:30 AM
It turns out the YouTube app on my tv was set to Dutch, and I could change it in the settings.

I set it to English which fixes my problem! (And probably introduces the new problem of translating all Dutch videos into English...but we'll cross that bridge when we get there)

Thanks @bjeaurn.com !
Youtube setting! I assume it carries over to TV and other devices.

I think it’s achieved by setting your Youtube’s language to British English.
October 18, 2025 at 12:07 PM
My "smart" tv is translating YouTube video titles to Dutch and I hate it.

The phrasing feels awkward. More importantly, it suggests the videos are in Dutch, which they're not.
October 18, 2025 at 11:44 AM
EqualsVerifier 4.2 is out!

It has prefab values for Java 25's ScopedValues, but the main attraction is that support for #Kotlin delegates is greatly improved! They're now much easier to work with, and also error messages are much clearer.

Check out the details at github.com/jqno/equalsv...

#java
github.com
October 3, 2025 at 9:24 AM
I just upgraded EqualsVerifier and I have to say, the process was extremely painless! I had exactly 1 deprecation to deal with and that was it.
#JUnit 6.0.0 is released!

✨ Java 17 and Kotlin 2.2 baseline
🌄 JSpecify nullability annotations
🛫 Integrated JFR support
🚟 Kotlin suspend function support
🛑 Support for cancelling test execution
⏭️ New `--fail-fast` mode for ConsoleLauncher
🧹 Removal of deprecated APIs

docs.junit.org/6.0.0/releas...
JUnit Release Notes
docs.junit.org
September 30, 2025 at 10:10 AM
EqualsVerifier 4.1.1 is out!

It fixes an issue with classes that extend Enum

Check it out: github.com/jqno/equalsv...

#java
github.com
September 22, 2025 at 8:37 AM
EqualsVerifier 4.1 is out!

It adds the method withResettablePrefabValues, which allows you to have values that are re-inintialized after each check that EqualsVerifier runs internally. Handy for values that mutate when they're used.

See github.com/jqno/equalsv...

#java
github.com
September 2, 2025 at 6:12 PM
Looks like I'll have to update my blog soon: there's a new player in town 😄
August 27, 2025 at 6:45 AM
Reposted by Jan Ouwens
So, here is my new #java side-project:

jdtfmt - a Java #formatter for the command line.
* Can be paired with #spotless (both use jdt).
* fast (native)

github.com/bmarwell/jdt...

Thanks to @jqno.nl for the inspiration, @mthmulders.bsky.social for #graalvm hints and @bdemers.io for encouraging me 😀
GitHub - bmarwell/jdtfmt: jdtfmt is an opinionated java source code formatter for the command line
jdtfmt is an opinionated java source code formatter for the command line - bmarwell/jdtfmt
github.com
August 26, 2025 at 9:31 AM
And EqualsVerifier 4.0.9 is out, too!

Sometimes you introduce a bug while fixing one... 🤦🏻‍♂️

Check it out at github.com/jqno/equalsv...

#java
github.com
August 22, 2025 at 11:19 AM
EqualsVerifier 4.0.8 is out!

It fixes an issue with abstract sealed types that add state and need `Warning.NULL_FIELDS` suppressed.

Check it out at github.com/jqno/equalsv...

#java
github.com
August 22, 2025 at 8:59 AM