Tales from the jar side: Spring training, Groovy 3, and other updates
In which your humble narrator discovers that it gets cold in Wisconsin in February, among other staggering revelations
Welcome to Tales from the jar side, the Kousen IT newsletter, for the week of Feb 9 - 16, 2020. I spent this week in central Wisconsin, teaching a couple of Spring framework classes. I also updated my existing repositories to use the new Groovy 3 release, and did a minor update on my home page.
Baby, It’s Cold Outside
I live in Connecticut, so I know something about cold, but not central Wisconsin cold.
Come to Wisconsin! In February! It’ll be great!
The car also thought it was on the chilly side.
Does it look like it’s saying “it’s -23 Frickin’ degrees out,” or is it just me?
It warmed up when I got on site.
Oh, that’s much better
To be honest, that was just one day. Most of the rest of the week it was in the teens and twenties, and even made it above freezing briefly. In honor of Valentine’s Day, I did compose this little ditty:
Roses are red
They’re sold by the dozen
Please bring a spatula
Cause my a** is frozen
To this leather car seat
A questionable decision by the rental car company at best
I know what you’re thinking: enough complaining about the weather. I should just …
The cold never bothered me anyway. Yeah, right.
One other travel note: it’s a good thing I decided to get to my destination by flying directly to Minneapolis and driving the three hours to Wausau. A snowstorm hit the area last Sunday, and the airport in Wausau shut down, as tiny airports like that sometimes do. Two of my students who were flying in from Pennsylvania had to divert to Appleton and drive from there. I’m glad I’d planned that ahead of time. That made for a long drive back Friday evening, but without any problems.
As a frequent traveler, I have the works — TSA PreCheck, Global Entry, and Clear — so I managed to sail through security. If you pay enough and give up enough of your privacy, you can bypass the pointless kabuki theater that represents security screening at the airport. If that’s not a metaphor for today’s America, I’m not sure what is.
Spring Training (Not The Baseball Kind)
The courses themselves were unusual. My history with the Spring framework goes back to roughly 2007, so I’ve been both using it and teaching it for a long time. Still, the framework is huge, and there are many parts of it I haven’t used myself. I like to refer to Spring as a Swiss-Army Chainsaw, because it does everything and it’s too big to be just a Swiss-Army Knife.
Back in the early 2010’s I even managed to get Spring certified, which was required if I wanted to teach Spring courses for SpringSource, the company that backed the framework (before they became Pivotal, but that’s another long story). They made me travel to Philadelphia and sit in a week-long official course taught by a certified instructor. Given how much I already knew, the class was interesting for probably about four hours over the five days, but at least I did it. I took the test the following week and passed, so I added that to my resume. You might have noticed I tend to collect credentials, and I’ve always been a good test taker, but I probably wouldn’t have gone through that process if it hadn’t been necessary.
I also learned a lot about Spring in the past because of my experience with the Grails framework. Grails for much of its lifetime was based on both Spring and Hibernate, so in addition to being a useful topic to learn, it also demonstrated some best practices on how to work with Spring and Hibernate together.
All of that is my way of saying I thought I was prepared for my classes this week. For this client, rather than try to schedule two three-day classes, given the number of students involved, we decided instead to deliver two two-and-a-half day classes packed into a single week. The company put the more experienced students into the first group (with a couple of exceptions) and more beginner-level people in the second group.
As it turned out, the experienced group was much more experienced than I expected. I still think I added value, but many of the students knew more than I did, at least regarding certain specific topics. Since my oft-stated goal as an instructor is to be able to completely and correctly answer any question that ever asked of me immediately, that was rather stressful. Don’t get me wrong — I don’t mind when people know more than me. That’s what a good team is all about, and it’s how we all learn. But if I’m the instructor, I feel an obligation to justify my presence and the fact they’re paying me for my expertise. If I don’t know all the answers, what are they paying for?
Obviously, that’s an extreme position and can lead to problems. Rest assured I don’t actually act that way in class. But it’s hard to shake the feelings, and I had to deal with that.
The class went well, though. Sure, there were a few questions I couldn’t answer (grr), but I was glad to benefit from the experiences of a few of the students when they shared it. Best of all, next time those questions come up in a different class, now I can act like I knew the answers all along :)
So I had fun, but the class was more stressful than I had anticipated. The second group was more in line with what I expected. In addition to teaching them the material I had prepared, I was also able to share with them the insights from the previous group, and even give credit to the right people. Both classes went well, but it did make for a long week.
Incidentally, a few of the students knew me from my appearances at No Fluff, Just Stuff conferences, yet somehow they were surprised to discover that I teach these classes. Clearly I have to emphasize during my NFJS talks that I’m available for training classes. I’m just not good at marketing myself (other than in this newsletter).
Regarding the Spring Training pun in the title of this section, yes, we’re now in baseball spring training, too. I normally look forward to that, but this year is different. First, the pace of play problems that dominate baseball are making it more and more difficult to watch. Second, the Houston Astros cheating scandal, and the team’s ham-handed response to it, hurts any enthusiasm I might have had for the game. Then the idiot commissioner proposed changes to the game that included increasing the number of playoff teams, thus devaluing the regular season even more and completely missing what makes baseball great. Lastly, my Boston Red Sox traded away the best player they’ve had in at least a generation for pennies on the dollar for no good reason, and I’m still disgusted with them. I’m having a hard time mustering up any interest in baseball this year. Maybe I’ll feel differently by late summer, but not now.
Home Sweet Home Page
I finally (finally!) got around to making a minor update to my company home page. A few years ago I hired a developer to redesign it, and he used a technology that is now out of date and that I never learned. That means updating my own page is a chore. The page could use a serious re-design, but in the meantime it now at least says something about my Kotlin book and also has a link to this newsletter.
Hopefully you agree about the “rather entertaining at times” comment
If you know anybody who might want a small contractor job to redesign and update my home page, please let me know. I’m especially interested in people who are as different from me as possible, which would probably be some combination of young, LGBTQ+, PoC, non-American, former prison record, left-handed, whatever.
Groovy 3.0
In my last newsletter, I talked about the episode of the Groovy Podcast that my co-host Baruch Sadogursky and I recorded a week ago Friday. Sure enough, the following Monday Groovy 3.0 made its long awaited appearance.
“Fork me on GitHub” sounds like a double entendre, but it’s not supposed to be
In case you’re interested, Szymon Stepniak made a short video describing many of the new features.
I spent some time updating my existing projects to use the new version. That was easy enough, but I ran into trouble working with the Spock testing framework. They do have a milestone version of Spock that compiles with Groovy 3, however, so when I managed to switch to that, a lot of my problems went away. I eventually realized that in addition to the JUnit 5 dependency needed by Spock, I had to add the “vintage” engine as well in order to run my older tests. Eventually I got everything to work in my standard IntroGroovy GitHub repository, so see the Gradle build file there if you want to see an example.
Wrapping Up
My friend Andres Almiray (@aalmiray) is a wonderful developer who is quite active in the Groovy community. Another friend, Mark Heckler (@mkheck), works for Pivotal on Spring topics and has spent a lot of time working with Kotlin and Spring. They got into a minor, relatively friendly dispute on Twitter this week. The conflict (such as it was) came from Andres complaining that Kotlin advocates won’t stop suggesting Kotlin as the perfect solution to everything, while those of us in the Groovy community know it can do as much or more than Kotlin and that’s been true for years.
(Typical joke: How do you know someone is a Kotlin developer? Don’t worry, they’ll tell you, over and over.)
From Andres:
Andres isn’t interested in Kotlin, but Mark kept trying to defend the language and the community.
Mark responded with a reminder about the infamous Streisand effect:
This went back and forth for a while, even incorporating Java. At that point I simply had to contribute:
As the message implies, never mind. Carry on.
This week:
Spring (the framework) training courses in Wisconsin, where presumably they do have Spring (the season). I think last year it was on a Thursday.
A bit, but not much, work on the katacoda system at O’Reilly, which I’ll talk about in a future newsletter.
Next week:
Managing Your Manager online course on the O’Reilly Learning Platform. I also expect to write more of the book of the same name.
Big DevNexus week. I’m giving a full day Kotlin workshop, a talk called Functional Programming in Java, Groovy, and Kotlin, and a talk called Kotlin Recipes. While the Null Pointers band is not performing this year, we are planning to rent a studio and jam anyway. I also will have copies of my Kotlin Cookbook to give away during my talks, at the end of conference raffle, and at the Women in Technology breakfast. I’ll have to take some pictures of those events for next week’s newsletter.
That katacoda system mentioned above (yes, I know, I still haven’t explained anything about that) has been updated to make it easier to translate some of my Kotlin Cookbook recipes into that format. I hope to do more of that this week as well.