The sound of inevitability

November 20th, 2020

A lot of things have changed since February/March this year, and some of these things are not going back to the same exact way they used to be. It’s been said a few times before that this global pandemic has forced quite a few industries to take the inevitable technological changes that were going to take 15-20 years and compress them into a couple of months if not weeks.

One of these industries lies close to my heart – making movies and TV shows (for which I’ve been doing quite a few interviews recently) and getting them to the viewers. As spring went into a long summer, and now fall is going into a long winter with no clear path “out” of the current situation that we find ourselves in, the theatrical / exhibition side of the business is in deep, deep trouble. It is trying to position itself as an integral, vital part of the industry, and yet it’s becoming clearer with each week that passes that they were, well, a middleman.

As I wrote a few weeks ago:

A part of me wishes that the studios were a bit more desperate to release the big blockbusters that were scheduled all through 2020 and then postponed again and again. A part of me wishes to see what kinds of innovations we might see down the road when going to a movie theater is not considered to be a vital part of releasing a movie. Does Disney make some sort of a Marvel Pass that lets me in on all that franchise movies and shows for a flat $50 a year? Do I get a refund if I stopped watching a movie partway through because I didn’t like it? Do I get some sort of a discount for watching the next “Fast & Furious” if I already paid the full price for the last one?

While “Mulan” was undoubtedly a big move from Disney, I see Warner moving “Wonder Woman 1984” to streaming as a much bigger move. And before you say anything, I want to be realistic and say that no, it’s not going to drive huge crowds of viewers into enclosed, dark theatrical spaces where you may or may not be surrounded by complete strangers who may or may not pass on things that you may or may not want to be passed on.

What I do find fascinating is the business side of what used to be the big six, and now the big five movie studios. As I wrote:

Universal is part of NBCUniversal which is, in turn, part of Comcast. Comcast revenue for 2019 was $108.9B. Paramount is part of ViacomCBS. Warner is part of WarnerMedia (along with HBO and CNN) which is, in turn, part of AT&T. AT&T revenue for 2019 was $181B. Disney (after having acquired Pixar, Marvel, Lucasfilm and 20th Century Fox) ruled the domestic market in 2019 with almost 40% share, and the parent conglomerate reported the revenue of $69.5B for 2019.

And while technically they are not desperate to take the huge blockbusters they’ve been sitting on for much of this year and get them to the viewers, every month that passes does add just a bit of pressure to the senior leadership of those smaller divisions to put at least some money into the earnings column.

“Wonder Woman 1984” is going to be made available for no additional charge to all HBO Max subscribers. AT&T has been building up that vertical pipeline for some time now, and understandably, they are anxious to get some of the money flowing back. Universal has Peacock. Disney has Disney+. Paramount has CBS All Access. Columbia is the odd one out, given that Sony pretty much gave up on Vue and Crackle. I actually had to look those up.

I don’t know how things are going to look like going into spring. I’m about 80% positive that Disney will put “Black Widow” on Disney+ in the next few months. I’m about 80% positive that Universal is going to put “Fast & Furious 9” and “No Time To Die” on Peacock before this coming spring is over.

Moving the big releases to the screens that people have on them (phones, tablets) or in their living rooms (flatscreen TVs) was inevitable. It was going to take 5-10 years, no matter how loud the inevitable hand-wringing and doom-spelling that the movie theater trade association lobbyists could be. And even though the original Matrix trilogy didn’t end up well for Agent Smith, this transition is inevitable. By the time it’s done, going to a movie theater will be the same as buying your favorite Lana Del Rey album on vinyl. Charming. Sweet. A bit old-fashioned.

This started happening a few weeks ago. Using Firefox to load Twitter’s webpage would display this text message:

Can’t load twitter : has experienced a network protocol violation that cannot be repaired.

One (rather annoying) way to go around it is to Shift+Reload the page, but you need to do it every single time you load the main stream or just a single tweet. Another, and a more permanent way is to type about:serviceworkers into the address bar, and then search for “twitter” in that page. You should see something like this:

Click the “Unregister” button and you should be good to go.

Substance comes with built-in support for animating state transitions for the core Swing components, as well as for all the Flamingo components.

Let’s take a look at this screenshot from the component states documentation:

Here we see how one of the Substance skins (Office Silver 2007) provides different visuals for different component states – light yellow for rollover, light orange for selected, deeper orange for pressed, etc. As the component – such as JButton in this case – reacts to the user interaction and changes state, Substance smoothly animates the visuals of that component to reflect the new state. In the case of our JButton, that includes the inner fill, the border and the text.

This comes particularly handy for skins that mix light and dark visuals for different states of the same component. Here is the same UI under the Magellan skin:

