Cay Horstmann
@horstmann.com
📤 349
📥 266
📝 50
Nothing to see here...keep moving! Specifically, to Mastodon:
https://foojay.social/@cayhorstmann
PSA about white space in modern Java. Character::isWhitespace and String::strip are aligned. But the regex "(?U)\\s" differs in code points 28, 29, 30, 31, (Information separator 4...1) , 133 (Next line), 160 (No-break space âš ), 8199 (Figure space), 8239 (Narrow no-break space).
21 days ago
0
1
0
At JCON, a speaker's slides had a mysterious reference to "danger to the herd". My preferred search engine (Kagi) led me to
https://www.reddit.com/r...
I had a good laugh at the "cliché developer with a conference t-shirt". Guilty as charged.
26 days ago
0
0
0
I just finished my talk at JCON—When Greed is Good: Understanding Java Stream Performance. The title attracted a good crowd. Slides at
https://horstmann.com/pr...
about 1 month ago
0
4
0
I never thought much about hash codes of Java enumeration constants, but
https://4comprehension.c...
set me straight. Turns out enum hash codes are not stable, so serializing them as map keys will not work. Remedy: EnumMap!
about 1 month ago
0
1
0
I've been paying
#Kagi
for search since it's worth my time to get results instead of ads and slop. Added benefit: their translate service is fantastic for language learners. Where Google Translate gives the minimum, Kagi goes all out.
about 2 months ago
0
0
0
Is there any AI software that can watch a boring compliance video (emergency procedures, nondiscrimination, hazard communication, etc.) and answer the multiple choice questions that check for comprehension? Asking for a friend...
about 2 months ago
0
2
0
My article "Effective Pattern Matching 2026 Edition" is now live at
https://javapro.io/2026/...
about 2 months ago
0
1
1
Github gives you until April 24 to opt out of using your Copilot interactions for model training. The setting is at the bottom of
https://github.com/setti...
Allow GitHub to use my data for AI model training.
about 2 months ago
0
2
0
Check out this fun project—Java in your browser in the most inefficient way imaginable, by having Wasm emulate x86_64 instructions running Linux running Java:
https://bmarti44.substac...
Jeff Martin and myself will explore better use cases for Java/Wasm at JavaOne.
3 months ago
0
1
1
Apparently bsky hates post > 300 graphemes. Mastodon doesn't:
foojay.social/@cayhorstman...
loading . . .
Cay Horstmann (@
[email protected]
)
25 years ago, I started using Linux as my primary OS. Because, choice. Today, I had to transcribe a bunch of sound files from Vietnamese (don't ask...), and I hated all the media player UIs. They were...
https://foojay.social/@cayhorstmann/116155928696936400
3 months ago
0
0
0
Cool visualization of JDK releases and the JEPs from which they are made:
https://juniverse.szanto...
3 months ago
0
0
0
Out with the old, in with the new... Bruno Borges created this site on modern Java usage:
https://javaevolved.gith...
3 months ago
0
2
1
Cool article by Grzegorz Piwowarek about writing a gatherer, and then optimizing it:
https://4comprehension.c...
3 months ago
0
1
0
Trying to understand how I got into the Sessionize list of 1124 most active speakers
sessionize.com/most-active-...
I had 8 talks accepted, at 5 conferences, and many more rejected—apparently enough for the top 3% of 39,000 speakers. A shout-out to all of them for submitting and presenting!
loading . . .
Most Active Speakers 2025
Sessionize proudly presents the list of the most active speakers in the year 2025!
https://sessionize.com/most-active-speakers-2025/
3 months ago
1
0
0
Jeff Martin and myself will speak at Java One (March 17-19, Redwood Shores, CA, USA) on Java and WebAssembly. Here is a $50 discount code if you register by Feb. 9: J12026SSM
https://horstmann.com/pr...
Speaker_Cay H.png
4 months ago
0
1
0
On Tuesday, February 10, Maurice Naftalin and myself will speak at Voxxed Days CERN on "Streams—Below the Surface".
https://horstmann.com/pr...
4 months ago
0
0
0
On the plane to Stockholm where I will give two presentations at JFokus
(https://jfokus.se/speak...
, on Project Valhalla and the Java Class File API.
4 months ago
0
1
0
This Thursday I will speak at the Dublin JUG and the JChampionsConf, on Java pattern matching + a bonus talk for in-person attendees. In-person signup:
ti.to/dublin-java-...
. Start time 18:15 UTC To follow online, sign up here:
www.eventbrite.com/e/jchampions...
. Start time 20:00 UTC
loading . . .
261 - Effective Pattern Matching in Java plus Bonus Talk
We're back to get 2026 ignited not with a flame, but an explosion. January sees not one, not two, but three Java Champions visiting Dublin as we again join forces with the JChampions conference to bri...
https://ti.to/dublin-java-user-group/2601-jchampions-cay-horstmann
4 months ago
0
1
0
The excellent free JChampions Conference 2026
(https://jchampionsconf.co
) is happening online Thur 1/22/2026, Fri 1/23/2026, Mon 1/26/2026, and Tues 1/27/2026. Get free tickets from Eventbrite:
https://www.eventbrite.c...
5 months ago
0
1
1
Here is my "Java Advent" article on nice and naughty cases of pattern matching, with nicer formatting than WordPress can muster, and the ability to leave comments without logging into WordPress:
https://horstmann.com/un...
6 months ago
0
2
1
I participate in Advent of Code
(https://adventofcode.co
) to learn, and today I learned plenty. My naĂŻve brute force solution for Day 8 required 3 minutes. I re-learned the union-find algorithm (never touched it since grad school, 45 years ago), and am down to < 1 sec.
https://github.com/cayho...
6 months ago
0
0
0
My article "Nice and Naughty Cases of Pattern Matching" has been published in the JVM Advent Calendar:
https://www.javaadvent.c...
6 months ago
2
0
0
This year’s JVM Programming Advent Calendar is open for business at
https://www.javaadvent.c...
Every day, a new post awaits. I enjoy this eclectic overview of what is new in the Java ecosystem.
6 months ago
0
1
1
There is always more to learn about Unicode. Today I found out about the aptly named WTF encodings:
https://wtf-8.codeberg.page
Java strings are actually WTF-16, not UTF-16. For example, the Java string "WTF\uD800" is not valid UTF-16.
6 months ago
0
0
0
Help--my LocalDate isn’t flattened! Just before my Valhalla talk at JFall, I found out that the early access build can flatten LocalDate arrays, but the latest version from Github cannot. Why? Serialization, of course. Read the gory details at
https://horstmann.com/un...
7 months ago
0
6
8
On Thursday November 13, I will speak in Berlin on "Virtual Threads—A Second Look".
https://www.meetup.com/j...
7 months ago
0
1
0
As I am updating my slides, another shoutout to
https://imagetodrawio.com
I upload a hand-drawn diagram and get something that I can clean up in
draw.io
Final result:
https://horstmann.com/pr...
That is how AI should be. Human in the loop. Tweakable result without endless prompting.
7 months ago
0
1
1
I'll be speaking at JFall on project Valhalla on November 6.
https://jfall.nl
7 months ago
0
1
0
Core Java 14th edition, updated for Java 25, is now available in print or ebook at
https://www.informit.com...
and
https://www.informit.com...
8 months ago
0
6
2
The latest Maven exec plugin can execute "instance main methods":
https://horstmann.com/un...
8 months ago
0
0
0
I will give two talks at BED-Con 2025
(https://bed-con.org/202
) on October 7 and 8 in Berlin.
8 months ago
0
0
0
After more than a year of trying off and on, I finally managed to fix my Emacs/LSP/Java setup. Now I can happily edit my Java scripts in Emacs instead of VS Code. Details at
https://horstmann.com/un...
8 months ago
0
3
0
My take on Java 25:
https://horstmann.com/un...
8 months ago
0
4
0
Following a suggestion from Stuart Marks
(https://stuartmarks.wor...
, I add JavaDoc as a search engine to my browser. I just updated the search URL to
https://docs.oracle.com/...
8 months ago
0
3
0
$ java -version openjdk version "25" 2025-09-16 LTS Remarkably, the four numbers are perfect squares: 5², 45², 3², and 4².
8 months ago
0
3
0
SKDMAN! has the first Java 25 JDK that is not an “early access” release: $ sdk install java 25-zulu Done installing! Do you want java 25-zulu to be set as default? (Y/n): y
8 months ago
0
4
0
Next Tuesday, I'll be talking about benchmarking Project Valhalla at the Java Forum Nord in Hannover
https://javaforumnord.de...
8 months ago
1
3
1
I returned from the amazing JavaZone conference in Oslo. My talks at
https://2025.javazone.no...
and
https://2025.javazone.no...
Videos of many other great presentations already available at
https://2025.javazone.no...
8 months ago
0
1
0
For anyone with an
oreilly.com
subscription: "Early release" versions of the 14th edition of Core Java are at
learning.oreilly.com/library/view...
and
learning.oreilly.com/library/view...
loading . . .
O'Reilly Media - Technology and Business Training
Build the skills your teams need. Give them the O'Reilly learning platform and equip them with the resources that drive business outcomes.
https://oreilly.com
9 months ago
0
2
0
Two years ago, fed up with Google, I switched to Kagi search. Their secret sauce: Downrank pages filled with ads. Works for me. Just got a jubilant announcement--they reached 50K paying customers (
blog.kagi.com/50k
) Really??? 50K paying customers and their results beat Google. There is hope.
loading . . .
Celebrating 50K users with Kagi free search portal, Kagi for libraries, and more... | Kagi Blog
Just last week, we celebrated three years since Kagi was launched.
https://blog.kagi.com/50k
11 months ago
0
4
1
Puzzler of the week: Which of these are valid Java variable declarations? [ ] short euro€; [ ] double world世界; [ ] long wavy﹏; [ ] char bell\u0007; To vote, go to
foojay.social/@cayhorstman...
loading . . .
Cay Horstmann (@
[email protected]
)
Puzzler of the week: Which of these are valid Java variable declarations? [ ] short euro€; [ ] double world世界; [ ] long wavy﹏; [ ] char bell\u0007;
https://foojay.social/@cayhorstmann/114652651018133021
12 months ago
0
0
0
I'll be speaking at the OpenValue Meetup in DĂĽsseldorf May 22 18:00. "When to Stream, Collect, and Gather".
www.meetup.com/openvalue-du...
.
loading . . .
When to Stream, Collect, and Gather & Demystifying Dependency Injection, Thu, May 22, 2025, 6:00 PM | Meetup
**Dear Java Community,** **After the meetup is before the meetup!** We’re excited to invite you to the next **OpenValue Meetup** on **May 22nd** in Düsseldorf! Once agai
https://www.meetup.com/openvalue-dusseldorf/events/307560744
about 1 year ago
0
1
0
Finally recovering from JCON in Cologne. Great conference! I gave two well-attended talks.
horstmann.com/presentation...
horstmann.com/presentation...
Keynote surprise: I got a "Java Community Lifetime Achievement" award. For having survived 30 years of Java. Looking forward to many more years...
about 1 year ago
2
15
0
On April 24, I'll talk about Benchmarking Project Valhalla at the JUG Darmstadt:
www.jug-da.de/2025/04/Benc...
loading . . .
Benchmarking Valhalla (Java Value Types) | Java User Group Darmstadt
Abstract Project Valhalla introduces value types into the Java language and virtual machine. Value types can be more efficient since they do not need pointer indirection and heap allocation. Moreover,...
https://www.jug-da.de/2025/04/Benchmarking-Valhalla/
about 1 year ago
0
3
0
Trip report from Java One...but not the usual kind
www.travelblog.org/north-americ...
about 1 year ago
1
3
0
For anyone teaching Java: I posted a quick summary of new Java features that help beginners.
horstmann.com/unblog/2025-...
over 1 year ago
0
10
5
Hands-on experience with DeepSeek:
horstmann.com/unblog/2025-...
loading . . .
Cay Horstmann’s Unblog
https://horstmann.com/unblog/2025-01-25/index.html
over 1 year ago
0
2
0
I'll be talking at the free online jChampionsConference today at 16:00 UTC on "Java for Small Coding Tasks". Register at
jchampionsconf.com
over 1 year ago
0
13
3
In this final article on my experience with the Advent of Code competition, I describe how I attacked grid and graph problems, and summarize how Java has worked out for me.
horstmann.com/unblog/2024-...
loading . . .
Cay Horstmann’s Unblog
https://horstmann.com/unblog/2024-12-26/index.html
over 1 year ago
0
6
0
you reached the end!!
feeds!
log in