Tales from the jar side: A Groovy Podcast, Gradle in IntelliJ, Ignoring Java 20, UConn basketball, I wrote a (bad) joke, and Tweets and Toots
After my failed attempt at growing vegetables this year, I've decided to become a music producer, because now I have a ton of sick beets. (rimshot)
Welcome, fellow jarheads, to Tales from the jar side, the Kousen IT newsletter, for the week of March 26 - April 2, 2023. This week I taught the third week of my Spring and Spring Boot in 3 Weeks course on the O’Reilly Learning Platform. I also did a Groovy Podcast, and I taught a session of my friend Jonathan Johnson’s Cloud Native course at Trinity College.
Regular readers of (and listeners to, and now video viewers of) this newsletter are affectionately known as jarheads, and are far more intelligent, sophisticated, and attractive than the average newsletter reader (or listener, or viewer). If you wish to become a jarhead, please subscribe using this button:
The Groovy Podcast Re-emerges From The Depths
It’s been a while (literally months), but we finally did another episode of the Groovy Podcast. Here’s the YouTube version:
My guests were Graeme Rocher (one of my personal heroes) and Jen Wiese from OCI. The occasion was that February was the 15th anniversary of Grails 1.0. I know that was six weeks or so ago, but it took that long to get our scheduled coordinated.
Graeme was the head of the Grails framework team from the beginning until recently, and helped form the Micronaut team. Jen was one of his co-workers at OCI when they funded much of the development work on Groovy, Grails, and Micronaut, and now is a key player in the Grails and Micronaut Foundations, the non-profits that helps fund both projects.
I really enjoyed talking to Graeme about the history of Grails and Micronaut. I asked him about a rumor I’d heard, which was that the original name of Grails was supposed to be Groovy on Rails (named after the existing framework Ruby on Rails), but no less a person than David Heinemeier Hansson himself (often referred to as DHH, and creator of Ruby on Rails), told them they couldn’t do that, so they just shortened it to Grails. Graeme confirmed the story, saying they still have the “cease and desist” email from DHH, which incidentally confirms everything we’ve learned about DHH since then.
Another Gradle Video
I made a Gradle video this week with an odd title: Fix your Gradle IntelliJ Code Assist in One Step:
The fix is a really trivial one, and we’re talking about a very specific use case which very few people will care about, but I figured it out this week and thought I’d share it.
Here is a snippet of a Gradle build file (using the Groovy DSL) loaded into IntelliJ:
You see how the useJUnitPlatform
method is greyed out and underlined? That means IntelliJ can’t tell where it comes from. (The same is true about the maxParallelForks
property, but for some reason that’s not in grey.) The problem is highlighted in grey, which is a “hint” from IntelliJ says “Task it →
”. That means IntelliJ understands that this is a Gradle Task
, but it doesn’t understand that it’s specifically a Task
of type Test
, which has those methods.
I can fix this by replacing the first line with simply “test
”:
Now IntelliJ understands that this is configuring a Test
task. The problem now is that this is eager configuration, meaning the Test
task is configured even if you don’t plan to run it. The first approach is lazy
configuration, which is preferred, meaning it’s only configured if you ask for it.
It turns out, however, that there’s an easy way to fix the IntelliJ problem even in lazy configuration. There’s an overload of the named
method that takes the type of task, so just say it:
Now IntelliJ knows the type, as you can see in the grey highlighted area, and we’re good.
I mean, this is seriously obscure, but if you have that particular problem, it’s a really easy one to fix. I was a bit embarrassed that it took me so long to realize how to fix the problem, but rather than keep it myself, I made a very short video about it. I’ve already gotten one comment that said thanks, so there was at least one person suffering from the same issue.
What About Java 20?
You might have noticed that on March 21, Java 20 was released. My own sense of symmetry really wanted Java 19 to come out on September 19, but no, it was September 20th. Then Java 20 should have come out on March 20, but nope, this time it was the 21st. Java 21 is now officially scheduled to come out on, you guessed it, September 20th. Grr. That always reminds me of this meme image:
The caption is, “Some men just want to see the world burn.”
Anyway, since this newsletter is called Tales from the jar side and I’m a Java Champion and everything, you might be wondering why I didn’t say anything about the release. Here’s the basic reason, taken from the official OpenJDK page of the Java 20 release:
Every single JEP (Java Enhancement Proposal) has either the word Incubator or the word Preview on it, meaning none of them are ready for prime time. That’s the entire set of new features. In other words, if you’re not interested in incubating or preview features, which may change at any time between now and their official release, there’s nothing new in the Java 20 specification.
Sure, I read through the topics, and attended a presentation from Oracle, and installed it on my machine, but honestly, there’s no there there. It’s hard enough to get the community to move to Java 17, which was at least an LTS (Long Term Support) version, much less getting companies to adopt preview features. I can’t imagine anyone other that people like me who do presentations on this stuff to bother with this version at all.
The biggest feature coming, and the one that gets a lot of press, is Virtual Threads. That’s scheduled to be released in time for Java 21, which is also an LTS version. In other words, September will be a big release month for Java. Wake me when that happens.
NCAA Tournaments
I’ve lived in Connecticut since 1988 and even married a local girl, so I’m from here as much as anywhere. This state is sandwiched between New York City and Boston:
As sports fans, we’re pretty evenly divided between fans of Boston teams (Patriots, Red Sox, Celtics) and New York teams (Giants, Yankees, Knicks), with a handful of sad Mets or Nets fans scattered around randomly. The one thing, however, that everyone in the state agrees on is UConn basketball.
The men’s teams are good at random intervals. They started getting good in the 1990s under coach Jim Calhoun. I met him once, long ago, and I thought we took a picture together, but I can’t find it anywhere. I do have this signed photo, however, which was a gift on my 30th birthday. That puts it some time in 1992 (whoa):
At the end of the 1990 “Dream Season,” my wife and I went to Gampel Pavilion on the UConn campus to see the broadcast of their game against Clemson in the Sweet 16. We were there (along with a few thousand other screaming fans) when Scott Burrell hit Tate George on a length of the court pass and George hit a miracle buzzer beater to win by 1. It was awesome, and the fact they lost on a similar shot to Duke in the next round (in overtime no less) didn’t diminish it.
UConn won the title in 1999, then again in 2004, 2011, and even 2014. Every one of those titles was unexpected, which brings me to real UConn basketball program — the women’s juggernaut under Geno Auriemma.
Those women’s teams have been phenomenal since about 1990. They’ve had a succession of incredible stars, including Rebecca Lobo, Nykesha Sales, Jenn Rizzotti, Svetlana Abrosimova, Shea Ralph, Sue Bird, Maya Moore, Breanna Stewart, and many others, including the incomparable Diana Taurasi, who won a national title every year she was here from 2001 to 2004.
The women’s team is also famous for having the two longest winning streaks in basketball history. They won 111 in a row (seriously) from 2014 to 2017, after winning 90 in a row from 2008 to 2010.
My favorite team was in 2001-02. That team is still widely considered to be the best women’s basketball team in history, with a starting five of Sue Bird, Swin Cash, Asjha Jones, Tamika Williams, all seniors, and sophomore Diana Taurasi. Wow, that was a fun team to watch, if you like watching brilliant players simply destroy everybody. They went 39 - 0 and it was never close. Heck, they won the title game by 12, and that was the only tournament game they won by less than 20 points. To give you an idea how powerful that team was, the four seniors were drafted 1, 2, 4, and 6 in that year’s WNBA draft, and the sophomore Taurasi was arguably the best women’s player of all time.
That’s why it was so bizarre when they actually lost in the Sweet Sixteen this year, which is the first time they hadn’t made the Final Four since 2007 (!). This is the first time I can remember rooting for the men’s team in the championship game when the women had long been eliminated.
All this is a way of saying we know women’s basketball in Connecticut, which brings me to the phenomenon of Caitlin Clark at Iowa. She’s simply brilliant. The comparisons with Taurasi are inevitable. Clark is a better shooter (she literally has Steph Curry-like range) and is much faster, but Taurasi was the better rebounder. They both have incredible instincts and almost always make the right play. They also both are excellent passers. Just the fact that it’s a worthy comparison is amazing.
I’ve tried to watch Clark when I could, but you know how women’s coverage is handled by the major networks. Outside of isolated pockets of fans (like in Connecticut, Tennessee, South Carolina, Stanford, and a few others), there isn’t nearly the same audience for women’s basketball as there is for men’s. But I wasn’t going to miss watching her chance this year to take on the undefeated South Carolina team. in the Final Four Friday night.
Spoiler alert: Iowa somehow won, with Clark scoring 41 points for the second straight game. Here are the highlights if you want to see them:
Later today, Iowa faces LSU for the National Championship. I hope she plays well, but a lot of people are considering the win over South Carolina as the real championship. We’ll see. If you were ever going to watch a women’s basketball game, though, don’t miss Caitlin Clark in her (college) prime.
Btw, this tweet pretty much says it all:
I should probably wait to send out this newsletter until after the championship game is over, but nah. I’d rather just send it and watch the game. 🏀
Hey, I Wrote A Joke
Most of my jokes are collected from ones I hear, but this one is original. Feel free to blame me for the results if you retell it:
I told my wife that, by definition, all her stories are Old Wives’ Tales.
She then told me the one about The Husband Who Thought He Was SO Funny He Wound Up Sleeping On The Couch.
Sadly, I was already quite familiar with that one.
I’m not exactly sure where to put the rimshot, but there ought to be one in there somewhere.
Tweets and Toots
Confession: I got locked out of Twitter for almost two days this week. After recording the Groovy Podcast (see above), I posted about it in my other account there (the one called, naturally enough, @GroovyPodcast). When I logged in under that account, it prompted me to set up two-factor authentication, which I did using my Google Authenticator. So far, so good.
When I then tried to log back in under my regular account (@kenkousen), it prompted me for the current number from my Google Authenticator, but this time there was no entry available. I don’t know what happened. I know there was one on my old phone, and I ported everything over at least a year ago, but somehow that entry got lost. So I couldn’t log in, and I couldn’t fix it.
I contacted support without much hope, but they did get back to me. Of course first they sent me a link to their form with “try this, you idiot” recommendations, but I was already past all that. Then they asked me to verify who I was, and I got past that, too. Then someone emailed me asking me to log in, at which point they would turn off 2FA, but an hour later they still hadn’t replied back.
The next day started they whole chain again, but lo and behold, they finally turned off 2FA and I got back in. I’m still going to leave, of course, as Elon does progressively stupider and stupider things with the platform, but there are still a lot of people I follow there and I don’t want to miss them.
April Fools?
To illustrate my attitude about the platform and its owner, here’s what I tweeted yesterday:
I’m still surprised nothing happened. From what I gathered, even the plan to remove legacy blue checks from non-paid subscribers fell through, or at least got delayed. I wonder if Elon simply forgot it was April Fool’s. He is an idiot, after all, as he has made abundantly clear over the last few months.
Trans Rights
This was worth retweeting:
That’s the episode with Lal, the android Data created in Season 3, Episode 16 of Next Generation, called The Offspring. So Star Trek was “woke” at least as far back as March of 1990, though honestly it was that way from the beginning.
Trans rights are human rights.
Dad Joke
I was tempted to use that for this newsletter’s subtitle this week, but I think I’m already on thin ice with my earlier joke above.
Fun With Unicode
Paul King put this together:
Yup. That’s a “Hello, World!” program using a wave and the planet icons. Perfect.
“Tungsten Arm” O’Doyle Base-Ball Card
Somebody finally prepared this:
That’s another reference to the classic tweet about Shohei Ohtani and Mike Trout on the Angels:
The Angels are supposed to be much better this year, but on opening day Ohtani pitched six innings and gave up zero runs with 10 strikeouts. Of course the Angels lost anyway, 2 - 1.
Child of the Lizard King
With a paid blue check, you can still impersonate anyone, at least until Twitter disables your account. I liked this one:
I still like it when people call him Space Karen, but that’s a good one, too.
Not Today, Satan!
Sounds like a good time.
Trump Indictment Coming
I may or may not comment on that when it actually happens, but this was funny:
Yup. Snicker.
Can’t Wait To Try This
Oh, that’s inspired.
A Collective Noun
And finally, we have a new collective noun:
Works for me.
Have a great week, everybody. :)
The video version of this newsletter will be on the Tales from the jar side YouTube channel tomorrow.
As a reminder, you can see all my upcoming training courses on the O’Reilly Learning Platform here and all the upcoming NFJS Virtual Workshops here.
Last week:
Week 3 of Spring and Spring Boot in 3 Weeks, on the O’Reilly Learning Platform
Groovy Podcast with the Graeme Rocher
This week:
Week 1 of Android Development Bootcamp, on the O’Reilly Learning Platform
Devnexus conference in Atlanta, GA