71-Heinz-Kabutz.txt

Heinz Kabutz: Really Life Changing!
Jim Grisanzio with Heinz Kabutz
Duke’s Corner Java Podcast — July 31, 2025
https://dukescorner.libsyn.com/heinz-kabutz-really-life-changing

Jim Grisanzio from Java Developer Relations talks with Heinz Kabutz from the Island of Crete in Greece. Heinz has a PhD in Computer Science, publishes the The JavaSpecialists’ Newsletter, and runs the JCrete Unconference. Heinz is also a Java Champion and a teacher, and he cares deeply about the technology and the community. Recently, Heinz was recognized for his Lifetime Achievement by Sharat Chander from Oracle Java Developer Relations. “I was on cloud nine! I was so honored,” Heinz said.

In this conversation Heinz previews some JEPs in the upcoming Java 25 release, he comments on the value of the 6-month Java release cycle, he outlines how he’s contributed code to OpenJDK (and how others can too!), he offers some detailed advice to students getting involved in software development for the first time, and he talks at length about the opportunities for developers who participate at the JCrete Unconference. “I have seen people whose entire careers got revolutionized just by coming to JCrete once. It’s really life changing!”

Transcript:

(00:00:00):
Heinz Kabutz from the island of Crete.

(00:00:03):
Welcome to Duke’s Corner.

(00:00:04):
Hey, how’s it going in Japan?

(00:00:06):
What’s the weather like there?

(00:00:07):
Actually, right now it’s just past five in the evening and it’s a beautiful sunny day here.

(00:00:13):
And so I was just outside a little bit earlier getting some sun.

(00:00:16):
And so it’s very nice.

(00:00:18):
So it’s good to see you.

(00:00:20):
We met years ago in San Francisco at Java 1 or Code 1 or whatever it was.

(00:00:25):
Yeah, that was pre-COVID days.

(00:00:26):
That was a very, very long time ago.

(00:00:29):
It was the before times, as they say.

(00:00:31):
We were young and beautiful.

(00:00:34):
Absolutely.

(00:00:36):
So, yeah, so I wanted to talk to you for that reason.

(00:00:39):
But also, Shah reminded me that back in…

(00:00:43):
in May, just a couple of months ago, that Char recognized you.

(00:00:49):
You received a great recognition here for the Java community, lifetime achievement.

(00:00:53):
And so I said, oh, perfect.

(00:00:55):
Let’s have some conversations with these recipients of this fantastic recognition.

(00:01:01):
Char is going around recognizing the community.

(00:01:03):
And so I’ll follow him around and do some interviews with these

(00:01:07):
with these recipients.

(00:01:09):
And you are actually number one.

(00:01:11):
You’re not the first recipient, but the first one that I got to.

(00:01:13):
Oh, cool.

(00:01:16):
I think five or six.

(00:01:18):
Yeah, exactly.

(00:01:18):
It’s a great, great honor.

(00:01:20):
And Shah strung me along for quite a while.

(00:01:23):
Oh, really?

(00:01:24):
Yeah, because he’s like, hey, are you going to be at DevOps UK?

(00:01:28):
Because I thought he wanted to speak about Jay Crete or something.

(00:01:31):
And then, you know, he wanted me to

(00:01:34):
be at the last session, and it really sprung this thing on me.

(00:01:38):
I sort of had some sort of suspicion something was happening, but it was a really nice surprise.

(00:01:44):
So I haven’t seen the video.

(00:01:46):
Take us back.

(00:01:46):
What was it like?

(00:01:47):
You’re in the keynote room or something.

(00:01:50):
What was that like?

(00:01:50):
This is in London, right?

(00:01:52):
London, yeah, which is a great conference.

(00:01:54):
It’s really, really good.

(00:01:56):
Yeah, I actually planned to go visit a friend and skip the last few sessions, you know,

(00:02:04):
And I felt so bad because he asked so nicely, like, hey, are you going to be there?

(00:02:08):
I thought, okay.

(00:02:09):
And so I was sitting there next to him and he gets up and he’s like,

(00:02:13):
hey,

(00:02:13):
we’re going to talk about something and starts talking about this lifetime

(00:02:18):
achievement and he calls up my name and I was like,

(00:02:21):
look up from my laptop like what is this really happening you weren’t paying

(00:02:27):
attention he caught you off guard i never do i never do i sort of half listen and

(00:02:32):
half half do my whatever i’m doing coding or whatever so i’m just lucky i’m just

(00:02:38):
really glad i i sort of listened to him and the organizer of the conference because

(00:02:42):
he

(00:02:43):
I thought they were taking like a group photograph at the end.

(00:02:46):
Yeah,

(00:02:46):
so basically my suggestion is if Shah asks you to do anything just do it because

(00:02:51):
don’t ask any questions.

(00:02:54):
And if you don’t get the award just do it again next time, maybe eventually you’ll get

(00:02:58):
The achievement, sorry, the lifetime achievement.

(00:03:00):
Yes.

(00:03:00):
So,

(00:03:01):
I mean,

(00:03:02):
I was just on cloud nine and when I came home,

(00:03:06):
my wife had to like pull me back down to earth.

(00:03:09):
Hey, you’re just a normal guy, relax, you know.

(00:03:14):
So, tell me a little bit about your lifetime achievements here.

(00:03:17):
So, what goes into earning something like this?

(00:03:20):
He gave that to me for my Java specialist newsletter, which I started almost

(00:03:26):
about 25 years ago, year 2000.

(00:03:29):
And I’ve been writing it almost every month.

(00:03:33):
Not every month, but almost every month.

(00:03:35):
Some months are just too busy.

(00:03:37):
And so I’ve been doing that.

(00:03:38):
It’s got over 150 countries, I think, getting that.

(00:03:42):
And that’s over 300 newsletters for free of varying technical depth and usefulness.

(00:03:50):
A lot of it is sort of just looking at weird stuff in Java.

(00:03:56):
You’ll find if you look at,

(00:03:58):
for example,

(00:03:59):
changing the contents of a string or changing the integer cache with deep

(00:04:05):
reflection to some things which are mildly useful,

(00:04:10):
but fun.

(00:04:11):
Always try to have fun.

(00:04:13):
What gave you the idea to come up with a newsletter?

(00:04:15):
I was actually motivated by a guy in South Africa who published a business newsletter.

(00:04:22):
He sent this out.

(00:04:23):
He called it Pete’s Weekly, Peter Carruthers, and he

(00:04:26):
He would once a week send out an email and it was just little tips and tricks on

(00:04:31):
doing business,

(00:04:32):
you know,

(00:04:32):
how to get a loan from the bank without losing your house and things like that,

(00:04:38):
marketing and selling.

(00:04:40):
And he had a very nice way of writing it.

(00:04:43):
He would always start with something that you can relate to,

(00:04:47):
something related,

(00:04:47):
something personal,

(00:04:49):
not too personal,

(00:04:49):
but just something relatable.

(00:04:51):
And then he got into the topic.

(00:04:54):
So that was the one.

(00:04:55):
The other newsletter that inspired me was one called Clean Laughs from years and years ago.

(00:05:00):
That’s long stopped, unfortunately.

(00:05:03):
But he also always had sort of a small section of something that he can relate to

(00:05:07):
and then the actual jokes.

(00:05:09):
And so that’s what I did with my newsletters.

(00:05:11):
It always starts with something, you know, oh, I got caught speeding on Crete.

(00:05:16):
How do you get caught speeding on Crete?

(00:05:18):
No one gets caught speeding on Crete.

(00:05:20):
And the most ridiculous thing about that speeding fine is that I was driving our slowest car.

(00:05:28):
How on earth did I get caught driving our slowest car and getting a speeding fine?

(00:05:33):
I was like the butt off jokes for years afterwards.

(00:05:36):
Anyway, so there’s always something funny, you know, my travels, my conferences I go to, etc.

(00:05:43):
And then the technical content.

(00:05:45):
So I have people that have been on there for over 20 years because it’s been going for 25 years.

(00:05:50):
Some of them, they’re long retired and they say, I just can’t unsubscribe from this newsletter.

(00:05:56):
And I’m thinking like, just get off because it’s actually costing me money to send this to you.

(00:06:02):
You’re wasting my money.

(00:06:04):
But it’s a great community.

(00:06:05):
Really fantastic people on there.

(00:06:07):
Really, really nice people.

(00:06:08):
It’s interesting you use that phrase.

(00:06:10):
It’s a great community.

(00:06:11):
I mean,

(00:06:11):
you’re doing this newsletter,

(00:06:12):
you’re sending it out,

(00:06:13):
and that’s something for the community.

(00:06:15):
It’s a contribution to the community, but it also builds the community as well.

(00:06:20):
It does.

(00:06:20):
It does.

(00:06:22):
People feel part of something.

(00:06:25):
We all want to be part of a tribe.

(00:06:27):
And the people that sign up to our newsletter, they’re part of that community.

(00:06:30):
And a lot of things are flown out of that.

(00:06:33):
When I go to conferences, people come up to me all the time and they want to shake my hand and

(00:06:38):
And it’s a bit one-sided.

(00:06:40):
The problem is that because I share some personal things, obviously not everything.

(00:06:46):
I don’t overshare.

(00:06:46):
I don’t tell them everything that’s happening, but I say some things.

(00:06:50):
They feel like they’ve known me for 20 years, but I don’t know them at all.

(00:06:56):
So they go, hey, Heinz, you know.