Note how the selected button uses light text on dark background, while the rollover selected button uses dark text on light background. If your UI uses the Magellan skin (or any other skin that uses a mix of light and dark color schemes), Substance will do the right thing to animate all relevant parts of your UI as the user interacts with it.

What about the icons?

This is a screenshot of the main Substance demo app running under the Nebula Amethyst skin. As UIs with lots of icons can get pretty busy, Substance provides APIs to theme the icons based on the current skin visuals.

The APIs are in the SubstanceCortex class, one in the GlobalScope to apply on all icons in your app, and one in the ComponentScope to configure icon theming for the specific control:

  • SubstanceCortex.GlobalScope.setIconThemingType for global icon theming
  • SubstanceCortex.ComponentScope.setIconThemingType for per-component icon theming

At the present moment, two icon theming types are supported. The first is SubstanceSlices.IconThemingType.USE_ENABLED_WHEN_INACTIVE which works best for multi-color / multi-tone icons and Substance skins with multi-color color schemes. Here is the same UI with this icon theming type:

Take a look at the icons in the toolbar. The icon for the active / selected button (bold A) is still in full original color, but the rest of the icons have been themed with the colors of the enabled color scheme configured for the toolbar area of the Nebula Amethyst skin. This work well in this particular case because:

  • The original Tango icons have enough contrast to continue being easily recognizable when they are themed in what is essentially a mono-chrome purple color palette
  • Nebula Amethyst skin uses color schemes with different background colors for the ultra light to ultra dark range, so that when these colors are used to theme the original icons, the icons remain crisp and legible.

The second option is SubstanceSlices.IconThemingType.FOLLOW_FOREGROUND which works best for single-tone icons found in such popular icon packs as Material, Ionicons, Friconix, Flexicons, Font Awesome and many others:

In this screenshot of the same UI from earlier under the Magellan skin, all the buttons use the same help icon from the Material icon pack converted by Photon. At runtime, Substance themes the icon to follow the foreground / text color of the button for a consistent look across all component states.

Any day now

October 13th, 2020

Checking in on an earlier post from last year on being skeptical on the whole self-driving cars thing, I got reminded of this article from last April and the quote from Elon Musk:

As for full autonomy, Musk noted: “the software problem should not be minimized.” He continued that, “it’s a very difficult software problem.” Still, he promised that Teslas will be capable of self-driving by the end of this year and self-driving robo-taxis will be on the road in 2020. Also, in two years, the company will be making cars without steering wheels or pedals at all.

“If you fast forward a year, maybe a year three months, we’ll have over a million robo-taxis on the road.”

Usually futurists give themselves a bit more breathing room, say 25-30 years. By which time they are either no longer with us, or can claim to have been let down by the inept technologists who have failed to deliver on their “vision”. In this particular case though, Tesla is barely struggling to get to level 2 which is basic, partial automation. We’re quite a long way off from a million robo-taxis on the road.

In the meanwhile, Tesla’s official page on autopilot is using some clever wording that makes it seem that they are already at full self driving level 5 (highlights mine):

All new Tesla cars have the hardware needed in the future for full self-driving in almost all circumstances. The system is designed to be able to conduct short and long distance trips with no action required by the person in the driver’s seat.

All you will need to do is get in and tell your car where to go. If you don’t say anything, the car will look at your calendar and take you there as the assumed destination or just home if nothing is on the calendar. Your Tesla will figure out the optimal route, navigate urban streets (even without lane markings), manage complex intersections with traffic lights, stop signs and roundabouts, and handle densely packed freeways with cars moving at high speed. When you arrive at your destination, simply step out at the entrance and your car will enter park seek mode, automatically search for a spot and park itself. A tap on your phone summons it back to you.

Sprinkle a few “will”s in there, and you make it sound like it’s yours once you buy one of their cars. While the press kit is a bit more realistic, bringing it down quite a few notches (highlights mine):

Autopilot is an advanced driver assistance system that is classified as a Level 2 automated system according to SAE J3016, which is endorsed by the National Highway Traffic Safety Administration. This means Autopilot also helps with driver supervision. One of our main motivations for Autopilot is to help increase road safety, and it’s this philosophy that drives our development, validation, and rollout decisions.

Autopilot is intended for use only with a fully attentive driver who has their hands on the wheel and is prepared to take over at any time. While Autopilot is designed to become more capable over time, in its current form, it is not a self-driving system, it does not turn a Tesla into an autonomous vehicle, and it does not allow the driver to abdicate responsibility.

So maybe, at some point in the future, it “will” be there. But not any day now, despite the ongoing barrage of lofty promises.