Donald Raab's Avatar

Donald Raab

@thedonraab.bsky.social

Java Champion. Writer of blogs. Creator of the OSS Java library Eclipse Collections. Author of Eclipse Collections Categorically (https://a.co/d/6KmhrNK) . Opinions are my own. Blog: https://donraab.medium.com/

897 Followers  |  404 Following  |  490 Posts  |  Joined: 14.11.2024  |  1.8924

Latest posts by thedonraab.bsky.social on Bluesky

Sunset on the James River with a canoe on sand in the foreground

Sunset on the James River with a canoe on sand in the foreground

Sunset on the James River tonight

04.11.2025 23:03 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
What If Java Collections Had Eager Methods for Filter, Map, FlatMap? Exploring high-protein iteration patterns, without any excessΒ carbs

Blog: What if Java Collections had Eager Methods for Filter, Map, FlatMap?

"I encourage folks to check out the code in the experiment and maybe try some experiments of their own with Covariant Return Types, Default and Static methods for Interfaces, and Sealed Classes."
medium.com/better-progr...

04.11.2025 20:24 β€” πŸ‘ 0    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

I brought my bike on vacation to Virginia. I took it out for a five mile ride today. It is a beautiful and sunny day here. I hope you are having a beautiful day wherever you are. πŸ€—

04.11.2025 19:51 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Thanks, Chandra! πŸ™

02.11.2025 23:31 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
What if Java had Symmetric Converter Methods on Collection? Comparing converter methods in Smalltalk, Java, and Eclipse Collections

"toBe(), or not toBe()."

My latest blog was inspired after taking some Smalltalk collections for a quick spin in the Pharo IDE. Collection converter methods are more than a convenience. They aid discoverability of a collections library types through code. πŸ€”
donraab.medium.com/what-if-java...

02.11.2025 17:30 β€” πŸ‘ 5    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0

Don't stop exploring, learning, teaching, sharing, caring, thinking, and writing. That's how civilization ends.

02.11.2025 14:26 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

Coding in Smalltalk is like riding a bike. Pictured I take an OrderedCollection and use converter methods in Smalltalk to convert to a SortedCollection, Set, and Bag. Same as when I first learned Smalltalk 30 years ago. Plus dark mode in Pharo.

Now I'm going to go ride my bike. πŸš΄β€β™‚οΈ

01.11.2025 17:28 β€” πŸ‘ 7    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
Happy 29th Birthday to Squeak! This month marks 29 years since the birth of Squeak Smalltalk. That is nearly three decades of exploration, invention, and collaboration – all made possible by the ambition and generosity of those …

Happy Belated Birthday Squeak!
news.squeak.org/2025/10/01/h...

01.11.2025 16:54 β€” πŸ‘ 3    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

Every day, someone new discovers and enjoys a blog I wrote years ago. If you're committed to the long journey, blogging will surprise you once in a while.

31.10.2025 23:51 β€” πŸ‘ 6    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Need primitive type support and missing container types in the #Java Collections Framework? Many folks are quite content to keep waiting for Valkyries to come and take them to [project] #Valhalla, but some chose to follow Alan Kay’s maxim: "The best way to predict the future is to invent it"

27.10.2025 19:00 β€” πŸ‘ 4    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Preview
Go Primitive in Java, or Go in a Box We can have our eight Java primitives and travel light in collections too.

My latest blog: Go Primitive in Java, or Go in a Box

I've programmed in Java for half of my life. I stopped waiting for language features when I knew lambdas would arrive. We got to work and solved collections problems together in OSS.

No regrets, just thanks. πŸ™
donraab.medium.com/go-primitive...

25.10.2025 21:03 β€” πŸ‘ 8    πŸ” 3    πŸ’¬ 0    πŸ“Œ 1
Preview
Go Primitive in Java, or Go in a Box We can have our eight Java primitives and travel light in collections too.

My latest blog: Go Primitive in Java, or Go in a Box

I've programmed in Java for half of my life. I stopped waiting for language features when I knew lambdas would arrive. We got to work and solved collections problems together in OSS.

No regrets, just thanks. πŸ™
donraab.medium.com/go-primitive...

25.10.2025 21:03 β€” πŸ‘ 8    πŸ” 3    πŸ’¬ 0    πŸ“Œ 1

I haven't.

23.10.2025 12:22 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Refactoring to Eclipse Collections with Java 25 at the dev2next Conference Showing what makes Java great after 30 years is the vibrant OSS ecosystem

Still waiting for the #Java of the future to solve all your collection problems? #EclipseCollections has been solving them since J2SE 1.4. Stop waiting. Start refactoring. Eclipse Collections makes Java look, feel, and run like a brand new programming language.
donraab.medium.com/refactoring-...

23.10.2025 01:45 β€” πŸ‘ 9    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0
Eclipse Collections Categorically: Level up your programming game | Wayne Beaton Eclipse Collections Categorically is the most comprehensive guide to the Eclipse Collections framework that could possibly exist. But this is no mere reference guide. This book tells a story.

My book, "Eclipse Collections Categorically", is available on Kindle Unlimited (KU) again. It is available for free to KU subscribers from today through January 16, 2026.

Read the review from @waynebeaton.bsky.social to learn about what is in the book. πŸ‘‡
blog.waynebeaton.ca/posts/ecc/re...

20.10.2025 04:44 β€” πŸ‘ 3    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Eclipse Collections Categorically: Level up your programming game | Wayne Beaton Eclipse Collections Categorically is the most comprehensive guide to the Eclipse Collections framework that could possibly exist. But this is no mere reference guide. This book tells a story.

My book, "Eclipse Collections Categorically", is available on Kindle Unlimited (KU) again. It is available for free to KU subscribers from today through January 16, 2026.

Read the review from @waynebeaton.bsky.social to learn about what is in the book. πŸ‘‡
blog.waynebeaton.ca/posts/ecc/re...

20.10.2025 04:44 β€” πŸ‘ 3    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Preview
Parkour with Maps in Java Sometimes you need to flip.

Do your Maps know how to flip?
levelup.gitconnected.com/parkour-with...

19.10.2025 15:51 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

I tried adding Eclipse Collections ImmutableList to the benchmarks I wrote about in the blog. It shows up alphabetically above ListN. As I expected, it performs similar to Arrays.asList().

18.10.2025 17:22 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Spliterating Hairs Results in Spliterating Deja Vu How a β€œRandom” question led me down a Java Spliterator rabbit hole.

I've been using RandomAccessSpliterator for years in #Java without realizing it. I wrote about this default spliterator years ago. I wrote about it again after learning it is used by immutable Lists created by List.of() and Stream.toList(). Deja vu all over again.
donraab.medium.com/spliterating...

18.10.2025 17:01 β€” πŸ‘ 9    πŸ” 5    πŸ’¬ 1    πŸ“Œ 0
Preview
Spliterating Hairs Results in Spliterating Deja Vu How a β€œRandom” question led me down a Java Spliterator rabbit hole.

My latest blog: Spliterating Hairs Results in Spliterating Deja Vu

The story of a four day accidental rabbit hole self-extraction. I've fallen down this hole before. Who knows, maybe the blog will prove useful and lead to a small change in the #Java ListN class. πŸ€·β€β™‚οΈ
donraab.medium.com/spliterating...

15.10.2025 18:25 β€” πŸ‘ 4    πŸ” 4    πŸ’¬ 0    πŸ“Œ 0

Yeah, ListN doesn't have a specialized spliterator implementation, so it uses AbstractList's RandomAccessSpliterator. It would probably be fairly simple to have it use ArraySpliterator. The difference is that the List RAS has a get() call vs direct array access. Seems like a moderate gain.

15.10.2025 04:13 β€” πŸ‘ 2    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0
Preview
Spliterating Hairs Results in Spliterating Deja Vu How a β€œRandom” question led me down a Java Spliterator rabbit hole.

My latest blog: Spliterating Hairs Results in Spliterating Deja Vu

The story of a four day accidental rabbit hole self-extraction. I've fallen down this hole before. Who knows, maybe the blog will prove useful and lead to a small change in the #Java ListN class. πŸ€·β€β™‚οΈ
donraab.medium.com/spliterating...

15.10.2025 18:25 β€” πŸ‘ 4    πŸ” 4    πŸ’¬ 0    πŸ“Œ 0

It was a very nice surprise to see RAS getting actively used still today. I don't know why I never thought before to run our unit test suite with breakpoints just outputting. Oh well, I got to learn something new.

15.10.2025 04:49 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Spliterating Hairs Results in Spliterating Deja Vu How a β€œRandom” question led me down a Java Spliterator rabbit hole.

I spent way too much time looking at this as I was stuck in my home office past few nights quarantined. I decided to write down and share some of what I found. I literally just finished it and saw your responses. Hope it is helpful. πŸ™
donraab.medium.com/spliterating...

15.10.2025 04:46 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Traveling the road from Idea all the way to OpenJDK See something. Say something. Prove something. Do something.

Have you encountered RandomAccessSpliterator in your #Java travels? I saw it is used 76 times running the Eclipse Collections unit test suite in the debugger. TIL that both ListN and List12 classes use it, except for 1️⃣ element Lists. It's nice to see it is used. πŸ‘β€οΈ
donraab.medium.com/traveling-th...

13.10.2025 05:58 β€” πŸ‘ 4    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0
Post image

Ok, in case it is helpful, I updated with parallelStream tests as well.

Source: github.com/vmzakharov/r...

@smarks.bsky.social @zakhav.bsky.social @josepaumard.bsky.social

14.10.2025 03:24 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

Ok, I nerd sniped myself. I ran a benchmark comparing a simple summing of int values between ArrayList, Arrays . asList(), and ListN. The first two use ArraySpliterator, and ListN uses RandomAccessSpliterator.

Source: github.com/vmzakharov/r...

14.10.2025 03:05 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

So, the million element question I have for @smarks.bsky.social is would it be better to have ListN return an ArraySpliterator instead of RandomAccessSpliterator? Of course, by "better" we should be able to measure a performance difference.

Part of my surprise here was that it doesn't already.

14.10.2025 00:48 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

If it's not clear what ListN or List12 are in the JDK, the following example unit test will hopefully help.

* integersBig = ListN
* integersTwo = List12
* integersOne = List12

I have learned to read List12 as "List One or Two", not "List Twelve."

14.10.2025 00:38 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Traveling the road from Idea all the way to OpenJDK See something. Say something. Prove something. Do something.

Have you encountered RandomAccessSpliterator in your #Java travels? I saw it is used 76 times running the Eclipse Collections unit test suite in the debugger. TIL that both ListN and List12 classes use it, except for 1️⃣ element Lists. It's nice to see it is used. πŸ‘β€οΈ
donraab.medium.com/traveling-th...

13.10.2025 05:58 β€” πŸ‘ 4    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0

@thedonraab is following 20 prominent accounts