(00:06:59):
And they go, you know.

(00:07:02):
Remember we spoke at, you know, Java 1, you know, in…

(00:07:08):
or DevOps,

(00:07:09):
whatever,

(00:07:09):
and it’s like,

(00:07:11):
and I’ve got no clue who they are,

(00:07:12):
absolutely no idea,

(00:07:13):
no idea.

(00:07:14):
Obviously,

(00:07:15):
sometimes I do know them,

(00:07:16):
but it’s always wonderful because it’s like,

(00:07:19):
I get to know these people and they’re just such nice people.

(00:07:22):
I find the Java people are just the best.

(00:07:25):
They’re just the nicest people in the world, really.

(00:07:28):
I mean, I’ve been to lots of, I’ve seen lots of communities.

(00:07:31):
We are so helpful with one another.

(00:07:33):
We’re just so

(00:07:34):
kind and generous i mean the whole java community is about being generous just

(00:07:39):
writing amazing systems and giving them away for free with with support it’s

(00:07:46):
absolutely incredible and you were saying a little bit earlier before we started

(00:07:49):
recording that the newsletter actually also led into jcreek it did the young

(00:07:55):
conference which

(00:07:56):
very much which is also gets around what you were just saying about the community

(00:08:00):
in terms of being really fantastic people because we’re focusing on people here

(00:08:05):
seems to be the thing absolutely absolutely so tell you about jcreate because i

(00:08:08):
really want to go every everyone wants to go to jcreate all right so but i i have a

(00:08:13):
special interest in profiling developers via photography and also video and audio

(00:08:18):
but really my specialty is my specialty in terms of what i love to do is

(00:08:22):
photography

(00:08:23):
And I kind of have a feeling that if I spend a week in JCreate shooting developers,

(00:08:27):
that pictures are going to look really nice.

(00:08:30):
What do you think?

(00:08:31):
I think that your pictures are going to make everybody hate you.

(00:08:37):
I would be very happy with that.

(00:08:38):
Very happy with that.

(00:08:39):
This guy is spending, is supposedly working, supposedly working.

(00:08:45):
Meanwhile, he’s just goofing around and going for amazing dinners and dancing the sertaiki and

(00:08:52):
The one thing which really makes – so JCreate is an unconference.

(00:08:56):
It’s like the opposite of a conference.

(00:08:58):
What we do is we leave out the boring bits.

(00:09:02):
We only do the fun bits.

(00:09:03):
So we have sessions, but the sessions are never just one person preaching to 100 people.

(00:09:10):
It’s literally sitting in a circle,

(00:09:12):
one person saying,

(00:09:13):
I want to talk about the ZGC generational garbage collector.

(00:09:18):
the new generational one, and what effects that’s going to have.

(00:09:21):
And then you’ll have the guy that actually wrote it saying,

(00:09:23):
well,

(00:09:24):
actually,

(00:09:24):
it’s pretty good,

(00:09:25):
and they’ll have a whole discussion going on there.

(00:09:28):
and it gets i mean i’m i’ve been doing java for a while and a lot of the times i’m

(00:09:34):
completely lost with the technical details so it is very very very advanced very

(00:09:39):
advanced discussions going on there so there’s just so much i mean nobody can know

(00:09:44):
it all basically no exactly it’s it’s that’s exactly the thing so i i always call

(00:09:49):
the people that come to j crete the j cretins

(00:09:52):
Now,

(00:09:53):
I just want to just make a quick point that there’s a term called Cretin,

(00:09:58):
which is C-R-E-T-I-N,

(00:10:00):
which has nothing to do with Cretin,

(00:10:02):
right?

(00:10:03):
The Cretin is from France,

(00:10:05):
and it’s usually somebody who’s not very intellectually bright,

(00:10:10):
but the J-Cretin,

(00:10:11):
that’s a different thing.

(00:10:11):
That’s a different thing, yeah.

(00:10:13):
That’s a very different thing.

(00:10:14):
So,

(00:10:14):
yes,

(00:10:15):
the newsletter feeds into that because we handpick individuals that we would like

(00:10:20):
to have at J-Crete,

(00:10:22):
And then we invite them personally.

(00:10:24):
And that’s probably the majority of the people that come are the ones which have

(00:10:28):
been handpicked and say,

(00:10:29):
right,

(00:10:30):
we would like you,

(00:10:31):
if you’re able to,

(00:10:32):
to join us and we have some nice discussions.

(00:10:34):
But then we also will go and open it up to the Java specialist newsletter community and say,

(00:10:40):
We’ve got another 15 places.

(00:10:42):
If you would like to come, please put your name into a hat and we’ll have a lottery.

(00:10:47):
We’ll make a draw and then we’ll pick from there.

(00:10:50):
And so we give people chances to attend.

(00:10:53):
Even though it’s an invitation-only conference, we always have a section of

(00:10:57):
anybody on the newsletter or the Java community can put the name on.

(00:11:01):
I mean,

(00:11:01):
I’m not going to screen and say,

(00:11:03):
well,

(00:11:03):
you’re not on the newsletter,

(00:11:03):
you can’t come,

(00:11:04):
but it goes into hat.

(00:11:06):
And so you might have to try it two or three times to get in, but it’s really worth coming.

(00:11:12):
All I want to say is,

(00:11:13):
If you ever get a chance to get a place at JCreed, don’t turn it down.

(00:11:18):
You really, really want to make it.

(00:11:20):
Just like sell your house, get a double mortgage and come because it’s really life changing.

(00:11:30):
I’ve seen a lot of people whose entire careers got revolutionized just by coming to JCreed once.

(00:11:35):
Really?

(00:11:36):
Absolutely.

(00:11:36):
Because you make so many connections there that it’s really life changing.

(00:11:42):
You know,

(00:11:43):
I do a session on building communities and I talk about how communities are

(00:11:47):
constructed and just from my experiences over the years since Sun,

(00:11:51):
since about 2000,

(00:11:53):
open source communities,

(00:11:54):
all the different projects I’ve worked on.

(00:11:56):
And this is actually a point that I make in terms of unconferences because I’ve run

(00:12:00):
unconferences as well.

(00:12:02):
Not like jQuery, much, much smaller.

(00:12:04):
But I’ve heard so many really examples of just exactly what you just mentioned

(00:12:09):
about,

(00:12:10):
you know,

(00:12:10):
life-changing experiences because of the people that you meet.

(00:12:14):
And, you know, you’re now connected to their network and it’s the network effect.

(00:12:17):
Absolutely.

(00:12:18):
And when you have them in beautiful areas like the island of Crete or Hawaii or,

(00:12:24):
you know,

(00:12:25):
the ski resorts here in Japan,

(00:12:26):
they have them at onsen,

(00:12:28):
you know.

(00:12:28):
actually at you know resorts so you can sit in a hot tub and drink sake and then

(00:12:36):
talk about the the garbage collection exactly it’s the strangest experience because

(00:12:41):
actually what you said is exactly what happens you’re in this beautiful area

(00:12:46):
usually

(00:12:47):
But the people there are talking about technology.

(00:12:49):
They’re hacking on things.

(00:12:50):
They get their laptops out there.

(00:12:52):
And I’ve been to many of these events, and I’m listening to the conversations.

(00:12:57):
And they’re in the JVM hacking away there in a hot tub.

(00:13:01):
And they’re deadly serious about this.

(00:13:03):
Obviously, personal things come up and laughing and joking and more social things.

(00:13:08):
But the technology never leaves the conversation because the people are the ones

(00:13:12):
that bring it in.

(00:13:13):
And the idea generation is really fantastic.

(00:13:17):
And I’ve always wanted to write an article to see if I can sort of,

(00:13:19):
you know,

(00:13:20):
see if I can talk to people and document all the things that have come out of these

(00:13:23):
various conferences.

(00:13:25):
That seems like an interesting article to write, to do a little bit of research on.

(00:13:29):
Because you must have a lot from J.Creet from all those years.

(00:13:31):
How many years has it been running?

(00:13:33):
We started in 2011.

(00:13:34):
Okay.

(00:13:36):
Of course, we had a,

(00:13:37):
break in 2020 that was, nothing happened.

(00:13:41):
And 21, we had 22, we had a few people come, just a handful, just like 10 people.

(00:13:47):
We just, we just did like a nano version of JCreed.

(00:13:51):
And then 23, we did a small version.

(00:13:53):
And then last year we had this, all this renovation.

(00:13:56):
So we had to, we had to reduce the numbers a bit to normal.

(00:14:00):
But this year we had, I think 64 or so.

(00:14:03):
Of which I think half are Java champions as well.

(00:14:05):
Really?

(00:14:06):
That’s another community here to talk to.

(00:14:08):
I mean,

(00:14:08):
it’s in the sense of,

(00:14:09):
I would love to really get a sense of,

(00:14:12):
because this is such a contribution that you and the other people who organize it

(00:14:15):
have given to the community,

(00:14:17):
this conference,

(00:14:18):
right?

(00:14:18):
And that’s obviously one of the reasons you,

(00:14:20):
you know,

(00:14:21):
Yashar recognized you with a community lifetime achievement.

(00:14:25):
I mean, so that’s really a fantastic contribution to the community.

(00:14:29):
Thank you.

(00:14:30):
It’s both non-technical in terms of it being social,

(00:14:33):
but it’s also technical because technical people are coming and collaborating.

