Tales from the jar side: Android 10 and Naming Things
Welcome to Tales from the jar side, the Kousen IT newsletter, for the week of August 18 - 25, 2019. This week I taught a Basic Android class online at Safari, taught two days of a boot camp for career changers, and spent a lot of time on my Kotlin Cookbook, especially working on sequences.
The timing of my Android course was interesting, partly because the day after the course ended Google announced the release version of their new operating system. For many years Google used dessert names to represent OS versions, which were released in alphabetical order. The previous ones were:
Cupcake (first public name; supposedly there were A and B letters but no official names for those -- rumor has it they were simply Alpha and Beta)
Donut
Eclair
Froyo (frozen yogurt; that's when I first started learning Android but didn't like it)
Gingerbread
Honeycomb (first release with the new API for tablets, which included fragments and the action bar -- all later wrapped into the main API)
Ice Cream Sandwich (that's when I restarted doing Android)
Jelly Bean
Kit Kat (which everyone expected to be Key Lime Pie, but supposedly it was changed at the last minute with permission from Nestlé, who loved the idea of all that free marketing)
Lollipop
Marshmallow
Nougat (a terrible choice, IMHO; they had a public vote and that's the best they could do?)
Oreo (if you're going to have a Kit Kat version, this was inevitable), and
Pie
A few years ago they started announcing a "developer preview" for the new letter at the annual Google I/O conference in the spring. The first was the "L" developer preview, which eventually became Lollipop in the fall. The release date for the final version kept moving up, presumably in order to accommodate the phone manufacturers who wanted the latest version in devices ready to purchase for the holiday season. With that in mind, a Q developer preview was announced during Google I/O last April, and we've been waiting to hear what dessert started with that letter ever since.
(... giving you a minute to try to think of a dessert that starts with Q ...)
Apparently Google couldn't think of anything good either. The latest version is officially called ... 10. Yes, now it's just Android 10.
If you are old enough in this industry, you see a lot of patterns repeat themselves. When the first version of the open source Eclipse editor was released, it didn't have a specific name for the version. Later, they started going with moons of Jupiter -- Callisto, Europa, and Ganymede. The other Galilean moon of Jupiter is Io, but they deliberately skipped that one, because they didn't want it to be mistaken for either I/O (input/output) or the number 10, so instead they went with the name Galileo instead.
Then came Helios, which was vaguely astronomical but left Jupiter entirely, but it started an alphabetical pattern. Next was Juno (back to Jupiter again, but long before the NASA probe of the same name), Kepler, Luna, Mars (presumably the planet and not the candy bar), Neon (oops, lost the astro-theme), Oxygen (at least it was scientific? I guess?), and Photon.
Then the Eclipse foundation gave up, too (must be something about names starting with Q), and went with 2018-09, and sadly another source of creativity and mild amusement in the I.T. world was lost. They've been releasing versions of the form "year-month" ever since.
(Eclipse was produced by the Eclipse consortium -- later open source foundation -- which was founded by IBM and a few small companies. They insist to this day that the word Eclipse had nothing to do with the word Sun. Sun Microsystems didn't see it that way (duh), and that's at least part of the reason Sun not only refused to join the consortium, they also created a competing IDE called NetBeans. NetBeans is now an Apache project and Sun no longer exists, so there's that.)
Speaking of sources of creativity and mild amusement, you probably know that whenever you add a new device to a network it needs a name. The first time I encountered that was way back in the 80s when I was a graduate student at Princeton. The department has a series of Sun workstations that all worked off of a central server. The server was called IceCream, and the three workstations I had access to were called Chocolate, Vanilla, and Strawberry. Rumor had it there were a few others around, including a RumRaisin somewhere, but I never encountered it. I really liked the idea, though.
When I started working at United Technologies Research Center, I received a workstation all to myself, which seemed the height of luxury. We started off with Apollo workstations (later a division of HP) and eventually moved to IBM AIX. I remember calling mine Rayleigh, because I worked on the aeroacoustics of turbomachinery and he (John William Strutt, the third Baron Rayleigh) was a giant in the field of sound waves and vibrations. Btw, Rayleigh scattering is why the sky is blue.
It was hard at the time to imagine having multiple machines in my house, but of course that eventually happened. My original network was called Babylon5 (an obvious choice if you've read my previous newsletters), and over the years I've had machines called Narn, Centauri, Earth, Mars, Minbar, and even Z'ha'dum. That last was a great name for a server, from the quote, "if you go to Z'ha'dum, you will die."
Eventually I ran out of B5 names, so I had to come up with something else. My favorite was on my previous MacBook Pro laptop, which was called krakatoa, but that needs a few words of explanation.
Krakatoa is the name of the volcanic island in Indonesia that lies between the islands of Java and Sumatra. In August of 1883 (136 years ago this week, actually), after erupting for several days, the entire island exploded. That generated the loudest sound in recorded human history -- it was heard 3000 miles away in Madagascar. The disruption was so big it changed the tides in the English Channel, half a world away. The devastation was so large it drove the Dutch out of Batavia (as it was called at the time) because they couldn't handle the crisis. And ultimately, studies of it led to the discoveries of plate tectonics and continental drift.
I thought I originally heard about Krakatoa because the explosion also plays a role in the book James and the Giant Peach, by Roald Dahl (author of Charlie and the Chocolate Factory, among others), which my fourth-grade teacher read aloud to us, but that's not true. I remember my teacher read Charlie and the Chocolate Factory to us and followed up with The Great Glass Elevator, and James and the Giant Peach was supposed to reference those, but in browsing the Wikipedia page I can't find any reference to Krakatoa. The book I'm remembering is probably The Twenty-One Balloons instead.
Now I wonder how many other "memories" I have from those days aren't really the way I remember them.
At any rate, coming back to why my laptop was called Krakatoa, I named it that because it was slightly off of Java and sooner or later I expected it to explode.
If you're interested in more about the volcano, I recommend the excellent book Krakatoa: The Day The World Exploded: August 27, 1883, by Simon Winchester. Oh, and if you're thinking of the 1969 movie, Krakatoa, East Of Java, that's geographically backwards. Krakatoa is west of Java.
One time in an Intro Java training class I had a student who came from Jakarta, the former Batavia and the current capital of Java. That meant I was training a Java developer from Java. :) She told us you never want to drive anywhere near the place -- the traffic problems are apparently horrific, as is the smog.
In the early days of the Java programming language, the open source projects associated with Java were hosted by the Apache Software Foundation at a site called jakarta.apache.org. I was surprised how few people got that reference, but so be it. In those early days there was also a site that hosted Java applets (!) you could download called Gamelan, which is a type of music played in Indonesia (i.e., on the island of Java). Now that's an obscure reference.
For the record, when I needed a name for my current laptop I called it batcomputer, on the principle of the machine dressing for the job it wants rather than the job it currently has. As you can imagine, whenever I see a machine on any network called something like "Bob's Laptop", I feel a little sad at the missed opportunity.
Btw, I also have a Microsoft Surface Book Pro which I named ClientMadeMeUseWindows.
Now we have Android 10. I expect I'll upgrade my phone to it as soon as it's available. I own a Google Pixel 3 phone partly for that reason.
Despite the fact that Kotlin is now the recommended language for Android, I taught my Basic Android class in Java anyway. I explained to the students that Kotlin has its own learning curve, and still probably half of all apps are written in Java, so we could use the language to learn the concepts anyway. I have a Kotlin Fundamentals class running next month. It will be interesting to see how many attendees I get. Kotlin is still growing in influence, but whether it will break out into the wider Java mainstream remains to be seen.
My Kotlin Cookbook also continues to grow. This week as part of the burst of effort to complete a draft I spent a lot of time working on Kotlin sequences. I didn't expect to have much to say about them, because they're basically the same as Java streams. The generateSequence function turned out to have some subtleties, though, and the sequence function itself includes a yield function which has no comparable analog in Java. I think it's similar to generators in Python, actually. It's got to come from somewhere, though, because I don't think I've found a single feature in Kotlin that wasn't borrowed from some other language. That's not necessarily a bad thing, but it's an interesting one.
As of today, the book has about 75 recipes and just under 200 pages. I estimate I still have another 10 recipes or so to go, including the coroutines chapter. I'm at that awkward stage in the book where I've had 10 recipes to go for several weeks now. In graduate school we used to say that if you ask a grad student how long they have to go, they'd say "about a year" for at least six months. I'm living in that world now.
Regarding the bootcamp, that's the first time I've been in a classroom for a while, since most of my courses have been online at Safari. We have a large number of students (14, I think), and they're all highly motivated. There's a lot of energy in the room, which is great. It's really unusual for me to deal with students over an extended period, and this bootcamp runs another six weeks, so it will be fascinating to see how their understanding of development grows over time. Also unusual is that this is apparently a sponsored bootcamp, so they'll all be interviewing for jobs in a few weeks. My goal is to make sure they at least sound like they know what they're doing during those interviews. :)
In the meantime, I'll be living the Kotlin life. The people in charge of the language released version 1.3.50 this week, and fortunately when I updated the book repository nothing broke. Whew. Now I really do have to get through those coroutines.
One other miscellaneous item: I made travel arrangements to go to the Oracle Code One conference (the conference formerly known as JavaOne) in San Francisco next month. I wasn't planning to go, but it turns out I'll be on a panel about open source. More importantly, at the Java Community Process party I'll be performing with the Null Pointers, the rock band made up of Java developers. That's the real reason I'm actually going. :)
Last week:
Basic Android on Safari
Bootcamp for Java developers
Lots of Kotlin recipes
This week:
Functional Java on Safari
Managing Your Manager on Safari
Bootcamp for Java developers
Yet even more Kotlin