b8r v2

b8r v2 is going to adopt web-components over components and import over require

Having developed b8r in a period of about two weeks after leaving Facebook (it was essentially a distillation / brain-dump of all the opinions I had formed about writing front-end code while working there), I’ve just spent about two years building a pretty solid social media application using it.

But, times change. I’m done with social media, and the question is, whither b8r?

In the last few weeks of my previous job, one of my colleagues paid me a huge compliment, he said I’d “really hit it out of the park” with b8r. We’d just rebuilt half the user interface of our application, replacing some views completely and significantly redesigning others, in two weeks, with one of the three front-end coders on leave.

I designed b8r to afford writing complex applications quickly, turn hacky code into solid code without major disruption, make maintenance and debugging as easy as possible, and to allow new programmers to quickly grok existing code. As far as I can tell, it seems to do the trick. But it’s not perfect.

Two significant things have emerged in the front-end world in the last few years: import and web-components (custom DOM elements in particular)

import

When I wrote b8r, I found the various implementations of require to be so annoying (and mutually incompatible) I wrote my own, and it represents quite an investment in effort since then (e.g. I ended up writing an entire packaging system because of it).

Switching to import seems like a no-brainer, even if it won’t be painless (for various reasons, import is pretty inimical to CommonJS and not many third-party libraries are import-friendly, and it appears to be impossible for a given javascript file to be compatible with both import and require).

I experimentally converted all of the b8r core over to using import in an afternoon — enough that it could pass all the unit tests, although it couldn’t load the documentation system because any component that uses require or require.lazy won’t work.

Which got me to thinking about…

web-components

I’ve been struggling with improving the b8r’s component architecture. The most important thing I wanted was for components to naturally provide a controller (in effect, for components to be instances of a class), and pave some good paths and wall up some bad ones. But, after several abortive attempts and then thinking about the switch from require to import, I’ve decided to double-down on web-components. The great thing about web-components is that they have all the virtues I want from v2 components and absolutely no dependency on b8r.

I’ve already added a convenience library called web-components.js. You can check it out along with a few sample components. The library makes it relatively easy to implement custom DOM elements, and provides an economical javascript idiom for creating DOM elements that doesn’t involve JSX or other atrocities.

Using this library you can write code like this (this code generates the internals of one of the example components):

fragment(
div({classes: ['selection']}),
div({content: '▾', classes: ['indicator']}),
div({classes: ['menu'], content: slot()}),
)

I think it’s competitive with JSX while not having any of the dependencies (such as requiring a transpile cycle for starters).

<div className={'selection'}></div>
<div className={'indicator'}>▾</div>
<div className={'menu'}>
{...props.children}
</div>

To see just how lean a component implemented using this library can be, you can compare the new switch component to the old CSS-based version.

Aside — An Interesting Advantage of Web Components

One of the interesting properties of web-components is that internally the only part of the DOM they need to care about is whether they have a child <slot>. Web-components don’t need to use the DOM at all except for purposes of managing hierarchical relationships. (Annoyingly, web-components cannot be self-closing tags. You can’t even explicitly self-close them.)

E.g. imagine a web-component that creates a WebGL context and child components that render into container’s scene description.

In several cases while writing b8r examples I really wanted to be able to have abstract components (e.g. the asteroids in the asteroids example or the character model in the threejs example). This is something that can easily be done with web-components but is impossible with b8r’s HTML-centric components. It would be perfectly viable to build a component library that renders itself as WebGL or SVG.

Styling Custom Elements for Fun and Profit

One of the open questions about custom DOM elements is how to allow them to be styled. So far, I’ve seen one article suggesting subclassing, which seems to me like a Bad Idea.