(00:14:37):
So it’s simultaneously both.

(00:14:40):
I would love to do like a series of shorts of people who have attended to get their stories.

(00:14:45):
I think that would be really cool.

(00:14:47):
All right.

(00:14:47):
So that’s great.

(00:14:48):
If you want, I can set that up.

(00:14:51):
Yeah, absolutely.

(00:14:52):
I think, I think I want to do that.

(00:14:53):
I think that would be really,

(00:14:54):
really great because a lot of times on conferences,

(00:14:57):
particularly the ones in really pretty areas get,

(00:15:00):
you guys are having a fun.

(00:15:01):
Yeah.

(00:15:01):
But there’s a lot of, you know, one of the points.

(00:15:04):
We are having fun.

(00:15:05):
We are having fun.

(00:15:06):
But the thing is what we do is most conferences and I’ve,

(00:15:09):
I’ve been to lots of conferences around the world,

(00:15:11):
but I always,

(00:15:12):
I always find that after about two,

(00:15:15):
two talks,

(00:15:16):
I get overwhelmed with the information.

(00:15:19):
And my brain just basically goes into hibernation mode.

(00:15:23):
And I watch the other participants whose employers sent them to go and sit there and listen.

(00:15:30):
And I think, how do they actually retain anything?

(00:15:32):
Because most of these talks, most of the talks and conferences, they start very basic.

(00:15:37):
And then all of a sudden, it goes to the extreme complex.

(00:15:42):
And you go like, what happened?

(00:15:44):
I just looked away for a second, and it’s gone to extreme complex.

(00:15:48):
Most conferences, people pretend to work, but they don’t.

(00:15:53):
Whereas we pretend to not work, but we do.

(00:15:55):
So our discussions after the, we only have three sessions a day of one hour each.

(00:16:01):
And for example, most of the time it’s morning sessions, afternoons.

(00:16:05):
We have a siesta,

(00:16:07):
we go to the beach,

(00:16:07):
we go diving,

(00:16:09):
we whatever,

(00:16:10):
go hiking,

(00:16:10):
whatever we want to do.

(00:16:12):
But it’s usually in groups so that the discussions continue.

(00:16:16):
Until late at night, until 11 at night, we’re still talking about the JVM.

(00:16:20):
And you don’t find that in normal conferences.

(00:16:23):
Normal conferences,

(00:16:24):
if they have a social event,

(00:16:26):
it’s going to be loud music,

(00:16:29):
lots of drinking,

(00:16:30):
lots of partying,

(00:16:31):
but nothing really productive comes out of those events.

(00:16:35):
Whereas with us, we’re sitting around a table with the other famous Java champions.

(00:16:41):
and actually saying, you know, so what are you working on at the moment?

(00:16:44):
And we’re not supposed to talk shop all the time,

(00:16:49):
but we do because,

(00:16:49):
you know,

(00:16:50):
it’s what on our minds.

(00:16:52):
Exactly, exactly.

(00:16:53):
Exactly.

(00:16:54):
And also what we do, which is different to most conferences,

(00:16:59):
We do encourage people to bring along their loved ones,

(00:17:02):
because it’s a hard sell to say to your wife,

(00:17:05):
hey,

(00:17:05):
I’m going to Jay Crete for August,

(00:17:09):
see you,

(00:17:10):
and then send all the pictures.

(00:17:12):
I mean, that’s got to be a challenge.

(00:17:16):
I know the one year I made this joke,

(00:17:19):
I think it was in 2013 or 14,

(00:17:22):
and I made this joke and I said,

(00:17:24):
well,

(00:17:25):
it’s nine months until Jay Crete,

(00:17:27):
so

(00:17:28):
It’s still enough time to make a baby before then, you know?

(00:17:31):
Just a joke, right?

(00:17:34):
Just to give a perspective of how much time we still had.

(00:17:37):
And we’re really completely full.

(00:17:39):
I don’t like to say sold out because you can’t really buy a seat on JCreed.

(00:17:43):
We all pay our share of the facility fee, but there’s no conference fee as such.

(00:17:48):
We just pay the facility and our dinners and everything ourselves directly.

(00:17:53):
But do you know how many people had to cancel because their wives were having

(00:17:56):
babies at that time?

(00:17:58):
Oh, really?

(00:17:59):
And I was like, why did I say that?

(00:18:03):
I didn’t mean that literally, guys.

(00:18:05):
It’s just a joke, you know?

(00:18:09):
Wow.

(00:18:09):
That’s really fantastic.

(00:18:11):
I’m just getting more ideas in my head just listening to you here.

(00:18:16):
But you said something that was really,

(00:18:18):
really very profound how these types of events can change your life.

(00:18:23):
I had an interesting experience.

(00:18:25):
I was talking to a developer once for this podcast.

(00:18:30):
And he was working on a problem and he was behind the firewall,

(00:18:33):
didn’t really know much about the community,

(00:18:34):
working behind the firewall.

(00:18:36):
And someone in the office said, you know, post the problem to the user group.

(00:18:41):
And he says, what user group?

(00:18:42):
What’s that?

(00:18:43):
Where is that?

(00:18:44):
So he did and he learned all about the user group.

(00:18:47):
He got responses right away.

(00:18:49):
And then one of their responses was,

(00:18:51):
hey,

(00:18:51):
why don’t you bring this to the local meeting and we’ll have a session.

(00:18:54):
We’ll have a community discussion about it.

(00:18:57):
And he went and

(00:18:59):
he got involved in the community and changed his whole career from just going to a

(00:19:02):
single Java user group meeting,

(00:19:04):
right?

(00:19:04):
Now you’re talking about something that’s more,

(00:19:07):
you know,

(00:19:07):
higher end,

(00:19:07):
but still the concept is the same.

(00:19:10):
I agree, 100%.

(00:19:12):
It’s the same thing if you,

(00:19:14):
I mean, at Jcrete, you’re going to have a bit more layout to get there.

(00:19:19):
But if you can slot into a local chapter of job user group,

(00:19:26):
it can be really life-changing because you can meet people,

(00:19:30):
the right people,

(00:19:31):
for your next job,

(00:19:33):
to solve a problem,

(00:19:35):
to find your next employee.

(00:19:37):
It’s really powerful.

(00:19:39):
And it’s so underused.

(00:19:41):
It’s really shocking.

(00:19:43):
Most of the times when I do courses in other countries and places,

(00:19:46):
I offer to the local user group to give a talk.

(00:19:50):
And most of them are smallish groups,

(00:19:53):
30,

(00:19:54):
40 people,

(00:19:55):
maybe a bit more,

(00:19:56):
but sometimes even smaller.

(00:19:58):
But I always say these are the creme de la creme of the Java community.

(00:20:05):
If you want to be in with a really advanced crowd, go to these meetings.

(00:20:10):
One of the things that so far in this conversation has been very,

(00:20:14):
very clear is your contributions,

(00:20:17):
the newsletter,

(00:20:18):
and NJCREAT led to this recognition from the Oracle Java Developer Relations team.

(00:20:25):
That’s really, really great.

(00:20:26):
Let’s talk a little bit about contributing in general now.

(00:20:29):
Because one of the points I make in my sessions is that that’s the core of the

(00:20:32):
community is,

(00:20:33):
you know,

(00:20:34):
community building concept is when you have the ability to contribute,

(00:20:38):
that’s like the signal that cuts through the noise,

(00:20:40):
right?

(00:20:41):
People can, especially engineers can recognize a contribution a mile away.

(00:20:44):
They’re always looking for contributions, right?

(00:20:46):
Because that shows you’re serious.

(00:20:48):
That shows your intent.

(00:20:49):
It could show your skills and abilities and your willingness to engage, right?

(00:20:53):
And actually build something.

(00:20:55):
And one of the things, you know, people don’t realize is that you can contribute to Java.

(00:20:59):
Obviously,

(00:21:00):
very simple contributions,

(00:21:01):
showing up to a user group,

(00:21:02):
just showing up,

(00:21:03):
then maybe doing a talk,

(00:21:04):
et cetera,

(00:21:05):
and doing more.

(00:21:06):
Let’s talk about something a little bit,

(00:21:08):
you know,

(00:21:08):
maybe higher end,

(00:21:09):
a little bit more complex,

(00:21:10):
maybe contributing code to something like OpenJDK.

(00:21:13):
You have any experience with that?

(00:21:15):
I do.

(00:21:15):
It’s been quite a journey,

(00:21:16):
to be honest,

(00:21:16):
because I’m an outsider to Oracle,

(00:21:20):
Sun Microsystems,

(00:21:21):
Oracle.

(00:21:21):
I’ve never worked for Oracle directly.

(00:21:24):
So…

(00:21:25):
For me to contribute something, in the beginning I didn’t know how to do that.

(00:21:29):
But what happened is I would, in the past, I would find a bug in the JDK, in the JVM.

(00:21:35):
For example, there was a concurrent modification exception on an iteration of a

(00:21:41):
Link Transfer Cube,

(00:21:43):
which is not a very widely known class or used class,

(00:21:47):
but discovered this bug.

(00:21:49):
And I would then send it to somebody that I knew at Oracle.

(00:21:54):
And they would then fix it.

(00:21:56):
And then it would be fixed a while later.

(00:21:57):
So that was sort of my first approach to contributing.

(00:22:00):
I would send emails to the engineer.

(00:22:03):
And then they would go, ah, yes, you’re right.

(00:22:05):
That does happen.

