Tales from the jar side: My Testcontainers talk, Musk rats out Twitter, and Amusing tweets
My Date: When I'm with a handsome man, I get all nervous and start speaking French. Me: *leans closer* Oh, really? My Date: Yes.
Welcome, fellow jarheads, to Tales from the jar side, the Kousen IT newsletter, for the week of October 30 - November 6, 2022. This week I didn’t have any classes, but I spent a lot of time on a presentation on Testcontainers for the NFJS conference in Austin, TX this weekend, where I gave six talks in all.
Regular readers of this newsletter are affectionately known as jarheads, and are far more intelligent, sophisticated, and attractive than the average newsletter reader. If you wish to become a jarhead, please subscribe using this button:
As a reminder, when this message is truncated in email, click on the title at the top to open it in a browser tab formatted properly for both the web and mobile.
Testcontainers
It’s always hard giving a new talk for the first time. I rarely sleep well before it, and that’s even when I know what I’m doing. When I have to discuss a topic I’m not comfortable about, well, that’s another level of stress.
The biggest problem with the Testcontainers framework isn’t the framework itself. It’s that it ties into dozens of other software products, most of which I don’t know.
What is Testcontainers? You can see the basics in its rather sparse homepage. It’s a Java library (though other languages are available) that automatically downloads Docker images into containers, starts the containers, runs your tests, and then shuts down and disposes of the containers afterwards. It therefore relies on Docker, which is a subject I’ve only been vaguely familiar with over the years.
You can use Testcontainers to run anything that can run in a Docker container, which includes most databases, Selenium / Webdriver-based browser drivers, Kafka streams, and other modules like K3s, Elasticsearch, Nginx, Apache Pulsar, RabbitMQ, Azure, and more.
Here’s the thing: If that sounds mostly like word salad to you, it does to me as well. I don’t know much more about most of those terms than you do. They all fall in the category known a “DevOps”, which is a combination of development and operations, and over the years I have studiously avoided doing anything operations-related. So setting up demos that involved many of those topics was, to say the least, challenging, and certainly stressful.
If I’m so new to this, why did I propose the talk in the first place? I like to call talks like these aspirational, meaning if I know I have to give a talk about a topic, I’ll do the work necessary to learn it. Otherwise who knows when I’ll make the time to do the background work? My job involves a lot of teaching the same set of courses repeatedly, so unless it ties into one or more of those, something else always has higher priority.
Testcontainers is a cool framework, though, and I’ve been interested in it for some time. I’ve used it myself, though not really well. I did what we normally call the “Hello, World” examples, meaning I could make the basic operations work but would struggle with more advanced usages.
But here’s the thing: I thought I had more time. I proposed this talk around this time last year, but the NFJS organizer never scheduled it. At this point, all I had was one NFJS event left this year, so I figured I was done.
Then, to my surprise, it showed up on my schedule for Sunday in Austin, TX. Suddenly I had to put the talk together. I suppose I could have objected and offered to do a different talk, but I didn’t. I figured I really did want to learn this, and since I didn’t have any classes this week, I should be able to pull it together, right?
Of course, that’s before I had oral surgery last Friday, which has been distracting me ever since. That makes it harder to focus. Still, I started assembling examples, read blog posts, dug into the documentation, and wrote sample demos to see what worked — all the normal activities I do to learn a topic I don’t know. I also wasted lots of hours, too, but I’ve come to understand that is a normal part of my learning process, as much as I don’t like it or like to admit it.
The trip to Austin involved some adventures that both helped and hurt. United delayed my flight to IAD (Dulles airport in Washington, DC) just long enough to make me miss my connection. Fortunately there was a later flight to Austin, but that forced me to spend 6 hours in the United club. That turned out to be a good thing, because by then panic had risen high enough to overcome my reluctance and get me to work on my talk. Then the flight from DC to Austin was diverted to Houston because of thunderstorms in the Austin area. We wound up spending about an hour and half on the ground, both refueling and taking on two new flight attendants. Eventually I got to my room in Austin a bit after 1 am, which wasn’t fun. That led to a pretty tired day, though I gave my two morning talks without too much trouble.
By today, when the talk was due, it felt thin. I was honestly worried that I wouldn’t have enough material to fill the 90 minutes of a typical NFJS talk. I was overwhelmingly tempted to do something I rarely do, which was to go meta, meaning I’d explain to people at the talk that I wasn’t really sure what I was talking about in order to lower expectations. That, as you might imagine, is nearly always a bad idea.
In the end, I introduced the talk by pointing out that I was taking a developer’s perspective on Testcontainers. I wasn’t going to be able to get into the depths of how Docker worked or how most of the other technologies that tied into it worked, but I could show them the documentation and my examples, many of which were pulled from the official repository. Then I shrugged (internally) and got on with it.
How did it go? Better than expected, and way better than I deserved. As usual. It’s not like I haven’t been in this position before. I’ve got years of experience handling situations like this, and while I was worried I’d get many questions I couldn’t answer, most of the attendees didn’t have any more experience with it than I did and welcomed a talk that showed the basics, plus guides to other possibilities and suggestions about the future. All my examples worked, too, which was very helpful. Best of all, it’s a good framework, and tends to impress anyone who sees it. I mostly just had to get out of the way and let it sell itself.
In terms of how long I spoke, far from coming up short, I went a bit over, because of course I did. I never expected that, but I was rather easily able to give enough details to fill the time. I feel a lot better about the technology now than I did when I started, and I’m arguably ready to give the same talk next year on the tour. It should get better with repetition.
If you’re interested in my examples, some are in this GitHub repository and more are in this one.
I’m not going to say “if only I had believed in myself, I would have been fine,” because deep down I knew I’d be at least okay, and I got a good group of attendees who were interested in my examples. Knowing all that doesn’t mean I won’t worry as much next time, however.
That leaves me with the hardest part, which is explaining to my long-suffering editor at Pragmatic Programmers why I didn’t finish my Mockito Made Clear book as I promised this week. Oh well. I guess that’s next week’s challenge.
The Twitter Exodus
I talked last week about how Elon Musk’s first few days at Twitter and how they were such a disaster that it encouraged me to make a Mastodon account, like so many other people. Of course, Elon was just getting started.
This week he laid off half the company, and rumor has it developers were evaluated based on the worst possible metric: lines of code. That is, frankly, idiotic. Good developers eliminate lines of code almost as often as they write them. He laid off entire teams of people associated with content moderation, accessibility, user experience, and much more. The result is certain to create tons of little problems that will grow into disasters because nobody is there to put them out.
Then the idea that you could purchase verification for $8/month without actually being verified was announced, which is an epically stupid idea, and, even worse, was scheduled to be implemented Monday before the midterm elections. Gee, what could go wrong? I asked my friends how long it would take for there to be hundreds or thousands of “verified” accounts with names like Joe Biden, or Donald Trump, or especially Elon Musk. Better prepared trolls and swindlers would use stolen credit cards to create those accounts, since that was all you needed to get the blue checkmark. A friend suggested the best account name to choose would be something like “Twitter Support,” so you could send scary messages to people demanding their credentials and money.
Today the stories are that (1) the rollout of the verification disaster is at least postponed until after the midterms, and (2) Twitter has been “quietly” reaching out to several of the people who were laid off asking them to come back.
Yeah, good luck with that.
Even worse, apparently Musk has been driving away the advertisers he so desperately needs. He was completely unprepared for the so-called “up fronts,” which are the meetings where companies earn about 20% of their annual ad revenue from major clients. The Twitter people had no answers to questions about future plans or stability, and were even hostile to the questioners when the clients put spending on hold. Then, as you may have seen, he blamed the hesitation on “left wing agitators who are opposed to free speech intimidating the companies,” which is staggering in its cluelessness.
It’s so obvious this guy has no idea what he’s doing and that the company will be bleeding money for the foreseeable future. Mastodon isn’t like Twitter and has its issues, but the exodus has become a flood.
As a reminder, Musk has been in charge for about a week.
Baseball
The Houston Astros won the World Series in six games over the Philadelphia Phillies. The Astros were clearly the better team, and deserved to win, even though most people were rooting for the Phillies.
This year I monitored the games while traveling, and participated in Joe Sheehan’s subscriber Slack channel. Sheehan is my favorite baseball writer, and I’m one of his lifetime subscribers. I don’t often go on Slack, but it was a fun way to watch a game.
Honestly, I don’t care that much about who won, but it was a nice diversion. My son is wholly and completely dedicated to watching the NBA instead, and he’s far more of an NBA fan than I’ve been a fan of any sport (and that’s saying a lot), so it’s time to switch to that now. Interacting with him will be more pleasant, however, if the Warriors stop struggling.
Other Posts
Oh, I get it now. Levi’s 24601s.
As Gomez Addams said in the first Addams Family movie:
They say a man who represents himself has a fool for a client. Well, with God as my witness, I am that fool!
Obvious when you think about it.
To which I had to reply:
And finally:
I was really, really annoyed about that, but I’ll get over it. Eventually. Sigh.
Have a great week everybody, and please vote before they take the privilege away.
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:
No classes
Lone Star Software Symposium, the NFJS event in Austin, TX
This week:
The Spring MVC Framework, an NFJS Virtual Workshop
Finish (I really, really mean it this time) Mockito Made Clear