Tales from the jar side: My talk with Venkat at NYJavaSIG, an online Spring webinar, More Elon idiocy, the legend of John Mastodon, and Amusing posts
If you're afraid of being trapped in a small room with Santa, you may suffer from Claustrophobia. Avoid mistletoe and seek help immediately.
Welcome, fellow jarheads, to Tales from the jar side, the Kousen IT newsletter, for the week of December 11 - 18, 2022. This week I taught the second week of my Spring and Spring Boot in 3 Weeks course and my Managing Your Manager course on the O’Reilly Learning Platform, and an NFJS Virtual Workshop on Gradle Concepts and Best Practices. I also gave a presentation at the New York JavaSIG, and an NFJS online webinar.
Regular readers of (and listeners to) this newsletter are affectionately known as jarheads, and are far more intelligent, sophisticated, and attractive than the average newsletter reader (or listener). If you wish to become a jarhead, please subscribe using this button:
I know I make that claim every week (about how smart, sophisticated, and attractive jarheads are), but I’ve met at least some of you and it’s been true in every single case. Just sayin’.
As a reminder, when this message is truncated in email, click on the title to open it in a browser tab formatted properly for both the web and mobile.
NYJavaSIG Presentation and My Talk With Venkat
On Wednesday, I hopped on a train to New York City. I’m based in Marlborough, CT, which you can see from this map is about halfway between NYC and Boston:
(Leave aside for the moment that, according to Elon Musk, I just exposed my own “assassination coordinates”. We’ll get to at least some of his lunacy later.)
I’m occasionally willing to drive to Boston, though I don’t look forward to it. Something about the streets there makes my GPS system weep uncontrollably. I’m almost never happy to drive to New York, however, because the traffic is simply nuts and there’s nowhere to park anyway. Instead, my preference is to take the train — specifically, the Amtrak Northeast Regional — in either direction. I prefer that to the Acela, because though it makes a few more stops, I can upgrade to business class and still save money. Besides, the Acela doesn’t stop in New London, CT, which is where I prefer to board.
The only problem with the train is that the last return time on the schedule each day is only 8pm, and my meeting didn’t end until after that. That meant I needed a hotel in Manhattan, and that gets pricey fast. The bottom line is that I don’t go there very often.
(I finally checked prices of the bus lines from Hartford, and it turns out they’re way less expensive, and they say they have both wifi and power outlets. Maybe I’ll give that a try next time.)
The talk this time was an ambitious one, because while I knew what I wanted to say technically, I was going to try to be funny as well, and that’s always risky. Like most bright people, I’m clever, meaning I react to comments well and do a good job with free association, but I know that’s very different from actual comedy. I can tell jokes pretty well, and I come up with entertaining comments now and then, but I rarely try to plan a running gag ahead of time.
Q: What’s the difference between a comic and a comedian?
A: A comic says funny things, while a comedian says things funny. That makes me (… wait for it …) a software developer. <rimshot>
This time was going to be different however. I think it’s best explained by the abstract I submitted for the talk, whose title was:
Functional Programming in Java, Groovy, and Kotlin, or
I Gave My Talk to Venkat, and He Messed It Up
Back in March I was scheduled to give a talk at the NYJavaSIG about the functional features of the Java, Groovy, and Kotlin programming languages. I intended to discuss basic streams, lambdas, and method references in all three languages, and then look at more advanced functional features like trampolining, closure composition, and memoization.
Unfortunately, I was unable to attend, and I asked the inimitable Venkat Subramaniam to fill in for me, which, I am assured, he capably did. I gave him my slides and my code and expected him to do the speaker equivalent of presentation karaoke, but no, he threw everything away and live-coded it all instead, as he does.
I'm back now to clean up the mess he left behind. Please come and see as I go to great lengths to avoid becoming the Java speaker equivalent of Wally Pipp.
In case you don’t get the Wally Pipp reference, he played baseball for the New York Yankees from 1915 - 1925.
Here’s the good part:
According to the most popular version of the story, Pipp showed up at Yankee Stadium that day with a severe headache, and asked the team's trainer for two aspirin. Miller Huggins, the Yankees' manager, noticed this, and said "Wally, take the day off. We'll try that kid Gehrig at first today and get you back in there tomorrow." Gehrig played well and became the Yankees' new starting first baseman. This story first appeared in a 1939 New York World-Telegram on Gehrig's career, in which Pipp was interviewed. Pipp was later quoted to have said, "I took the two most expensive aspirin in history."
Rumor has it that he was hung over, which gave the manager a chance to try out Lou Gehrig at first base. Gehrig then played 2130 consecutive games and retired (due to ALS, also known as Lou Gehrig’s disease, but that’s a different story).
In other words, taking a day off from the lineup can have serious negative consequences. I included that example in my slides before going on to code examples.
Later, I brought up another example of a player giving way to a talented backup: Drew Bledsoe, QB of the New England Patriots from 1993 - 2001.
In Bledsoe’s case, in the second game of the 2001 season, he took a clean but brutal hit while running for the sidelines. He suffered a concussion and a lot of internal damage. In came his backup, a little-used sixth-round draft pick in his second year named Tom Brady. Over the next twenty years, after seven Super Bowl wins and three MVP awards, Brady is still playing. Bledsoe got traded to Buffalo and eventually to Dallas and had a decent career, but he was no Tom Brady.
I spent some time experimenting with ChatGPT this week, the OpenAI chat client that’s been making the rounds recently. I talked about that in my last newsletter, but only gave a few examples. I also asked it about the Wally Pipp and Drew Bledsoe stories, and it knew those. So then I asked what to do about it:
Yeah, okay, get back on the horse and all that. Believe in yourself. Stay positive. Yeah, I believe I’m positive if I let Venkat keep doing my talks, I’ll soon be forgotten. Got it.
Of course, ChatGPT isn’t always right. I asked it about my friends Frank Greco and Jeanne Boyarsky, who help run the NYJavaSIG, and it didn’t know who they were. Then I asked it about Venkat:
Of course it knew Venkat, though some of that seemed a bit off. So I asked it about myself, and got:
Oh, hey, it’s good to be recognized, though I was very surprised to discover I had a PhD in Physics from Maryland. I lived in Maryland (specifically, Owings Mills, just outside of Baltimore) as a kid, but I’ve never been to the university. I also know very little about “data engineering,” whatever that is. But on the whole, I’ll take it.
Update: I just asked it again, and got:
I'm sorry, but I do not have information on any specific person named Ken Kousen. Could you provide more context or details about the person you are asking about?
Oh well, so much for that.
(Actually, the third time I asked it gave a better answer. Go figure.)
I added one more Wally Pipp-like example:
Carlotta Guidicelli was the resident prima donna at the Paris Opera House in 1881, when for some strange reason she started croaking like a frog onstage during a production.
She was replaced by a chorus girl named Christine Daaé, who sang Think of Me and became a star. (Yes, that’s a Phantom of the Opera reference, but the meeting was held right in Times Square, near Broadway).
Just to make things more interesting, about 15 minutes into the talk I got interrupted by a phone call. I said, “I have to take this,” and answered. It was, of course, Venkat Subramaniam, asking why I was giving the same talk he’d already delivered. The call was planned, of course, and the idea was for him to say he was calling to congratulate Rodrigo Graciano on becoming a new Java Champion.
As it happened, Rodrigo wasn’t in the room at the time. Sigh. We bantered for a few minutes and then I went back to the talk. Rodrigo came back after that and we gave him a hard time for missing the call. Ten minutes later, however, Venkat called back (which wasn’t in the plan at all), and therefore got to congratulate him live. It was great.
The talk, incidentally, went really well, both in person and online. We had a good crowd and there were some excellent questions. I enjoyed it. If you’re interested, a recording of the live stream is available on YouTube in the NYJavaSIG channel:
Spring Update Webinar
On Friday, I gave an online webinar on the recent changes to Spring and Spring Boot. I prepared a handful of slides for that, but mostly it was a code-based talk. If you want, you can watch that here.
The points I made basically were:
The changes in Spring 6 and Spring Boot 3 weren’t really dramatic. The big issue was the move to Java 17 support, and the upgrade of the libraries to Jakarta EE versions 9 or 10.
The only API change that affected me was the new declarative Http Interface support. I mentioned something about that last week, but now that I’ve had a chance to play with it, it’s really nice. I’ll be including that in my future training courses.
They did add some improvements in the Observability area involving a tool called Micrometer, but I don’t know that stuff so I couldn’t say much about it. I recommended interested people check out videos by Craig Walls or Dan Vega for that.
The biggest attraction was the support for the GraalVM native image compiler, which makes for a dramatic presentation.
To show that, I built a simple application that accessed the astronaut data at Open Notify, grouped it into a map of spacecraft name to number of astronauts aboard each, saved the results into a database, and included a simple controller to see the results. The code is in this GitHub repository, in two branches. The main branch uses Java records for the parsed JSON data, but not much else from Java 17. The sealed branch adds sealed classes and switch expressions as well, but wasn’t ready in time for the talk.
The fun part, of course, was the GraalVM support. I made sure I had the latest GraalVM JDK installed and ran the new nativeCompile Gradle task ahead of time. That took about five minutes to generate a 150 meg executable (!). When I ran the application without that, it took just under 5 seconds to start up. When I ran the native executable using the nativeRun task, it only took about a tenth of a second. Basically as soon as I hit the enter key, it was running.
If you’re interested, check out the repo linked above. That doesn’t have anything explicitly GraalVM related, because none of that affects the code, but it all worked. You can watch the video to see it run if you like. That demo is about ten minutes from the end.
Elon: One of the Worst Self-Owns of All Time
I really didn’t want to talk about Elon Musk this week, because it’s been a whole seven days since the last newsletter and that’s an eternity in Elon World. Suffice it to say that he’s playing Calvinball with Twitter, making up the rules as he goes along, all in order to do whatever he wants. He has also abundantly demonstrated that he is an incredibly thin-skinned narcissist, who reacts with punitive hostility to any and all criticism. He’s giving billionaires a bad name, though I must admit, most billionaires don’t need any help doing that.
Instead of recounting his bizarre behavior this week, see this article at VICE or this post at Daring Fireball if you’re interested:
All of that came out before Twitter announced on Sunday (during the World Cup finals, which were awesome) that you’re not allowed to link to any other social media site from your own on Twitter account. I did enjoy this take on that:
Instead, let me illustrate a different point, starting with the value of NFL teams. Every year in August, Forbes magazine publishes the “valuation” of each NFL team, based on market, stadium deals, and brand. You can find a table at Wikipedia which shows all 32 teams, in descending order:
going all the way down to the Cincinnati Bengals, whose value is a paltry $3 billion. I took that data, copied it to a spreadsheet, and summed up the first column. The result gave me a total of $147 billion, which sounds like a lot.
Elon used to be the richest man in the world, though now he’s apparently fallen to second. According to this article, his worth is down to only $176.8 billion, though I imagine every week it’s still dropping.
To put that number in at least some kind of perspective, that means he could buy every single team in the NFL — not just one, but all 32 of them — and still have about $30 billion dollars left over, which is more money than any of us could spend in a lifetime. Through a combination of incompetence, stupidity, and outright malice, he’s currently running Twitter into the ground. When he eventually cries poverty and declares bankruptcy for the company, remember that he could fund every debt it has for the next 50 years and never even notice the lost money. $100 billion is a LOT.
To adapt the immortal words of Ivan Drago in Rocky IV, if Twitter dies, it dies.
If Twitter dies, Elon wanted it to. So far he’s done everything possible to kill it. Given what it’s becoming, good riddance.
Somehow, I still haven’t had my account suspended. My latest attempt to get kicked off was this tweet:
Somehow that still wasn’t enough, so I’ll have to try harder, I guess. I’m sure if I was woman or an underrepresented minority, I’d be gone already, but as an older, white male, I imagine I’m not important enough to delete yet. Or maybe there’s too much of a backlog to get around to me. We’ll see soon enough.
The only downside to leaving is that I still follow a lot of interesting people there, and I include many tweets in this newsletter. That will all change soon. It’ll be sad, but at least I have no illusions about who is responsible.
Amusing Posts
Let’s grab a few of those tweets before the end.
Venkat and Me, Forever Linked
Three Java books together, two by Venkat and one by me, because of course he finished two books in the time it took me to write one.
(Btw, PragProg has a mastodon account already. :)
Tis The Season
I haven’t seen the new Avatar movie yet, but I expect we’ll get around to it this week or next.
Danger Ahead
Trust the Corps
Whoa, a Babylon 5 joke. Awesome.
Stop!
Ruth Buzzi is 86 and still a national treasure.
World Cup Finals
The duel between Argentina and France was incredible. If you missed it, go watch a summary video. Argentina raced out to a 2 - 0 lead, and for the first 79 minutes of the match it dominated. Then France woke up, and managed to score two goals in about 90 seconds to tie. Both overtime periods were tense affairs, with opportunities for both sides, but in the end it came down to penalty kicks, which Argentina won.
The tweet is about the absurdity of deciding a soccer match that way, but it was very fun to watch.
John Mastodon Lives
As this article recounts, a columnist writing about the chaos at Twitter saw that the @joinmastodon account had been banned by Elon. The account name was accidentally misread by the columnist to think it was about somebody named John Mastodon, the founder of the Mastodon platform. Mastodon people have been running with that ever since.
There’s way, way more. Just google it for some examples.
One Really Big Stone
Finally, there was this excellent observation:
Hard to argue with that.
Have a good week, everybody. :)
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:
Spring and Spring Boot in 3 Weeks (week 2), on the O’Reilly Learning Platform
Managing Your Manager, ditto
Presentation at the NYJavaSIG, Wednesday evening
Gradle Concepts and Best Practices, an NFJS Virtual Workshop
The Big Jump: Spring 6 and Spring Boot 3, an NFJS webinar, Friday 1pm EST
This week:
Spring and Spring Boot in 3 Weeks (week 3), on the O’Reilly Learning Platform
That’s my last class of the year. I still have to turn in my tiny updates to the copyedit of Mockito Made Clear, but then I can actually relax for the holidays. Sweet.
The <rimshot>s did not come through. Did you see the picture of Elon and Jared Kushner in the Saudi Arabia box at the World Cup? That says several thousand words.