(00:22:06):
Fix it.

(00:22:06):
And then the fix is in there.

(00:22:08):
And then at some point somebody pointed out,

(00:22:10):
you know what,

(00:22:10):
you can actually,

(00:22:11):
anybody can go to the Java Bugs database and log a bug.

(00:22:16):
Bugs.java.com.

(00:22:18):
Very easy to remember.

(00:22:20):
And you go there and you simply log your bug.

(00:22:22):
Now, that’s what I then started doing.

(00:22:25):
Then I thought to myself,

(00:22:26):
well,

(00:22:26):
one of the problems with logging a bug is they’ve got a lot of bugs that get

(00:22:30):
logged,

(00:22:30):
which are nonsense.

(00:22:32):
which are not actually bugs.

(00:22:34):
Like a lot of people,

(00:22:36):
you know,

(00:22:36):
when we had swing,

(00:22:37):
people would use threads with swing that would cause a deadlock.

(00:22:40):
And then they would say, ah, the screen doesn’t refresh.

(00:22:42):
And so they’d log a bug for screen not refreshing.

(00:22:45):
But it was actually bug in their code.

(00:22:47):
So at some point,

(00:22:48):
I thought,

(00:22:49):
let me,

(00:22:50):
before log the bug,

(00:22:50):
let me first try and diagnose the bug and write a fix to verify that it actually is

(00:22:56):
a bug.

(00:22:57):
And here’s the fix.

(00:22:59):
So that was the next step I did.

(00:23:01):
And I would recommend anybody who wants to log a bug,

(00:23:04):
download the JDK,

(00:23:06):
build it,

(00:23:07):
try out whether your bug actually is a bug before sending it,

(00:23:11):
because you’re just going to wait people’s time.

(00:23:13):
And please don’t search for bugs using AI.

(00:23:18):
Because you’re going to end up with a thousand nonsense bugs that won’t work,

(00:23:21):
won’t actually be a problem.

(00:23:23):
But find the bug and then fix it.

(00:23:26):
And then you’ve got, then you can submit a pull request together with a bug.

(00:23:30):
Then what I also do is I would also email the people who are responsible for that

(00:23:36):
part of the system.

(00:23:39):
Because otherwise a bug might take a very long time to be

(00:23:42):
go through the system.

(00:23:43):
Nowadays I follow a slightly different process because I’ve given them so much

(00:23:48):
trouble with all these bugs,

(00:23:49):
they’ve given me access to the bug database directly.

(00:23:52):
So I can go in and create a bug myself.

(00:23:55):
But it’s really great feeling.

(00:23:58):
It’s a really great feeling when you know that you’ve contributed something to the

(00:24:02):
entire Java system.

(00:24:04):
I logged a bunch of bugs on the

(00:24:07):
concurrent linked,

(00:24:09):
no,

(00:24:10):
not that one,

(00:24:10):
the blocking linked deck,

(00:24:13):
the blocking linked deck,

(00:24:14):
which nobody ever uses.

(00:24:15):
So I found bugs on something that nobody uses.

(00:24:18):
Great.

(00:24:19):
But I managed to create a linked blocking deck with more elements than integer.max values.

(00:24:26):
And so when you then get the size,

(00:24:28):
it’s a negative number,

(00:24:29):
which has a whole bunch of other effects.

(00:24:30):
So in order to create that, I found a very obscure way to do it.

(00:24:35):
You basically construct it with a collection that has more than into the max value

(00:24:41):
items,

(00:24:41):
which is actually quite difficult in itself.

(00:24:44):
So I made like an artificial collection that would pretend to have that many

(00:24:49):
elements and have a size that would just carry on going.

(00:24:53):
And that way I managed to do it.

(00:24:54):
But it’s a very obscure bug, which is you’re never going to encounter that in the real world.

(00:25:00):
And all the bugs, most of the bugs that I mentioned or that I found are very unlikely.

(00:25:07):
So it’s not like I’m really fixing that much.

(00:25:10):
The other thing I added was a parallel multiply to big integer.

(00:25:14):
That came out of a newsletter that I wrote.

(00:25:18):
years back where I wanted to do a parallel Fibonacci calculation.

(00:25:23):
I wanted to work out Fibonacci of 1 billion.

(00:25:26):
So it’s a very big number.

(00:25:28):
And I wanted to do it in parallel.

(00:25:29):
And then from that,

(00:25:30):
I then made a talk that I spoke about at conferences about multiplying big integer

(00:25:37):
in parallel.

(00:25:39):
And then eventually I thought, you know what?

(00:25:40):
Actually, this code should be the JDK.

(00:25:42):
And so I wrote the code where I parallelized the ToomCook3 algorithm.

(00:25:48):
using fork join.

(00:25:50):
So just using the standard fork join.

(00:25:52):
And it actually got accepted.

(00:25:54):
And somebody later improved it a bit.

(00:25:56):
And that’s nice.

(00:25:57):
There’s always a possibility to improve things.

(00:25:59):
So that’s really for programmers who are interested in Java.

(00:26:04):
If you see something that you think is a bug,

(00:26:08):
write the fix,

(00:26:09):
write the test to prove that’s a problem before you submit a bug.

(00:26:15):
Because what you will probably find is that it’s not a bug.

(00:26:19):
It’s a bug in your code.

(00:26:22):
That’s a good exercise to go through.

(00:26:23):
Yeah, it is.

(00:26:26):
Just in general.

(00:26:27):
I mean,

(00:26:27):
just to – because if you’re going to submit the bug,

(00:26:30):
I mean,

(00:26:30):
the submission itself really is a – if it’s well articulated and,

(00:26:35):
you know,

(00:26:36):
because you mentioned earlier not wasting people’s time,

(00:26:39):
you know.

(00:26:40):
I mean,

(00:26:40):
that shows a lot of thoughtfulness that you tested this beforehand,

(00:26:43):
you know,

(00:26:44):
and you actually verified that it is.

(00:26:46):
Yeah, you need to.

(00:26:47):
You need to because you want to –

(00:26:49):
What I really don’t want is out of this talk to have,

(00:26:53):
you know,

(00:26:54):
100,000 of your listeners now are going to go,

(00:26:55):
hey,

(00:26:55):
let’s log some bugs.

(00:26:57):
It’s like, they’re going to kill me, these people working for Oracle.

(00:27:01):
It’s like, who is this Heinz guy to encourage this behavior?

(00:27:04):
Don’t do that.

(00:27:05):
Make sure that it really is a bug.

(00:27:08):
And it actually almost happened to be the other day because…

(00:27:12):
There’s something which is interesting.

(00:27:13):
If you take a large hash set of values,

(00:27:17):
and the values inside have a suboptimal hash code function.

(00:27:22):
So the hash set can cope with that.

(00:27:25):
It’s a suboptimal hash code function.

(00:27:29):
But if you take that hash set and you copy it

(00:27:32):
into the mutable set.

(00:27:35):
So you say set.copy of this hash set with a very large number of items.

(00:27:40):
It will never complete.

(00:27:42):
It’s like order n cubed or worse.

(00:27:45):
And it’ll just never, never complete if it’s a large set.

(00:27:49):
So I had a really great fix for that.

(00:27:51):
And I thought, OK, now I’m going to write a bug and I’m going to write a fix.

(00:27:55):
And then as I was writing the fix and I was going through it,

(00:28:00):
I realized that it would substantially change the way,

(00:28:04):
the behavior of these sets,

(00:28:06):
which wouldn’t be incorrect,

(00:28:07):
but it would be very inconsistent with how it works at the moment.

(00:28:11):
And programmers have problems with that.

(00:28:15):
They shouldn’t because the set is not ordered.

(00:28:17):
So you should be able to have any order coming out, but they still have a problem with it.

(00:28:22):
So even though the fix I think would work,

(00:28:25):
it would substantially change the behavior or the observed behavior of the sets.

(00:28:31):
And it would probably add more confusion than anything else.

(00:28:34):
So I basically just abandoned this.

(00:28:35):
OK,

(00:28:36):
maybe I must just write a newsletter to warning people not to do stupid things

(00:28:40):
rather than try and fix it.

(00:28:42):
So that exercise was,

(00:28:44):
I think,

(00:28:44):
very useful to actually go through the process of saying,

(00:28:47):
if I were to fix it,

(00:28:49):
how would I fix it?

(00:28:50):
Right.

(00:28:51):
And then realizing that, you know, Stuart Marx is really smart.

(00:28:56):
There’s no ways I’ll outthink Stuart Marx.

(00:28:59):
Maybe I should just not complain too much and leave it.

(00:29:02):
Yeah, but you mentioned, what you mentioned is very, very important.

(00:29:05):
You just going through that process yourself.

(00:29:07):
Yeah, step through.

(00:29:08):
Exactly.

(00:29:09):
And, you know, people can go to openjdk.org.

(00:29:12):
There’s the contribution process is there.

(00:29:14):
It’s well-specified and development processes, names of people.

(00:29:19):
Also, you can see the, you know, the usernames of all the contributors.

(00:29:22):
They’re all documented on the website.

(00:29:26):
And they’re mailing lists for every different project.

(00:29:28):
So you can join that and see.

(00:29:30):
That’s the other thing is you really should be checking whether,

(00:29:34):
your fix is not something that’s been discussed a hundred times already.

(00:29:38):
Right, exactly.

(00:29:38):
Okay, don’t waste their time, please.

