Tales from the jar side: Giving the same talk repeatedly, Hamilton but not that Hamilton, and I made a music video
I had a lot of fun this week presenting, watching, and creating.
Welcome to Tales from the jar side, the Kousen IT newsletter, for the week of August 16 - 23, 2020. This week I taught classes in Functional Java and Spring MVC, both on the O’Reilly Learning Platform. I also gave a presentation for the Utah Java Users Group on Thursday evening and as an NFJS Webinar on Friday at lunch time.
Getting A Lot Of Mileage From A Talk
A few weeks ago I described in this newsletter how the remnants of Tropical Storm Isaias knocked out both my power and internet access for about a week. We lost power just as I was finishing my presentation at the London Java Community, entitled Functional Programming in Java, Groovy, and Kotlin. I was dropped from the call at right about the 1 hour mark, and rejoined about 10 minutes later. It turns out the whole presentation was recorded on their YouTube channel.
It turns out that presentation was pretty popular, because other groups have welcomed it as well. This week I gave the talk (with some different examples) for the Utah Java Users Group, who also have a YouTube channel, called UJUG.
But wait, there’s more! On Friday, I was scheduled to give a webinar at lunchtime (at least in my time zone) for the No Fluff, Just Stuff conference tour, entitled Functional Modern Java. I decided to do a variation of the same talk one more time, again with different examples, which focused more on Java. You can find that version on the NFJS site. Click on the Watch Replay button if you want to see it.
As it turns out, I’ll also be giving another variation of it in September, for the Madrid Groovy Users Group. I don’t have a link for that one yet, but I’ll add it to my newsletter when it’s available. Of course in that one I’ll emphasize the Groovy parts.
I used to feel guilty giving the same talk at multiple conferences (back when we used to be able to go to conferences). Now I just tell the organizers about it and let them decide, and nobody seems to mind so far. I do make sure to update it every time. My overall philosophy basically comes down to, nobody is listening anyway, so just say what you want. :)
(I do have one friend — who I know also reads this newsletter — who attended several of the talks I just listed. He doesn’t seem to mind the repetition either. In fact, he did me a great service during one of them. I always do a cat pictures demo (after all, what’s the point of doing talks if you can’t do a cat pictures demo?), and he was able to verify ahead of time that it was going to be safe, i.e., all the downloaded pictures were going to include actual cats. Thanks, Bill!
My friend isn’t Bill the Cat, of course. He’s Bill the Fly. But the association in this case was inevitable.)
If you’re interested, you can find all the code in this GitHub repository, where I point out in the README file that the original version of the talk goes back to the JavaOne Conference from October, 2018, and I gave another version of it at DevNexus in February, 2020. In fact, this was the last talk I gave at the last conference I attended before the world shut down.
Just for fun, here is a Groovy example from the repository. It doesn’t have anything specifically to do with functional programming. I just use it to illustrate metaprogramming, which is a way to modify a library during execution time.
This demo adds a pirate() method to the String class that accesses a web service online and translates text into pirate speak.
import groovy.json.JsonSlurper
String.metaClass.pirate = { ->
String key = new File('pirate_key.txt').text
String base = 'http://api.funtranslations.com/translate/pirate.json?'
String qs = "text=${URLEncoder.encode(delegate, 'UTF-8')}&api_key=$key"
String txt = "$base$qs".toURL().text
def json = new JsonSlurper().parseText(txt)
json.contents.translated
}
// Demos:
println "Hello, World!".pirate()
println "How are you today?".pirate()
println "Please fill out your session evals".pirate()
println "I'd like to add you to my professional network on LinkedIn".pirate()
The results are:
Ahoy, World!
How be ye today?
Please fill out yer session evals
I'd like t' add ye t' me professional network on LinkedIn
Note I paid $5 for that service this month, so it can’t be said I don’t invest in my profession.
Hamilton, but Margaret, not Xander
Someday I’ll get the music from Hamilton out of my head, but today is not that day, nor has any day been that day from the first day I watched the recorded performance at the beginning of July. At least this week I had a decent reason. Software engineering pioneer Margaret Hamilton turned 88 this week. Here’s the iconic picture of her from her Apollo days as posted by one of the astronomers I follow on Twitter:
Of course, I had to add my own comment:
All I can say is, sorry (not sorry).
In case you haven’t seen the show Hamilton, Jimmy Fallon and The Roots did a great version of the song Helpless with the original Broadway cast:
That still makes me smile every time.
Magnus the Magnificent
I haven’t talked about my favorite online spectator sport for a few months, but it made the news again this week. Back in April, when the whole world went into lockdown, chess World Champion Magnus Carlsen responded by forming the Magnus Carlsen Chess Tour, a series of four online rapid/blitz tournaments that culminated in the finals this week. As this CNN article said, the total prize fund was $1 million, the highest ever for online chess, and over 70 million people (!) watched the events online.
The finals consisted of the four players who qualified from the previous events. The championship match came down to a series of games between Magnus and Hikaru Nakamura. The format was to play a set each day that consisted of four rapid games (15 minutes/game) followed by two blitz (5 minutes/game) if the rapid results were tied, followed by a single “Armageddon” game if necessary. In the Armageddon game, White had five minutes to only four for Black, but Black only had to draw. They repeated that each day, in a best-of-seven format, so the first person to win four days won the title.
This image gives you an idea about how the finals went:
The individual day scores don’t matter — only who won that day, which is highlighted in the figure. Nakamura won day 1, then Magnus day 2, and back and forth they went every day after that. Magnus finally had a dominant day on Wednesday, but that still only counted as one day. Day seven consisted of four hard-fought draws in the rapid games, then Nakamura won the first blitz game and Magnus came back (yet again) to win the second. The entire tournament therefore came down to the last Armageddon game, which was very close but Magnus managed to draw with Black. That meant he won the whole thing by the narrowest margin possible.
I didn’t get to see much of it, since I was so busy this week, but I tried to keep tabs on everything. One of the people I sponsor on Patreon is Grandmaster (GM) Daniel King, who makes videos on his PowerPlayChess channel on YouTube. He had a daily update which I really enjoyed. Check out his videos if you’re at all interested.
Just so you know, the games on the final day were the highest rated television program in Norway. Also, there’s a saying around chess that’s a refactoring of an older one about soccer:
Chess is a game where two people move little figures up and down a board and in the end Magnus wins.
Magnus came very, very close to losing. The match, and even the whole tournament, was really fun. :)
We made a music video
Finally, in case you’re interested, my wife and I made a video as well. The ongoing pandemic has forced our local church, First Church in Glastonbury, CT, to use an online format as much as possible. This means that for solos and other choir-related activities, they need people to contribute from home.
This week was our turn. The result is our version of The Prayer:
Regarding the logo on my shirt, one of the principles I live by is that whenever my team comes back from down 28 - 3 late in the third quarter to win a Super Bowl in overtime, I buy the associated shirt. I even wear it on occasion, as in this video. For my friends from Atlanta, I’m sorry.
(I’m not actually sorry. Just know that as amazing as that win was, it still doesn’t quite make up for the loss to the NY Giants that ruined our perfect 2007 season. I’ll never get over that. So I feel your pain, just different.)
The instrumental music in the video is from a backing track I purchased at Karaoke Version. We recorded the audio some time ago, but made the video this week, and the music director mixed everything together. I downloaded the complete service recording from YouTube and trimmed it to the version you see above.
The Wikipedia link is about the version of The Prayer performed by Celine Dion and Andrea Bocelli, which won a bunch of awards back in 2000. Celine also released a live version with Josh Groban in 2008, which also did well.
For those who have heard the song before, you might recall that Bocelli hits the high note at the end and holds it for about an hour (as he does). I’m afraid I haven’t had that note myself for a number of years, so my wife took the high note instead and I took her part. She’s nice like that.
It’s a good thing that all my videos on the O’Reilly Learning Platform were made in an actual recording studio managed by people who knew what they were doing. I’m able to use programs like Screenflick or ScreenFlow, but that’s much simpler. I’m still in awe of people like Szymon Stepniak and Dan Vega who produce coding videos on a regular basis, or any of the other creators on YouTube that I sponsor via Patreon. The amount of time and effort they spend doing what they do is incredible.
Sometimes people ask why I don’t maintain a YouTube channel of my own. This week reminded me how much effort that would take. It’s not like I don’t already crank out about a thousand words a week talking about myself or anything. Making videos would be like actual work.
Last week:
Functional Java on the O’Reilly Learning Platform
Spring MVC, ditto
UJUG presentation and NFJS webinar on Functional Programming in Java, Groovy, and Kotlin
This week:
No classes. Seriously. It’s been a while since that’s happened, but it means I can finally complete the version of my Managing Your Manager book that can go out to early reviewers.
Recording videos for a course on the Mockito testing library. I’ll say more about that in future newsletters.
We’re actually scheduled to do a Groovy Podcast this week, on Wednesday at 1pm EDT. It’s about time.