Tales from the jar side: Amazon rejected my video, Groovy Vampires, a Groundhog Day joke, Mockito Made Clear is doing well, and Spying weather balloons
I went to a psychic and knocked on her door. She asked, "Who is it?" so I left. (rimshot)
Don’t feel like reading this newsletter? That’s fine — I’ll read it to you on the Tales from the jar side YouTube channel. Today’s newsletter is tomorrow’s video.
Welcome, fellow jarheads, to Tales from the jar side, the Kousen IT newsletter, for the week of January 29 - February 4, 2023. This week I taught my Making New Java Features Work For You course and Week 1 of my Android Development Bootcamp on the O’Reilly Learning Platform.
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:
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.
Amazon Hates Me (Apparently)
In last week’s newsletter,
I announced my new book, Mockito Made Clear, which is now available from the Pragmatic Bookshelf. To support the book, I wrote a series of blog posts on Medium, to appear in the Pragmatic Programmers publication there.
So far, the released posts are:
I currently have four more posts in the queue (including Unboxing Day, Part III, the final entry in that series, which should appear this week), and a few more in various stages of development.
All well and good. I’m planning to make videos about them, partly to illustrate the concepts, and partly for those people who either don’t feel like reading the posts, or don’t feel like reading the posts on Medium.
You’ll notice, however, that three of them (two so far, one coming) are about the admittedly silly task of unboxing an ebook. That illustrates a writing tip that probably works only for me:
If you’re struggling with writing, tell a joke. Even if the editor later makes you remove the gag, you’ll can still use all the pages surrounding it.
I can’t tell you how often I’ve done this (like in this newsletter). As an early example, let me tell you about Groovy vampires.
Groovy Vampires
Way back when I was writing my first book, Making Java Groovy, I was wandering through my local Barnes & Noble and noticed that while they only had a single shelf labeled Computer, there were two dedicated to a category called Teen Paranormal Romance:
I therefore decided, to help my book sell better, to add some Groovy vampires to my book:
In Making Java Groovy, I used the Groovy programming language to access a REST endpoint provided by Rotten Tomatoes (this was before they were bought by Fandango and suddenly you had to apply — and pay — for access) to do a search on the word vampire, download the movie data in JSON format, save it into a Mongo database (whose native format BSON is short for “binary JSON”), and then parse it into Groovy POGOs (Plain Old Groovy Objects) for display. I even served them up as my own service, using Ratpack, another Groovy-based project. I wrote about all of this in Chapter 8 of my book:
(That last footnote, about how Blazing Saddles was “the peak of the Alex Karras oeuvre,” still cracks me up.)
When the physical books arrived, I persuaded the local B&N manager to order a few for me to sign. I then surreptitiously took one of them, added a Post-It note about the vampires to the cover:
and shelved it in the Teen Paranormal Romance section.
As you might expect, the B&N staff simply moved it back. At least I think they did — it vanished from that section and the staff assured me nobody bought it. Still, I got practically half a chapter out of that gag, not to mention a related presentation I did at a couple of conferences and user groups.
I even made a related alternative cover for my book:
I stand by that subtitle.
So you can see, going way overboard for a silly gag is nothing new to me. That attitude and somewhat warped sense of humor lies behind my “unboxing the unboxable” articles for Mockito Made Clear.
(Later, when I wrote Kotlin Cookbook, I again got my local B&N to order a few, signed them, and then moved one of them into the Cooking section. It, too, vanished without a trace. Oh well. I thought it was funny.)
Amazon, WTF?
This week, Mockito Made Clear got its page added to Amazon. Here’s a snapshot:
You see that label that says “You purchased this item”? As you might imagine, that wasn’t my idea. When you buy a book from the Pragmatic Bookshelf, you get all three ebook formats already: pdf, epub, and mobi. If you really want to add your mobile book to a Kindle reader, in principle you can just email it to a special address associated with each device, or use Amazon’s Send to Kindle site or app. Combine that with the fact that Amazon is listing the Kindle version for $14.99, while the Prags currently have it for only $9.99 (and that’s before the awesome jarhead discount code kkmockito35 knocks another 35% off of that), I had no reason to also buy the book from Amazon.
Except one. I wanted to make an unboxing video for that page. Since Amazon is only selling the Kindle version, I wanted to demonstrate it inside a Kindle reader. While I could (and did) upload my book to my own personal Kindle, I didn’t have an easy way to show that in a video, and there was no way to get the book into my online Kindle Library so I could present it in a browser. I therefore swallowed my misgivings and bought it again, just for the video. Ah, the Sacrifices I make for my Art!
(Specifically, $14.99 + tax, plus all the aggravation described below.)
I made that video on Friday, and, believe it or not, I played it straight. I didn’t make any jokes, or talk about the price, or mention that it’s also available at PragProg.com, or say anything about me or my newsletter or my YouTube channel, and even kept the length down to under two minutes. All I did was show the table of contents and summarize what’s in it. I then uploaded the video and waited for it to be approved.
Here’s the result:
Rejected? Why? The detail says, “Your video has been rejected for not complying with our Community Guidelines,” with a link to those guidelines.
Look, there’s no profanity or spam in my video. I didn’t talk about pricing at all, nor did I put anything private, include hate speech, or anything like that. The only thing I can imagine even close to an issue is this:
Is that the problem? Am I not allowed to comment on my own book? If so, why was I allowed to add an unboxing video for Help Your Boss Help You (as you can see in the Manage Videos image above) a couple years ago?
I’m mystified. I decided to publish the video to my YouTube channel just so you can see that how careful I was, and maybe you can tell me what the problem is.
BTW, in case you were wondering, no, I did not run over Jeff Bezos’s cat, as far as I know. This isn’t personal, at least until he sees this issue of my newsletter.
Best Sellers List
One more thing about Mockito Made Clear: It made it to the Top Five on the Best Sellers list at Pragmatic Programmers:
Yay, and I repeat, yay! It’s still sitting there at #5 as of today, not that I’m checking all the time or anything, as far as you know.
Speaking of Videos
On Groundhog Day I made my first YouTube short about Punxsutawney Phil (seer of seers, prognosticator of prognosticators):
It’s an old gag, though I haven’t used Kotlin for it before. Here’s the code:
The output is:
There are 46 from GroundHog Day until the first day of Spring
That is 6 weeks and 4 days
I’ve done that demo in Groovy a few times (see, for example, this blog post from 2015, which predates the LocalDate
class and no longer renders the code properly), but on the morning of Feb 2, I taught a Kotlin class, so that language was on my mind. It was also a chance to try out the new kotlinx.datetime library.
Here’s my corresponding Groovy script:
Pretty much the same, though it does take advantage of operator overloading (the minus operator on LocalDate
) enabled by Groovy.
(Aside: I really miss Groovy. I loved the language and especially the community. I only wish there was more of a demand for it these days.)
The inimitable Paul King supplied this alternative:
Cute, using the TimeCategory
like that. Paul is from Australia, so of course he labeled the first day of Spring as the one in the Northern Hemisphere. :) Also, he did everything in four lines, including the test. Paul is the best.
For the record, Punxsutawney Phil saw his shadow:
So thanks, Phil. You saved us four days of Winter. Sort of.
Tweets and Toots
Speaking of Winter, it got really, really cold here Saturday night.
That’s way too cold. From what I understand, the average temperatures for January were almost 10 degrees above normal (Holy Global Warming, Batman). Then we got hit with this. Whoa.
The Washington Post had an article about this bizarre event. They claimed:
Trees exploded as water trapped in sap froze and expanded.
There were reports of “winter water spouts” and “Arctic sea smoke”. If your weather causes people to use terms like that, you know you’re in for a rough time.
Speaking of which, residents in Maine reports “frost quakes,” or cryoseisms, which are “seismic events caused by a sudden cracking action in frozen soil or rock saturated with water or ice.” I guess I learned a new term.
The weather station at the top of Mount Washington (the highest point in New England) reported a new record wind chill of -109 degrees Fahrenheit, corresponding to wind gusts of over 110 mph.
Let’s just not, okay? Brr.
For the record, it was over 50 degrees F last week. It’s currently 42 degrees F today (Sunday). So this was completely out of the blue, lasted about a day and a half, and vanished. Weird. I’m just glad our heating system / back-up generator held up.
Chinese Spy Balloon Memes
One balloon shows up over Montana, and a portion of the population forgets that we have had spy satellites and spy planes dating back from the 1940s? It’s not like the Pentagon didn’t know about it, and even they advised against people trying to shoot it down themselves.
At least we got a few good memes out of it.
I also saw this related image:
Yup. Then there’s this earworm:
This another inevitable song reference (once the balloon was shot down):
The image did look like the Moon, sort of, so this was appropriate:
As the movie says, you’ll never find a more wretched balloon of scum and villainy. We must be cautious.
I know I saw an “Up, up, and away, In my beautiful, my beautiful, spy balloon,” joke, but I can’t seem to find it again.
For the final word, this was posted on Mastodon:
Ain’t that the truth. Inevitably, the balloon was shot down off the coast of the Carolinas and recovery operations are underway. Goodbye, little spy balloon. We hardly knew ye. But don’t worry, I’m sure there will be more.
Moving on…
I Don’t See Anything
We Don’t Talk About Map Club
I vaguely remember a time, long ago, before we had Google Maps. That world was a much more confusing place.
Math (not Map) Club
Finally, for those nerds who think this way:
February (in a non-leap-year) has 8! minutes. Mathematicians read that as “8 factorial”. Computer scientists read it as “Eight, bang”. English majors read it as “Eight!” Theater kids say “Eight!” with jazz hands.
Have a great week, everybody. The video version of this newsletter should be uploaded onto 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:
Making New Java Features Work For You, on the O’Reilly Learning Platform, in the APAC (Asia/Pacific) time zones.
Android Development Bootcamp, week 1 of 3, same platform.
This week:
Managing Your Manager, on the O’Reilly Learning Platform (APAC time zone)
Latest Features in Java, an NFJS Virtual Workshop
Android Development Bootcamp, week 2 of 3, on the O’Reilly Learning Platform. Hopefully Android Studio will cooperate this time.
The only thing that can stop a bad guy with a weather balloon is a good guy in a jet fighter with an air-to-air missile. <Rimshot> https://youtu.be/g-4-gLlF0uw