(00:29:42):
Well,

(00:29:42):
I mean,

(00:29:43):
I think the larger point here is you start contributing slowly with things that you

(00:29:49):
know well.

(00:29:50):
Get credibility.

(00:29:52):
Exactly.

(00:29:52):
You get credibility.

(00:29:53):
You earn your way.

(00:29:54):
That’s what I really like about the culture of open source.

(00:29:57):
I used to be in the construction business, and it was similar.

(00:30:00):
When you see a craftsman grading a street or using carpentry tools in a very special way –

(00:30:06):
this person earned their credibility over time through their craft, you know?

(00:30:12):
And so it’s the same way in software.

(00:30:13):
I view developers like yourself as just construction people,

(00:30:18):
you know,

(00:30:18):
banging nails,

(00:30:19):
you know,

(00:30:19):
because that’s my foundational experience.

(00:30:22):
We are artisans.

(00:30:24):
Exactly, exactly, exactly.

(00:30:26):
And so I did notice that a lot of construction people,

(00:30:29):
and I didn’t understand it at the time,

(00:30:31):
a lot of construction people were really great artists.

(00:30:34):
They can draw things really well.

(00:30:37):
They’re building houses.

(00:30:39):
They’re digging holes.

(00:30:40):
They’re doing very physical things.

(00:30:42):
And then I go over to their house or something for dinner,

(00:30:45):
and they’ve got these beautiful paintings on the wall.

(00:30:47):
And he says, I did that.

(00:30:48):
I said, oh, my God.

(00:30:49):
Wow, look at that.

(00:30:51):
So you’re absolutely right.

(00:30:52):
You expect him to be all heavy-handed.

(00:30:55):
Exactly.

(00:30:56):
Break everything he touches.

(00:30:57):
Just like me, you know, heavy-handed.

(00:30:59):
Yeah.

(00:31:00):
okay so let’s stick to java here a little bit and back to java we off construction

(00:31:05):
back to java let’s talk about before we go off that before we go off that right so

(00:31:10):
you went construction what do you think of the term software architect

(00:31:14):
Yeah, well, I was just, you know, I just had a conversation about software architecture.

(00:31:19):
I mean,

(00:31:19):
I knew the general term,

(00:31:22):
you know,

(00:31:22):
obviously,

(00:31:22):
because I’ve worked with many,

(00:31:23):
many architects in construction.

(00:31:26):
I know what they do.

(00:31:27):
So, yeah, I was just talking to Nate Schuder, because he’s a software architect.

(00:31:31):
And I asked him the question, what’s an architect, you know?

(00:31:35):
And he described it really as I…

(00:31:38):
As I had imagined,

(00:31:39):
a software architect would be based on architects in the construction business.

(00:31:44):
They take an overall view of something.

(00:31:47):
They have to know how the system fits together,

(00:31:50):
a building or a road or a sewage system or a water system or something like that.

(00:31:56):
This is thousands and thousands of pieces, and they have to come together in some way.

(00:32:00):
Yeah, anyway.

(00:32:01):
What’s the sewage system in the Java world?

(00:32:06):
The garbage collector, I presume.

(00:32:10):
I’ve worked on sewage systems in the real world.

(00:32:12):
That’s the garbage collector.

(00:32:16):
If it doesn’t throw away the garbage fast enough, you’ve got a real problem.

(00:32:21):
You know, just doing things like demolition.

(00:32:23):
You know,

(00:32:23):
you have to understand how the building was constructed in order to demolish it

(00:32:27):
because you can get very seriously hurt.

(00:32:30):
I’ve demolished many, many buildings.

(00:32:32):
I used to be in the excavating business.

(00:32:33):
If you do it wrong, you can kill yourself.

(00:32:36):
Right.

(00:32:37):
You have to know that how building is constructed.

(00:32:38):
You mean blowing stuff up or just taking a crane and smashing it?

(00:32:42):
Yeah, you can fall in a hole.

(00:32:43):
You know,

(00:32:44):
if the building,

(00:32:45):
you’ve got to know what’s underneath you because you’ve got,

(00:32:47):
like I’m sitting on a bulldozer that weighs 20 tons or so,

(00:32:51):
you know,

(00:32:52):
and if I’m over something that’s not going to support that,

(00:32:55):
I can fall in a hole.

(00:32:56):
There’s some great videos of that.

(00:32:58):
Oh, yeah.

(00:32:59):
No, I’ve actually done it a few times, actually.

(00:33:01):
We didn’t have video back then, but I’ve done that.

(00:33:06):
Oh, I flipped the machine over.

(00:33:07):
Yeah, I’ve done, yeah.

(00:33:11):
So, there were no cell phones.

(00:33:12):
So, it’s really weird in Greece, in Crete, right?

(00:33:14):
Because we mentioned I live on the island of Crete.

(00:33:16):
is that there are loads of buildings that are like half buildings, half finished.

(00:33:20):
And what would happen is that people would start building and it’s like all these

(00:33:25):
open source projects that are half finished and then never really completed.

(00:33:30):
Like they never finished doing the documentation, the unit testing for it.

(00:33:33):
But what happens is what happened here in the past is people would just start building.

(00:33:36):
And then once they were like halfway, then they said, oh, let’s get the building permit.

(00:33:42):
You can do that beforehand.

(00:33:43):
No, no, no, no.

(00:33:44):
Because the building,

(00:33:46):
like the construction that we’re going to do was about the same cost as the

(00:33:49):
building permit.

(00:33:49):
They said, well, let’s just get started.

(00:33:51):
Across the road, across the valley from where I live, there’s this old hotel, half built.

(00:33:56):
It’s just a shell with some brickwork and just abandoned.

(00:34:00):
They started building it and then they didn’t have the money for the building permit.

(00:34:03):
So they just had to stop.

(00:34:05):
So you think, well, okay, fine.

(00:34:07):
It’s a nice piece of land.

(00:34:08):
Let’s just build it,

(00:34:09):
get a crane,

(00:34:10):
smash it down,

(00:34:11):
and then we can build like 20 nice houses there.

(00:34:14):
But you first need to sort of legalize the building construction so that you can

(00:34:20):
then get a destruction permit.

(00:34:22):
And the destruction permit is as much as a building permit.

(00:34:25):
Sure.

(00:34:26):
I never knew just how complex that is, really complex.

(00:34:31):
Oh, yeah.

(00:34:32):
I took out a whole subdivision.

(00:34:34):
So I took out, I cut the power.

(00:34:37):
This is one of my famous claims here.

(00:34:40):
I cut the power to over 100 homes.

(00:34:44):
Because the surveyor, the architect, the surveyor, he made a mistake or he just cut corners.

(00:34:54):
Something happened.

(00:34:54):
There was an error in the survey about where the underground power cables were.

(00:35:00):
Right, right.

(00:35:02):
Exactly.

(00:35:02):
I was digging holes.

(00:35:04):
You know,

(00:35:04):
I looked at the survey beforehand because I was very familiar with what happens if

(00:35:08):
you make a mistake because,

(00:35:09):
again,

(00:35:09):
you can die if you… Yeah,

(00:35:11):
it’s one of the cables of power you’re cutting through.

(00:35:14):
Oh, my God.

(00:35:15):
So I was digging and I said,

(00:35:19):
okay,

(00:35:19):
so we’ve got cables that are this thick here,

(00:35:23):
feeding this whole subdivision.

(00:35:25):
They’re 30 feet to the left or whatever it was next to the easement on the sidewalk.

(00:35:30):
And I’m over here.

(00:35:31):
So I should be clear.

(00:35:34):
Measured it and everything.

(00:35:35):
And I’m digging, digging, digging all of a sudden.

(00:35:37):
Pow.

(00:35:38):
Pow.

(00:35:40):
massive explosion and on my coal machine this is a that machine that i happened to

(00:35:47):
be on was 20 tons okay it’s just not a small metal right so it contacts electricity

(00:35:54):
doesn’t it it’s all metal and blew up this thing sparks were everywhere and how i

(00:36:00):
survived this i don’t know i guess because i was on it i don’t know but i’ve had

(00:36:03):
multiple

(00:36:04):
experiences where there are mistakes in surveys and you got to know what’s

(00:36:09):
underneath you you know in that case and so i took out the whole subdivision and

(00:36:14):
the long island lighting company came they were not happy about this um because

(00:36:19):
they were you know and so they they came and i was able to prove this all went

(00:36:24):
through a legal process i was able to to prove that i

(00:36:28):
I was okay, you know, because I had the original surveys.

(00:36:32):
And so the surveyor company was sued and everything.

(00:36:34):
And so, but yeah, and they, you know, they had to repair it.

(00:36:37):
And they,

(00:36:37):
you know,

(00:36:38):
even on site,

(00:36:39):
when I told them this story and they were reviewing everything,

(00:36:42):
I showed them the surveys I was working from.

(00:36:44):
But yeah, it’s a big deal.

(00:36:46):
And yeah.

(00:36:47):
That’s a good one of somebody, of an intern doing like a drop table in production.

(00:36:55):
Is that the same?

(00:36:55):
Yeah.

(00:36:56):
Yeah, yeah, yeah.

(00:36:56):
Yeah, absolutely.

(00:36:58):
Drop tables, the SQL command.

(00:36:59):
You basically drop the drop table invoices or something,

(00:37:02):
and you’ve lost the entire table of the database.

(00:37:07):
So how old were you when that happened?