I’m currently leaning towards one or both of (a) making widgets as generic and granular as possible (e.g. implement a custom <select> and a custom <option> and let them be styled from “outside”) and (b) when necessary driving styles via CSS variables (e.g. you might have a widget named foo that has a border, and give it a generic name (–widget-border-color), specific name (–foo-border-color), and a default to fall back to.

So, in essence, b8r v2 will be smaller and simpler — because it’s going to be b8r minus require and components. You won’t need components, because you’ll have web-components. You won’t need require because you’ll have import. I also plan one more significant change in b8r v2 — it will be a proper node package, so you can manage it with npm and yarn and so forth.

<b8r-bindery>

One idea that I’m toying with is to make b8r itself “just a component”. Basically, you’d get a b8r component that you simply stick anywhere in the DOM and you’d get b8r’s core functionality.

In essence the bindery’s value — presumably an object — becomes accessible (via paths) to all descendants, and the component handles all events the usual way.

I’m also toying with the idea of supporting Redux (rather than b8r’s finer-grained two-way bindings). There’s probably not much to do here — just get Redux to populate a bindery and then instead of the tedious passing of objects from parent-to-child-to-grandchild that characterizes React-Redux coding you can simply bind to paths and get on with your life.

Summing Up

After two years, I’m still pretty happy with b8r. Over the next year or so I hope to make it more interoperable (“just another package”), and to migrate it from (its) require and HTML components to import and web-components. Presumably, we’ll have import working in node and (and hence Electron and nwjs) by then.

Happy new year!

Epic Fail

Atul Gawande describes the Epic software system being rolled out in America’s hospitals.

It reads like a  potpourri of everything bad about enterprise IT. Standardize on endpoints instead of interoperability, Big Bang changes instead of incremental improvements, and failure to adhere to the simplest principles of usability.

The sad thing is that the litany of horrors in this article are all solved problems. Unfortunately, it seems that in the process of “professionalizing” usability, the discipline has lost its way.

Reading through the article, you can just tally up the violations of my proposed Usability Heuristics, and there’s very few issues described in the article that would not be eliminated by applying one of them.

The others would fall to simple principles like using battle-tested standards (ISO timestamps anyone?) and picking the right level of database normalization (it should be difficult or impossible to enter different variations of the same problem in “problem lists”, and easier to elaborate on existing problems).

There was a column of thirteen tabs on the left side of my screen, crowded with nearly identical terms: “chart review,” “results review,” “review flowsheet.”

I’m sure the tabs LOOKED nice, though. (Hint: maximize generality, minimize steps, progressive disclosure, viability.)

“Ordering a mammogram used to be one click,” she said. “Now I spend three extra clicks to put in a diagnosis. When I do a Pap smear, I have eleven clicks. It’s ‘Oh, who did it?’ Why not, by default, think that I did it?” She was almost shouting now. “I’m the one putting the order in. Why is it asking me what date, if the patient is in the office today? When do you think this actually happened? It is incredible!”

Sensible defaults can be helpful?! Who knew? (Hint: sensible defaults, minimize steps.)

This is probably my favorite (even though it’s not usability-related):

Last fall, the night before daylight-saving time ended, an all-user e-mail alert went out. The system did not have a way to record information when the hour from 1 a.m. to 1:59 a.m. repeated in the night. This was, for the system, a surprise event.

Face meet palm.

Date-and-time is a fundamental issue with all software and the layers of stupidity that must have signed off on a system that couldn’t cope with Daylight Savings boggles my mind.

A former colleague of mine linked to US Web Design System as if this were some kind of intrinsically Good Thing. Hilariously, the site itself does not appear to have been designed for accessibility or even decent semantic web, and blocks robots.

Even if the site itself were perfect, the bigger problems are that (a) there are plenty of similar open source projects, they could have just blessed one; (b) it’s a cosmetic standard, and (c) there’s pretty much no emphasis on the conceptual side of usability. So, at best it helps make government websites look nice and consistent.

(To be continued…)

Lost Productivity

A couple of months ago I listened to a Planet Money podcast discussing the mysterious slowdown in US productivity growth (the link is to one of several podcasts on this topic). Like most NPR content, the story got recycled through a number of different programs, such as Morning Edition.

The upshot was, that productivity — which is essentially GDP/work — has stalled since the — I dunno — 90s, and it doesn’t make sense given the apparent revolutions in technology — faster computers, better networks, etc.

Anyway, the upshot — and I’m basing this on memory because I can’t find the exact transcript — is that there’s a mysterious hole in productivity growth which, if it were filled, would add up to several trillion dollars worth of lost value added.

Well, I think it’s there to be found, because Free Open Source Software on its own adds up to several trillion dollars worth of stuff that hasn’t been measured by GDP.

Consider the dominant tech platforms of our time — Android and iOS. Both are fundamentally built on Open Source. If it weren’t for Open Source, iOS at minimum would have been significantly altered (let’s assume NeXTStep would have had a fully proprietary, but still fundamentally POSIX base) and Android could not have existed at all. Whatever was in their place would have had to pay trillions in licenses.

On a micro level, having worked through a series of tech booms from 1990 to the present — in the 90s, to do my job my employer or I had to spend about $2000-5000 for software licenses every year just to keep up-to-date with Photoshop, Director, Illustrator, Acrobat, Strata 3d, 3dsmax, Form*Z, and so on and so forth. By the mid aughts it was maybe $1000 per year and the software was So. Much. Better. Today, it’s probably down to less than $500.

And, in this same period, the number of people doing the kind of work I do, is done by far more people.

That’s just software. This phenomenon is also affecting hardware.

The big problem with this “lost productivity” is that the benefits are chiefly being reaped by billionaires.

Father’s Day — Picking Sides in Fallout 4

Random Prattle You Can Skip

As usual, I’m several years behind in my gaming, and — having pretty much completed Skyrim VR (all the major arcs, anyway) I decided to go back and try Fallout 4 (which had frustrated me around the first time I got my ass handed to me repeatedly by synths while doing nothing in particular).

father (head of the Institute)
Father — head of The Institute in Fallout 4 — and my excuse for writing this post today

I played Fallout and Fallout 2 back when they came out on the Mac in the 90s, and loved them. I played the hell out of Fallout 3, but got frustrated by New Vegas and never finished it. In general, I preferred the original games because you got to make significant moral choices (even if sometimes the content was juvenile).

Fallout 3 seemed to have turned into a more conventional action adventure, which I put down to the technical and cost limitations associated with AAA 3D games (building out huge alternate worlds to display widely varying outcomes is expensive, which is likely also why Mass Effect 3 was so lame.)

Anyway, Fallout 4 seems to me to be a return to the greatness of the originals. The moral issues are back and so, apparently are the choices. And, the game looks wonderful. (Both Skyrim VR and Fallout 4 have pretty terrible audio, frequently making me wonder if I have my headphones on backwards, which is impossible with the VR headset; there are a ton of physics, animation, and AI glitches — all of this just has to be accepted and ignored with Bethesda’s games.)

The Moral Question (SPOILERS!)

So, I’m pretty far along, and I’m confused.

In the Commonwealth there are several key factions, which I’ll summarize:

  • The Minutemen — these are the first folks you encounter, a rag-tag militia that’s almost been wiped out and simply tries to restore a cooperative community across the Commonwealth. Whether you like it or not you end up their “General” but (as someone put it eloquently on a forum) you still end up doing all their fetch and carry busywork.
  • The Brotherhood of Steel — this is the most obviously powerful faction. You encounter them, most likely, trying to find Diamond City (they’re very noisy!) Unlike the “lawful good” BoS from Fallout 3, these are more like the quasi-fascist BoS from Fallout 2. They make a good first impression (they’re defending themselves against feral ghouls), but if you steal a journal one of them has left lying around you quickly learn they have a dark side. In any event, when you join (as you pretty much have to) you quickly discover they are human supremacists and also pretty much anti-science.
  • The Railroad — a nod to the Underground Railroad in more ways than one, is a group of idealists trying to free synths from “slavery” and protect them from a surface population that hates and fears them. They’re run like a parody of John Le Carré.
  • The Institute — just as The Empire is introduced in Skyrim by trying to execute you for no particular reason, The Institute is introduced murdering your spouse (husband in my case) and kidnapping your son. Until you finally meet them face to face, all you know about them is that they killed your spouse, kidnapped your baby, they’re responsible for roving gangs of humanoid killer robots (that think out loud to somewhat comical effect), and that everyone blames them for everything, but disappearing people and replacing them in particular. Also, just as Skyrim’s Empire is the only place where you can bring up kids in relative safety and houses aren’t decorated with broken furniture and dead bodies, The Institute is the only place where you can sit down without wanting to sanitize yourself afterwards. (By way of role-play, I jumped on the chance to get a new toothbrush from a library vending machine…)

One of the interesting things I noticed in forum threads about the moral choice posed by needing to pick between these factions is (a) how sophisticated some of the arguments were (although there were plenty of “BoS are the only good guys” and “BoS are fascist losers” comments too), (b) how clever and effective Fallout 4’s writing is. In particular, in making their arguments, many players clearly take as fact that The Institute is guilty of all the things they’re accused of. Even though every missing persons case you investigate turns out to be entirely prosaic, everyone assumes that The Institute really is stealing people to use their organs, or something.

Here’s what you learn by actually visiting The Institute.

  • They create synths as servants.
  • They may have created the super mutants.
  • There doesn’t seem to be any overt cruelty in the way synths are treated, but then again they can mindwipe and reprogram synths at whim which is worse.
  • The gen-3 are almost certainly sentient, look completely human, and are clearly slaves, but The Institute’s citizens are in denial about this. (My favorite traveling companion is a synth detective, apparently a gen-3 prototype, who definitely seems to be sentient.)
  • You can see gen-3 synths being made from scratch out of goo via 3d printing. They’re not assembling stolen organs. (The sequence is very similar to Westworld’s credits, but this is in real-time game engine and came out before Westworld.)
  • It’s The Railroad that uploads people’s memories into synths to help them blend in (because otherwise the people on the surface would just kill them).
  • The Institute’s population includes scientists (“everyone here is a doctor, but I’m the only physician”) but also children (who seem totally normal and carefree).
  • The Institute have built a fabulous arcology underground.
  • Everyone in The Institute seems to be genuinely trying to make their own lives and life on the surface better. Yes, they’re ignorant and arrogant but so are the folks on the surface.

In a nutshell, the argument against The Institute is slavery / mindwipe. The argument for it is that it’s the only place you’d want to live or raise children.

Fallout 4 ultimately lets you choose between these four factions at the end. The Minutemen only really demand you kill The Institute whereas the other factions all want to wipe each other out (but don’t care about The Minutemen).

It seems to me that while The Institute is clearly wrong in its treatment of synths (i.e. slavery) it’s hardly worse than the Brotherhood’s position of exterminating all non-humans (i.e. genocide) especially when you consider that The Institute can actually make the world nice again and The Brotherhood can’t and won’t. It’s not at all clear to me that any of the factions are beyond redemption, but given that — uniquely in Fallout 4 — you’re someone who can remember the prewar world, it seems to me that there’s not much dividing the Brotherhood of Steel or the Minutemen from raiders and scavengers (indeed, there’s a diary in the room of the first synth you’re sent to recover detailing the collapse of a Minuteman splinter group into thugs and murderers), and the only way to return the world to a decent state is to keep The Institute around, and deal with its moral flaws.

Happy father’s day.

Voldemort vs. Casmir vs. Every Asshat in the Seven Kingdoms — The Villain Problem

Here’s the tl;dr:

Please, HBO, don’t make a bunch of Game of Thrones spinoffs. I’m virtually certain they’ll suck. How about an adaptation of the Lyonesse trilogy? I’m guessing it would be dirt cheap to get the rights.

At its heart, Game of Thrones is vapid

As I watched a collection of “moments” compiled by HBO for prospective viewers of the final season of Game of Thrones it struck me how few of these “moments” had anything to do with characters anyone cares about, vs. the “white walkers” who have no discernible motivations and appear as little more than teasers and shock-vignettes. If you subtract the zombie army and Bran’s entire storyline, what’s really left?

In a nut, Game of Thrones is a story about a bunch of people viciously squabbling over who gets to preside over famine and death in an inevitable mini-ice-age — “whose skeleton sits on the Iron Throne”, as Ser Davos puts it — instead of, say, stacking firewood and salting meat. When Jon finally points this out, he is met with disbelief, despite the fact that this has all happened before and is well-documented. Heck, there’s even a standing army devoted to defending against it — of which Jon was commander — but it apparently misplaced its instruction manual.

There are lots of unpleasant people doing horrible things, but in the end none of that matters because there’s an army of zombie boogeymen to contend with, and the fact that none of the interesting (but pointless) squabbling that has filled the last six seasons actually matters much, and HBO wants us to know that we need to remember a few tantalizing glimpses of “white walkers” who have said almost nothing and whose motives have never been explored (nor would they likely stand up to any scrutiny).

I started this piece before the premiere of season 7. As I revise this post before posting it, I’ve just watched the third episode of the final season, The Queen’s Justice. So far, there has been little of consequence in the first three episodes of the final season beyond the use of plot devices to tie off loose ends and weaken Daenerys’s hand for purposes of evening her odds against Circe. In essence, so far Season 7 has been The Euron Show. Euron, a leeringly obvious plot device, who since usurping his niece’s throne perhaps a year ago has assembled the “largest fleet in the world” — on desolate islands with no obvious source of timber, which just goes to show how resourceful he is — and then with stunning intelligence (and we assume favorable winds) fights and wins two massive engagements against Daenerys’s navies (and held a victory procession in King’s Landing) in the space of about two weeks.

Wait a second: shall we pause a moment to recollect that Daenerys is served by Tyrion and “The Spider” — the latter commanding a global spy network — 2/3 of the brains in the Seven Kingdoms (the missing third being Littlefinger) — and yet she seems to have no clue what her enemies are up to nor how to avoid tipping her hand to them (apparently the mysteriously empty castle she walked into with no thought to security is full of spies).

Outside of The Euron Show, Sam discovers a mountain of “dragon glass” and cures Mormont, allowing him back in the game. And Jon finally meets Daenerys and discovers that she’s an idiot. (By the way, do you find it a bit annoying that Jon can sail a single ship from the far north to the far south between episodes, but Daenerys sends two fleets which arrive two weeks apart?) And horrible things are done to minor characters to show how mean various mean people are.

Where’s Tom Riddle when we need him?

Perhaps the best major villain in a fantasy blockbuster is Tom Riddle, a.k.a. Voldemort, a.k.a. “he who must not be named”, if solely because he has two qualities utterly lacking in most major villains these days, i.e. a driving motivation (fear of death), and a goal that at least makes some sense both to him and his followers (run the world, put wizards in charge and enslave everyone else).

It all makes me think fondly of Spike, in Buffy the Vampire Slayer, who switches sides from Evil to Good because the Evil team wants to destroy the world, and he “quite likes the world”.

I recently finished reading the entire Harry Potter series to my twins, and it was wonderful. As a child I was so proud to read silently “in my head”; to rediscover the joy of reading as a performance later in life has been a revelation. I think that books are actually better read aloud, but it’s quite an effort to do all that reading.

Also, it’s hard to come up with voices and keep them straight (so I usually don’t bother, but the girls prefer it when I do).

Reading aloud also exposes a lot of weaknesses in a writer that reading quietly in one’s head conceals — e.g. I find Rowling to write dialog very poorly. I often paraphrase her characters for various reasons, but worse I find that she provides the wrong information in the wrong order. E.g. I’m often fooled into thinking person A is speaking when it’s person C (so I find myself having read in the wrong voice), or being told a character is speaking in a particular way too late to do any good (Hermione speaks “shrilly” all the time, a clumsy word and a dubious adverb for a feminist to constantly apply to her best female character).

Even so, my admiration for J.K. Rowling is considerably greater for having read these books aloud. For me, to read aloud as a performance is to pay much closer attention to each word than I ever do when reading to myself, and to feel the rhythm of dialog, and have to actively imagine the emotional takes of each character all the time. I notice and remember many things I missed on previous readings (or reading in this case, since I only ever read each book once before). It’s clear to me that Rowling planned the series carefully and well. I do have a lot of issues with it, but I have a lot of issues with everything. After all, I’m writing a critique of the current holy of holies, Game of Thrones.

Voldemort is, basically, Hitler

Voldemort doesn’t get to kill that many people, but in principle he is a ruthless race supremacist who plans to kill and/or enslave the “inferior” races, and he gathers about him fellow race-supremacists and opportunists. It’s not a subtle construct, but Hitler has about him a great deal more plausibility than most fantasy villains since, well, he actually existed. To understand why people might follow someone like Hitler, one can look at history books, or psychological research such as Milgram’s famous experiment. Hitler didn’t need to use mind control, he followed a well-established despotic populist playbook — presiding over a large scale criminal enterprise with all the usual systems of loyalty and reward. He offered a carrot and a stick. Ordinary German businessmen profited from slave labor (as do businessmen in the South, who use prison labor today, and as does the private prison industry from Trump’s war on immigration).

Even so, Voldemort exhibits some classic villainous behavior that is quite childish. E.g. I know of no evidence that Hitler was personally sadistic. He hired sadists. He created an environment where sadists were able to thrive. He didn’t go around gleefully torturing and murdering people. Indeed, Hitler portrayed himself and saw himself as a good-natured family man (odd though his family was). He understood the value of PR.

My single biggest disappointment with the Harry Potter books is that the resolution depends on only the least of Voldemort’s core failings (he doesn’t understand “love” — awwww) and not his others (e.g. he’s a sociopathic race-supremacist). Indeed, even in the final battle when the House Elves join the fray, it is as comic relief (stabbing people in the ankles with kitchen knives) and ignores their vastly superior magical powers (how about apparating Death Eaters into volcanoes?)

All through the seventh book I couldn’t stop thinking of the climax of Ralph Bakshi’s Wizards where the gnome-like hero faces down his magically overwhelming brother and shows him “a trick mom taught me when you weren’t around”. Harry and Hermione were both raised as muggles, and yet never use their knowledge of the muggle world to significant advantage, despite the fact that muggles have powers superior in most ways to wizard magic (e.g. cell phones, night vision goggles, 9mm handguns). Indeed, zero attention is made to “Muggle Studies” beyond its teacher being one of Voldemort’s gratuitous victims.

Scouring the countryside for evil deeds to commit

There are many wonderful and unique things about Lyonesse as a fantasy epic, but perhaps the single greatest is the central villain, Casmir. (Note that Lyonesse has quite a few antagonists, and of them Casmir is hardly the most “evil”, but none of the villains is as cartoonishly implausible as pretty much every bad guy in Game of Thrones.)

Casmir is an ambitious, calculating, and ruthless medieval monarch. That’s basically it. He’s not a sadist. He’s not a racist. He’s definitely not a religious fanatic. When he does do nasty things, he does it on the down-low because he wants to be loved and feared. Like Voldemort, he’s not a touchy-feely kind of guy, but he’s not even devoid of conscience (e.g. he only carries out unjust sentences to avoid being seen as weak, and he recognizes the truth of accusations against him for his mistreatment of his daughter, Suldrun). He is a competent and diligent ruler (because he thinks it’s important to have the good opinion of his subjects). Indeed, as a ruler he’s distinctly preferable to virtually all of his rivals.

Casmir seems a villain chiefly because of his relationship with his daughter, Suldrun, and to a lesser extent because he has a tendency to quietly murder his former spies (both to save money and avoid risk). He has many admirable traits and a dry sense of humor. In essence, to simply be a competent medieval monarch you need to do a lot of things that seem pretty evil by today’s standards, and he does them with no great gusto. (Aillas, the main protagonist, executes a lot of people, and Shimrod, one of his friends, tortures a man to death.) If we knew nothing of Suldrun, and nothing behind the scenes of Casmir’s reign, we might consider him a capable and ambitious man who had a lot of bad luck. Similarly, if we were to judge him by the people he surrounds himself with, he is not a terrible person.

Furthermore, we can fully understand why people would choose to support Casmir and risk their lives on his behalf, we can picture a world in which he is victorious, we can see why the common people might not care whether he wins or loses, and yet he is an entirely satisfying villain. Not only is this more morally sophisticated than most fantasy novels, it’s more morally sophisticated than most contemporary dramas.

Let’s do a great epic fantasy with a great villain

There are many reasons I prefer the Lyonesse Trilogy to the Song of Fire and Ice. To start with, it’s shorter and much faster-paced. The Elder Isles seem like a place people would generally enjoy living in. The plot is clever but not incomprehensible and the cast of characters large but not unmanageable. The military strategizing does not dominate the story, but the handling of strategy and tactics is both deft and on point. (The competent generals actually care about lines of supply and reconnaissance. Their navies, for example, are not constantly taken unawares.) It also manages to blend historical allusion (it’s set on an archipelago in the Atlantic that has sunk beneath the ocean) with fairytale qualities and brutally plausible pagan practices.

And, not infrequently, it’s also very funny.

Lyonesse is not without flaws — the third book feels rushed (Vance clearly wanted it done with and had worked out the plot arc well in advance), There’s casual and unnecessary homophobia, and there’s no warrior queen in the first book (Ehirme and Glyneth would need to be beefed up, Glyneth could be made a couple of years older, Yane could just as easily be a woman). Vance’s dialog is often hilarious, but over-stylized for some tastes. Nothing a good TV adaptation can’t fix.

But the reliance on faceless, inexplicably and implacably evil major villains who just want to destroy the world, and a motley supporting cast of pointlessly sadistic lesser villains, is the single catastrophic failing of Game of Thrones. I’ll watch it to the end, but seriously. Let’s have a story with actual sides.