(00:37:09):
I was in my 20s, early 20s.

(00:37:10):
Yeah, I thought so.

(00:37:12):
That’s like the intern.

(00:37:13):
The intern going and deleting the database table.

(00:37:17):
We need to save some space.

(00:37:19):
Let’s delete the table.

(00:37:21):
But it’s interesting because I had insurance for digging to a certain depth.

(00:37:26):
Okay.

(00:37:27):
You know,

(00:37:27):
if you dig to a deeper depth,

(00:37:29):
you need a different type of insurance because there are other things.

(00:37:33):
Because there’s different things at different depths.

(00:37:36):
You can hit water.

(00:37:37):
You can hit sewage pipes.

(00:37:38):
You can hit water pipes.

(00:37:39):
You can hit electric cables.

(00:37:40):
They tend to be distributed at different depths.

(00:37:44):
So I had enough insurance to cover me for like,

(00:37:47):
I don’t know,

(00:37:47):
three or four feet,

(00:37:48):
which is very shallow.

(00:37:49):
Yeah, that’s very shallow.

(00:37:50):
Yeah.

(00:37:51):
And that cable was six inches under grade, which is- Six inches?

(00:37:56):
Yeah, it was just really under the topsoil.

(00:37:59):
Sure.

(00:37:59):
He’s sitting there with like a tape measure to make sure you don’t… Yeah, it was very shallow.

(00:38:03):
So whoever put it in, put it in wrong.

(00:38:06):
And then they lied on the survey or the survey made a mistake, could be genuine.

(00:38:12):
But the company,

(00:38:14):
you know,

(00:38:14):
the power,

(00:38:15):
it was ultimately the power company’s fault that they put it in,

(00:38:18):
you know,

(00:38:19):
put the cable in the wrong spot.

(00:38:21):
I don’t know whether they hired a contractor or they did it.

(00:38:23):
This is a long time ago.

(00:38:25):
But anyway, it took out 500 homes.

(00:38:27):
And so,

(00:38:28):
yeah,

(00:38:28):
surveys,

(00:38:29):
architecture,

(00:38:30):
knowing the whole system and knowing how the whole system plays together is very,

(00:38:35):
very important because downstream effects can be very,

(00:38:38):
very real.

(00:38:39):
So how do you find that programmers…

(00:38:44):
software developers, software engineers, software architects, and construction workers.

(00:38:50):
How similar are we?

(00:38:52):
Well,

(00:38:52):
from hearing the conversations that you have at conferences and un-conferences and

(00:38:58):
just at work in the office,

(00:38:59):
you know,

(00:39:00):
things I do for 20 years,

(00:39:02):
they’re very similar.

(00:39:03):
The language is similar.

(00:39:04):
You have specifications,

(00:39:06):
you use tools,

(00:39:07):
you have architects,

(00:39:09):
you have systems,

(00:39:10):
you have,

(00:39:11):
you know,

(00:39:11):
specs and plans and

(00:39:13):
From a project management perspective,

(00:39:16):
because,

(00:39:16):
you know,

(00:39:17):
engineers,

(00:39:18):
when they’re working on code,

(00:39:20):
they have to plug into a larger system at some point,

(00:39:24):
right?

(00:39:25):
So it’s not just writing individual,

(00:39:27):
you know,

(00:39:28):
writing code or the construction analogy,

(00:39:30):
an individual hammering a nail onto,

(00:39:32):
you know,

(00:39:33):
hammer on a nail.

(00:39:34):
You’re doing that within a larger system.

(00:39:38):
So when I hear conversations, I mean, I get lost pretty quickly.

(00:39:41):
I mean,

(00:39:41):
I know the basics,

(00:39:42):
obviously,

(00:39:43):
of software,

(00:39:43):
but the details I’m going to,

(00:39:45):
I’m certainly going to lose.

(00:39:47):
But yeah, it’s very similar conversations, just hanging out in a union hall.

(00:39:53):
grungy construction guys and going out and doing some steel.

(00:39:58):
I mean, it’s very similar.

(00:40:00):
It’s interesting.

(00:40:02):
I never saw the connection, but now that you’re saying it.

(00:40:06):
Well, you know Doc Searles?

(00:40:08):
Doc Searles is one of the early Linux guys.

(00:40:10):
He was from Linux Magazine, and he still does a podcast now.

(00:40:15):
He’s a guy I knew years ago.

(00:40:17):
He came to Sun one day and did a session as we were opening all the early open

(00:40:24):
source projects like NetBeans and OpenOffice and OpenSolaris later on,

(00:40:29):
and later on Java.

(00:40:31):
So we were opening a lot of the early projects at Sun in the early 2000s.

(00:40:39):
And so he came, Richard Stallman came.

(00:40:42):
We basically brought in these guys from the open source community to have

(00:40:45):
conversations with our engineers.

(00:40:47):
And Doc talked about the similarities between construction and software, open source software.

(00:40:54):
Yeah.

(00:40:54):
So back then, actually, he wrote an article on it.

(00:40:56):
I’ll send it to you.

(00:40:58):
And I spoke to him at your words, and I said, I was in the construction business.

(00:41:03):
For me, this software stuff is a career change.

(00:41:07):
I’ve worked in five different industries.

(00:41:09):
So this is the last one, hopefully.

(00:41:12):
Changing is very difficult.

(00:41:13):
Yeah.

(00:41:14):
So if I can position this,

(00:41:16):
pivot this back to Java,

(00:41:18):
because we all know that AI is going to make us all unemployed as programmers.

(00:41:23):
It’s not going to, but let’s just pretend it will.

(00:41:26):
So maybe we need to get our hard hats as programmers and go into the construction business.

(00:41:31):
Well, I think you certainly have the mindset.

(00:41:33):
It does take a really good body though.

(00:41:35):
These are physical things.

(00:41:37):
So if you’re going to make a switch from software to construction.

(00:41:42):
Come on, we can do anything.

(00:41:43):
Come on, we’re Superman.

(00:41:45):
Usually it’s the other way around.

(00:41:47):
Because if you find old construction people, they have some scars.

(00:41:52):
They’ve got some scars.

(00:41:54):
That’s why I left because I ended up in the hospital, you know.

(00:41:58):
In my 20s, life-threatening injuries, you know.

(00:42:00):
Construction and farming are two of the most dangerous businesses in the world.

(00:42:05):
Construction, farming, and fishing, I think, are the top three.

(00:42:08):
People just simply die doing these things.

(00:42:11):
Yeah, we don’t have programmers dying from coding, usually.

(00:42:15):
Your larger point is valid.

(00:42:16):
The mindset is very similar.

(00:42:18):
You’re constructing something.

(00:42:19):
You’re building something.

(00:42:21):
And it’s very this concept of the artist is very, very similar.

(00:42:27):
You use tools.

(00:42:29):
And so, yeah, it’s a big deal.

(00:42:31):
So let’s talk about Java 25.

(00:42:33):
Java 25 is right around the corner.

(00:42:36):
So a couple of months, Java 25.

(00:42:38):
So I know you follow, obviously, the releases because the releases are every six months now.

(00:42:44):
Not that you have to know everything in every single release.

(00:42:47):
It just flows now as opposed to years ago.

(00:42:51):
So talk to me a little bit about the release cycle.

(00:42:54):
How does that change your life as a developer?

(00:42:57):
And some of the features maybe in Java 25 that are coming up or some of the recent

(00:43:02):
releases that are especially interesting to you as a developer.

(00:43:07):
So I was very skeptical when they announced

(00:43:10):
six-month release cadence.

(00:43:12):
I sort of just doubted that they could make that change because it was such a big change.

(00:43:17):
And before that,

(00:43:18):
you’d have like three years of one version and then,

(00:43:20):
you know,

(00:43:21):
updates,

(00:43:21):
another three years,

(00:43:22):
another version.

(00:43:23):
And it was quite easy to keep features apart.

(00:43:26):
You know,

(00:43:27):
I knew that Lambdas were Java 8 and Generics were Java 5 and Java 7 wasn’t that

(00:43:33):
much of a change except for some things,

(00:43:36):
some smaller things.

(00:43:37):
And so I always knew which version had what.

(00:43:42):
And then they announced the six month cadence.

(00:43:44):
First of all, I didn’t believe that they could do it, but they have.

(00:43:47):
They’ve done a really good job with it, even though it

(00:43:50):
makes it challenging because all the features are sort of morphing into each other

(00:43:54):
and merging into one another.

(00:43:55):
It’s very hard to keep them apart.

(00:43:57):
I absolutely love it because it’s like if you miss the one train, you go next month.

(00:44:02):
It’s like I made these minor bug changes, bug fixes for concurrent classes.

(00:44:07):
And they didn’t make it to Java 25 because they wanted, because that’s a, what do you call it?

(00:44:13):
A long-term support LTS version.

(00:44:16):
So they’re going to put it into Java 26 to get it just in case there’s anything

(00:44:19):
which is problematic with that change.

(00:44:22):
So if you miss the one, you’ll have another chance in six months’ time.

(00:44:26):
The other thing which is really great is all the different previews.

(00:44:29):
So they’ll try a feature with a preview version.

(00:44:32):
And then you can enable it or disable it.

(00:44:36):
And then they’ll have a second preview, third preview.

(00:44:38):
The structure of concurrence is on the fifth preview.

(00:44:42):
So they’re still trying to figure out exactly how to do it.

(00:44:45):
Whereas before, it was either in or out.

(00:44:48):
And you didn’t have much of a chance to review it and to really change it.

(00:44:53):
And there have been some significant changes where they had some idea.

(00:44:57):
They took it out.

(00:44:58):
They brought it in again.

(00:45:00):
and brought it back better.

(00:45:02):
So I’ve never so far seen a case where they had a feature and then the final

(00:45:07):
version was worse than the beginning.

(00:45:09):
It’s always better, but it takes a while.

(00:45:11):
So I really like that.

(00:45:13):
I like what’s going on.

(00:45:16):
In a way, it’s a pain because I’m an educator, so I teach courses.

(00:45:20):
And so I’ll make like a recording of a course and it’ll be for Java 21.

(00:45:25):
And then people say, no, we want Java 25.

(00:45:27):
Well, it’s actually mostly the same, except for some small difference.

(00:45:32):
Yeah, but we want Java 25.

(00:45:33):
And I can’t re-record the entire course for Java 25 every couple of years,

(00:45:39):
because it’s a lot of work having pre-recorded courses to create that.

(00:45:45):
And some of the features are interesting.

(00:45:46):
There’s this new one now, the JEP 513, Flexible Constructor Bodies.

(00:45:52):
And that’s an interesting JEP that they’ve put into Java 25.

(00:45:56):
In Java 1.3,

(00:45:57):
what could happen is if you,

(00:46:00):
up onto Java 1.3,

(00:46:01):
if you had inner classes,

(00:46:04):
the inner classes could happen is that inside the inner class,

(00:46:09):
if you access a field from the outer class,

(00:46:12):
inside a method’s being called from a super class of that inner class.

(00:46:18):
It’s a bit of a weird situation.

(00:46:20):
You probably won’t see, but it does happen.

(00:46:23):
And it has happened to

(00:46:24):
to somebody that I was working with,

(00:46:27):
then what happens is that if you’re checking the field,

(00:46:31):
if you just read the field,

(00:46:33):
you already get a null point exception because the link to the outer object hasn’t

(00:46:37):
been set yet because you’re still in the constructor.

(00:46:40):
And so this,

(00:46:41):
we all know that the very first statement in a constructor either has to be this,

(00:46:46):
the call to this to another constructor,

(00:46:49):
or it can be a call to the super class constructor.

(00:46:52):
There was always a rule.

(00:46:53):
But what they did was,

(00:46:54):
in Java 1.4,

(00:46:55):
they changed that so that they actually set the link to the outer object before the

(00:47:02):
call to super.

(00:47:03):
So it’s something we can’t do in the Java code directly.

(00:47:07):
Now, what they do with the

(00:47:09):
flexible constructor bodies,

(00:47:10):
it still doesn’t allow us to do that,

(00:47:13):
to set the fields before calling super,

(00:47:16):
but it does allow us to do checking of values,

(00:47:19):
of parameters,

(00:47:20):
before calling super.

(00:47:21):
So,

(00:47:21):
for example,

(00:47:22):
if you have a valid range of values,

(00:47:25):
for example,

(00:47:25):
person with age,

(00:47:27):
we don’t want the age to be negative,

(00:47:29):
So we can check the age in the constructor before calling super,

(00:47:33):
for example,

(00:47:34):
which is really great.

(00:47:36):
It’s a really great way of coding.

(00:47:39):
Other languages allow setting of values as well before calling super,

(00:47:44):
but because it wasn’t part of Java from the beginning,

(00:47:46):
they’ve sort of left that out.

(00:47:48):
So this is going to make code, I think, interesting.

(00:47:51):
The other JEPs… So is that JEP in preview?

(00:47:54):
No, no, no, it’s fully released now.

(00:47:57):
It was in Java 24, it was in third preview.

(00:48:00):
Okay.

(00:48:01):
So it’s been coming for a while.

(00:48:05):
It’s now Java 24 was third preview,

(00:48:09):
preview 23 was second preview,

(00:48:12):
and Java 22 was first preview.

(00:48:15):
Okay.

(00:48:16):
So you normally have several previews until they finally accept it.

(00:48:20):
That’s excellent, excellent.

(00:48:22):
It’s a small JEP, but I think it’s very nice to have that ability.

(00:48:27):
Cool, cool.

(00:48:28):
So any other JEPs that are interesting?

(00:48:30):
Yeah, absolutely.

(00:48:30):
So if you try to teach Java to beginners,

(00:48:34):
usually they get sort of bedazzled by public static void main string array args.

(00:48:41):
How many times am I going to hear this?

(00:48:43):
Yeah, it’s like, why do we need all this stuff?

(00:48:46):
And most educators will say, well, you can ignore static for now.

(00:48:51):
You can ignore public for now.

(00:48:52):
You can ignore void for now.

(00:48:54):
You can avoid string array for now.

(00:48:56):
We’ll talk about that later.

(00:48:57):
So you’re trying to teach people how to

(00:48:59):
start a Java program and a lot of the things they just have to ignore.

(00:49:04):
You have to ignore package and public class, what all that stuff is for now.

(00:49:09):
So what they’ve done is they’ve made it a lot easier for people who try to educate

(00:49:14):
about Java to just show small methods.

(00:49:18):
And this program with just the logic, not all the boilerplate code.

(00:49:24):
One of them is called JEP512, which has compact source files and instant main methods.

(00:49:31):
It’s also, it’s not delivered, it’s closed.

(00:49:33):
It’s going to be delivered in Java 25.

(00:49:36):
I was reviewing a book called Core Java,

(00:49:39):
where he uses that now exclusively for starting programs,

(00:49:43):
which is absolutely fantastic.

(00:49:44):
It’s way better, way easier to understand than the old version of working with Java.

(00:49:50):
So from an education perspective, that’s great.

(00:49:52):
And it’s going to make it easier for universities to start with Java because you

(00:49:58):
didn’t have all of that boilerplate code,

(00:50:00):
unnecessary boilerplate code in there.

(00:50:02):
And with that, they also have module import declarations.

(00:50:05):
which are also great,

(00:50:06):
because with that,

(00:50:07):
you don’t have to have separate imports for all the different classes.

(00:50:11):
You just say, right, I’m going to import Java base, everything in there.

(00:50:14):
You figure it out.

(00:50:15):
If you see a vector, it’s going to be Java to vector.

(00:50:18):
If you see Aradis, it’s Java to Aradis.

(00:50:20):
You don’t have to have them all separately.

(00:50:22):
So that’s absolutely fantastic.

(00:50:23):
I love those.

(00:50:24):
Yeah, these education ones are very important.

(00:50:26):
And I know that the team is taking these things very seriously because they really

(00:50:31):
want to get because I keep on thinking about my first experience learning

(00:50:36):
programming C and C++ on a Spark workstation in the basement of Northeastern

(00:50:42):
University with just a blinking cursor and a book next to me.

(00:50:45):
And oh, my God.

(00:50:46):
So,

(00:50:47):
you know,

(00:50:47):
it was different days now,

(00:50:49):
not only having nice IDEs,

(00:50:51):
you know,

(00:50:51):
they’re intuitive and having AI and having the whole internet to help you,

(00:50:56):
but also the specific changes to the Java platform itself to where it makes it the

(00:51:02):
on-ramp essentially faster for developers.

(00:51:06):
Do you have any,

(00:51:06):
since we’re in education,

(00:51:07):
do you have any,

(00:51:08):
and you teach,

(00:51:09):
do you have any advice for new students or even people making a career change,

(00:51:15):
getting into…

(00:51:16):
software development.

(00:51:17):
Yeah, I do.

(00:51:18):
My advice is if you want to learn how to program, it doesn’t matter what language it is.

(00:51:23):
Let’s take Java because that’s a great language to work in.

(00:51:27):
Look for problems that you’ve got that you’re trying to solve in your real life and

(00:51:31):
then solve them using Java.

(00:51:33):
And that way you’re going to write useful things that are useful to you.

(00:51:37):
And then as you become more adept at coding, go and create yourself a GitHub account and

(00:51:45):
The little projects that you do, put them there.

(00:51:48):
Make them public.

(00:51:49):
Put them there.

(00:51:50):
And no one’s going to judge you for basic,

(00:51:53):
very,

(00:51:53):
very badly written code when you were starting off.

(00:51:57):
We’ve all been there.

(00:51:58):
We’ve all started off with bad code.

(00:52:01):
It’s fine.

(00:52:02):
Just put a date there that people know this was 10 years ago.

(00:52:05):
That’s not how you code now.

(00:52:08):
That way, what you’re doing is you’re creating a portfolio of what you can do.

(00:52:12):
Because once you’ve learned programming,

(00:52:15):
once you’ve learned coding,

(00:52:16):
you’re going to hopefully get a job doing that.

(00:52:20):
And if you’re trying to get a job and your employer can see that,

(00:52:23):
hey,

(00:52:23):
you’ve done all this code already,

(00:52:25):
and they see all the contributions you’ve done to open source projects,

(00:52:29):
a variety of open source projects,

(00:52:32):
you’re going to have a much easier time getting an interview and getting a job as

(00:52:35):
well.

(00:52:36):
That’s great advice.

(00:52:38):
I’ve heard that’s really super advice,

(00:52:41):
not only for getting involved in coding,

(00:52:44):
but really anything,

(00:52:45):
any other field is to focus on what you can do right now to solve your own problems

(00:52:51):
right now.

(00:52:52):
Solve your own problems, yeah.

(00:52:55):
For example, let’s say you want to lose weight.

(00:52:57):
Stupid example.

(00:52:58):
Or gain weight.

(00:52:59):
Gain weight.

(00:52:59):
I’m trying to gain weight.

(00:53:00):
Yeah, exactly.

(00:53:01):
There you go.

(00:53:01):
You want to gain weight or lose weight.

(00:53:03):
I’ll give you some of my weight.

(00:53:04):
I’ll take some of yours.

(00:53:06):
But what you do is you sort of write,

(00:53:09):
sort of just taking a spreadsheet and tracking it there,

(00:53:13):
you write an app.

(00:53:16):
Write an app in Java.

(00:53:18):
Make it a website for yourself.

(00:53:20):
For example, I do a run every single day without fail.

(00:53:24):
And I started this in…

(00:53:27):
I started my first running streak in 2016, first of December.

(00:53:31):
That lasted 672 days.

(00:53:33):
I know because I’ve got a website that I’ve made for myself.

(00:53:36):
Excellent.

(00:53:37):
And then I hurt my back.

(00:53:39):
I got a really bad back spasm.

(00:53:42):
And I couldn’t get it off the floor.

(00:53:43):
I was like really bad.

(00:53:44):
I know.

(00:53:46):
I know what that’s like.

(00:53:48):
Man.

(00:53:49):
Luckily, it wasn’t a spinal.

(00:53:50):
It was just a back spasm.

(00:53:51):
But my goodness, it was sore.

(00:53:56):
I couldn’t believe it.

(00:53:57):
I was instantly completely drenched in sweat and on the floor.

(00:54:01):
I couldn’t get up.

(00:54:02):
And then as soon as I could walk again,

(00:54:04):
I started my second running streak,

(00:54:06):
which is now 2,476 days.

(00:54:09):
So what I do is if I need something,

(00:54:13):
I’ll write some code,

(00:54:14):
I’ll write some websites,

(00:54:16):
just to solve my own problems,

(00:54:19):
to make my life better.

(00:54:21):
You might find you want to track how much water you drink.

(00:54:24):
you drink per day.

(00:54:26):
Whatever you want to track of yourself, you can do it in a spreadsheet, but write an app.

(00:54:32):
It’s going to be more work, more fun, but it’s going to also make you think a bit about

(00:54:39):
solving real problems and actually having a practical usefulness for this.

(00:54:44):
The other thing that I’ve done a lot of is this nice little website called Project

(00:54:48):
Euler,

(00:54:50):
projecteuler.net,

(00:54:52):
and they’ve got maths problems that you have to solve with code.

(00:54:55):
Well, you can solve them in your head, but it’ll take a while.

(00:54:58):
What’s interesting about that is these maths problems get more and more difficult

(00:55:03):
the further you go along.

(00:55:04):
But what’s interesting is that you really can’t solve them brute force.

(00:55:09):
You have to think about the algorithms.

(00:55:11):
You’ve got to think about what’s a clever way to solve it.

(00:55:14):
And what I do is, as soon as I solve one problem, I never look at it again.

(00:55:19):
I’m like done with the problem.

(00:55:20):
Because all I care about is the fun of solving a problem.

(00:55:25):
I was talking to a youngster this morning on the beach, 18-year-old.

(00:55:28):
He’s studying computer science.

(00:55:30):
And I said to him, you need to be careful because programming is very addictive.

(00:55:36):
And he’s like, what do you mean?

(00:55:38):
I know people who’ve coded without sleep for like a whole week.

(00:55:41):
Wow, yeah.

(00:55:42):
Just coding, coding, coding, coding.

(00:55:45):
It’s very addictive because once you start solving problems,

(00:55:49):
you get this incredible dopamine hit,

(00:55:51):
endorphins being released,

(00:55:53):
like you’re a cocaine high without taking drugs.

(00:55:56):
It’s really, I mean, you can really get sucked into that.

(00:56:01):
So, yeah, if you’re starting off, those are some tips.

(00:56:06):
Get your own GitHub.

(00:56:08):
Do math puzzles, projectulera.net.

(00:56:10):
Get onto that.

(00:56:12):
And once you get a bit more experience,

(00:56:15):
once you’ve been programming for a bit,

(00:56:17):
join my newsletter.

(00:56:18):
Don’t join it as a beginner because you’re going to be completely lost.

(00:56:21):
Because in my newsletter, I don’t write the things which are obvious.

(00:56:26):
So if there’s something obvious, I just leave it out.

(00:56:28):
And so if you’re a beginner, you’re going to be like,

(00:56:30):
Why didn’t he say that you should not dereference null pointers?

(00:56:34):
I’m not going to say that.

(00:56:35):
Like, obviously, you’re not supposed to dereference null pointers.

(00:56:38):
You know, you’re getting a null pointer exception.

(00:56:41):
So I’ll leave out stuff the beginners would need,

(00:56:44):
and I go for intermediate to advanced programmers.

(00:56:47):
And the name of our newsletter is very specific.

(00:56:51):
It’s The Java Specialist’s Apostrophe Newsletter.

(00:56:56):
It’s a newsletter for Java specialists rather than from a Java specialist.

(00:57:01):
Interesting.

(00:57:02):
So it’s for someone who’s already advanced in Java and you want to learn more,

(00:57:07):
that’s the newsletter for you.

(00:57:09):
Interesting.

(00:57:09):
Excellent.

(00:57:10):
That’s really great advice, especially this concept of building your portfolio.

(00:57:15):
you know very important hosting your work open source contributing new portfolio in

(00:57:21):
the open i take a lot of the content from these conversations and use it as source

(00:57:26):
material from my presentation so you’ve you’ve given me a lot of source material

(00:57:31):
here heinz i really love it all over the world now that’s even more world famous

(00:57:37):
that’s fantastic

(00:57:39):
All right.

(00:57:40):
Well, let’s wrap it up here.

(00:57:41):
Let’s get out of here.

(00:57:42):
The sun is starting to set here and I’m going to go for a swim.

(00:57:46):
And so is there anything that we,

(00:57:49):
do you have any final words of wisdom to wrap us up here or are we done?

(00:57:52):
What do you think?

(00:57:54):
I think that just,

(00:57:55):
I think it’s,

(00:57:55):
I think one thing I want to add,

(00:57:57):
and that is that we haven’t spoken about this,

(00:58:00):
but I do just want to give a shout out to,

(00:58:02):
which was surprising to me.

(00:58:04):
I must tell you, it’s really, it was a big surprise.

(00:58:06):
I didn’t expect it.

(00:58:07):
But I want to give a shout out to the amazing stewardship that Oracle has given Java.

(00:58:13):
I think you’ve done a fantastic job.

(00:58:16):
I really think so.

(00:58:17):
I didn’t expect it because,

(00:58:18):
you know,

(00:58:18):
when Sun Microsoft was everybody’s buddy and we thought this is going to be fun,

(00:58:21):
you know,

(00:58:22):
and then Java got sold and I was like,

(00:58:25):
oh no,

(00:58:25):
this is the end of the world.

(00:58:27):
and you’ve carried it for many years 15 16 years how long has it been yeah it’s 15

(00:58:33):
it’s well 2000 2000 the acquisition is 2009 so 2009 so you’ve actually you’ve

(00:58:41):
actually had it longer than sun had it exactly yeah yeah and java has gone when

(00:58:46):
java started like if you go back to java 1.0

(00:58:50):
For its time,

(00:58:51):
it was an innovative idea and so on,

(00:58:53):
but it pales in comparison to Java 25 and 20,

(00:58:57):
what’s coming.

(00:58:58):
It’s really, really different.

(00:59:00):
The amount of effort that Oracle has put in,

(00:59:04):
resources you’ve put in,

(00:59:05):
and also the fact that if allowed,

(00:59:07):
I would say the community to flourish.

(00:59:11):
even though they are competitors and so on,

(00:59:13):
you’re still allowed to flourish,

(00:59:15):
has been really remarkable.

(00:59:17):
I didn’t expect that.

(00:59:19):
So, well done.

(00:59:19):
A shout out to the union team as well.

(00:59:22):
Cool.

(00:59:23):
Thank you very much.

(00:59:24):
That’s really great.

(00:59:24):
And I’m sure I’ll send this along, send the message along to the engineers.

(00:59:29):
the Java platform group, and I came from Sun as well, so I know the whole cultural history.

(00:59:34):
Yeah,

(00:59:35):
the trepidation,

(00:59:36):
the fear,

(00:59:36):
what’s going to happen,

(00:59:38):
it’s going to get destroyed and absorbed into,

(00:59:39):
you need to download SQL Server in order to,

(00:59:42):
not SQL Server,

(00:59:44):
Oracle database in order to install Java JDK.

(00:59:46):
That’s what we thought.

(00:59:49):
But really, it’s been, you know, you don’t know the future, but up to now, up to now, great job.

(00:59:57):
Well, let’s leave it there.

(00:59:59):
Thank you very much.

(01:00:00):
Much appreciated.

(01:00:01):
And hopefully in 2026, Crete, baby.

(01:00:04):
Yeah.

(01:00:05):
Well, you’re welcome to join us.

(01:00:07):
Cool.

(01:00:07):
Thanks.

(01:00:08):
Thank you, my friend.

(01:00:09):
We’ll talk to you soon.

(01:00:10):
Yeah.

(01:00:11):
Thanks.