Grow up JavaScript

The other week, somebody posted this article by Jared White in one of the chats at work.  It decries the "shocking immaturity" of the ecosystem around JavaScript and Node.JS.

I mean...yeah.  But it's not like this is news.  The Node ecosystem has been messed up for years.  Remember the left-pad debacle?  That was five years ago.  It's pretty clear that the ecosystem was messed up then.  So I guess this article just tells us that not much has changed.

To be fair, a lot of the stuff Jared complains about isn't really specific to the JavaScript ecosystem.  I've also been in the industry for 20 years and I can say from experience that bugs and hype are endemic to most of the industry and have been for quite some time.  For example, in the early days of Rails, I remember seeing a million variations on the "build your own blog in 10 minutes with Ruby on Rails" tutorials.  And yes, that's fine, you can make a simple demo app in 10 minutes.  Whoop-de-doo.  In reality, what that usually means is that on a two-month project you've saved yourself...maybe a day or two at most.  There are lots of tools and framework in lots of language ecosystems that are grossly over-hyped - it's almost standard practice in the industry.

As for bugs, I can't speak to Jared's experience.  In any software ecosystem, bugs are obviously common and not mentioning them is almost de rigueur.  I mean, if you're developing a framework or library, of course you're not going to advertise the bugs and limitations of your tool.  You want people to use it, not be scared away.  But I'm willing to accept Jared's assertion that the JavaScript world is uniquely bad.  I know my experience of client-side JS libraries is...not fantastic in terms of reliability or documentation.  So while I'm not sure he's right, I wouldn't be surprised if he was.

I do think his point about the learning curve is interesting and valid, though I don't know that it relates specifically to bugs.  I haven't gotten deep into many of the fancy new JavaScript frameworks, but they do seem to be staggeringly complex.  I started working with JavaScript way back in 2005, when all you needed to do what save your code in a text file, open that file up in a browser, and see what it did.  It was extremely simple and the bar to entry was ridiculously low.  Then, a few years ago, I decided to try out React, since that's the big new thing.   Just to do "Hello, World!", I had to get my head around their weird template syntax, install a transpiler, and run some kind of server process (I don't even remember - maybe that's changed by now).  And when I saw that work, I quit because I had actual work to do.  It's hard for me to remember what it was like to be a beginner, but I can imagine that this kind of an on-ramp would be pretty daunting, even with the dumbed-down tutorials.  Heck, it seemed like kind of a lot to me, and I'm an experienced professional!

Honestly, I kind of wonder how much of the problems Jared is seeing stem from the "youth" of the JavaScript ecosystem.  I'm not talking about the language, of course.  I'm thinking more of the historical and cultural part of the ecosystem.  Consider:

  1. While JavaScript has been around for a 25 years, it was widely considered a "toy" language for the first 10 years or so.  Remember - JavaScript came out in 1995, but jQuery didn't come along until 2005.  And these days, building your site on jQuery is the equivalent of building your house out of mud and sticks.
  2. In the roughly 15 years of JavaScript's non-toy lifespan, there's been a lot of churn in the web space.  And during much of that time, it was considered important for many businesses to support legacy web browsers.  I remember many times having to stop myself from using "new" features of JavaScript because, well, we still have to support old versions of Internet Explorer.  Yeah, nobody cares about that anymore (thank God), but it wasn't all that long ago that they did.  Heck, I remember getting yelled at in 2015 because I forgot to test something in IE9, which was released in 2010!
  3. From 1 and 2 above, it's clear that, in terms of the evolution of the ecosystem, the 25 year history of JavaScript is really a lot less than 25 years.  In fact, it's probably only within the last five years or so that we've managed to shake off most of the legacy cruft and get adoption of modern stuff beyond the handful of early-adopters.
  4. On the cultural front, it's been my experience that a lot of young people these days get into coding through web development.  This is not a bad thing - everybody has to start somewhere and the web is a relatively accessible and popular medium.  But it's also my experience that a lot of the people who create open-source tools and libraries are younger, because they're less likely to have families and other obligations and hence more likely to have the free time.  Again, this is not bad, but it means that the people writing the tools are disproportionately likely to be less experienced.
  5. So while there are plenty of things in the JavaScript world that are old enough that they should be mature, we can see from 3 and 4 that this might not necessarily be the case.  When a tool is developed by relatively inexperienced coders and hasn't been widely used outside a relatively small circle for very long, it shouldn't come as a surprise when they have some issues.

Of course, I'm just spit-balling here - I could be completely wrong.  But the point is that developing a stable ecosystem takes time, and the JavaScript ecosystem hasn't actually had as much real time to develop as the calendar suggests.  I mean, there's still a hot new framework coming out every other week, so it doesn't seem like the ecosystem has even finished stabilizing yet.  Maybe in a few years things will settle down more and quality will improve.

Or maybe not.  We'll see.  In the mean time, we just have to make do with what we have.

Back to the movies: The Eternals

A couple of weeks ago, my wife and I took a nice, relaxing long weekend at Keuka Lake.  We had some nice meals; went to the Glenn Curtis museum, which I'd never visited before; and we tasted some very nice wines, particularly the Cabernet Frank from Domaine LeSeurre and several of the wines at Dr. Konstantin Frank.  We even did something we haven't done in the almost two years since the pandemic started - we went to a movie!  It was a late afternoon show and there were only a couple of other people in the theater, so it was pretty nice.

The only down side was that the movie we saw was Marvel's Eternals.  Spoiler alert: it wasn't very good.  (But seriously, there are a couple of spoilers.)

Honestly, I didn't have high hopes going into this movie.  I saw the last two Avengers films and, frankly, after those I'm kind of done with the Marvel Cinematic Universe.  It's not that those particular movies were bad, it's just that I'm tired of the whole concept.  There's too many characters, too many movies, too many attempts to tie them together.  The movies aren't that good and I just don't care enough to even try to keep up with them.  And I went into this film knowing basically nothing about The Eternals other than being vaguely aware that it was the title of a comic book in the Marvel Universe.

On the up side, the special effects were very good.  I mean, for the most part.  (But for the kind of budget Marvel movies get, they damned well better be.)  And I guess some of the action scenes were entertaining.  Unfortunately, that's about it.

I had a number of problems with this film.  One of the overriding issues is probably that they actually try to develop all of the Eternals as characters, at least to some extent.  Normally, this would be a good thing.  But there are like ten Eternals and this is only a two and a half hour film.  There just isn't time to develop that many characters to a significant extent and it didn't really work.  They gave most of the characters a little development, but it wasn't enough to make me actually care about them.  So all it really did was drag out the movie and slow down the pace.

The two characters that they did put more effort into were the leads, Sersi and Ikaris.  This was also a problem, because they didn't do a good job.  These characters were supposed to have had a very long-term romantic relationship in the past, which was shown in a number of flashbacks.  However, the actors had absolutely no chemistry at all.  I mean, to me it not only didn't look like they were in love, I wasn't even convinced that they liked each other all that much.  The end result was that the relationship angle didn't land at all and the scenes that were trying to develop it were just tedious and unengaging.  The only silver lining was that the leads were so boring and unlikable that they made the other characters more relatable.

Not that most of those were much better.  The actors didn't necessarily do a bad job, but they didn't have much to work with.  And I'm a little mystified by the casting.  I mean, aren't Salma Hayek and Angelina Jolie kind of big names to be taking what amounted to bit parts?  Are their careers in the toilet or something and I just didn't know it?  It's not like they got no screen time, but they were definitely not focal characters.  Most of the focus was on Gemma Chan and Richard Madden, who are not unknowns, but are decidedly "small" names by comparison (as were most of the other Eternals).  And it's not like this was a compelling artistic choice, like Milos Foreman casting a relatively unknown Tom Hulce as Mozart in Amadeus.  Chan and Madden weren't a phenomenal combination, they didn't have amazing chemistry - they were "fine" at best.  It just seems really odd to have such big names in the film if you're not going to use them.

But, of course, my main issue was with the writing.  Inspired by this movie, I'd like to propose a new law: Screenwriters are hereby prohibited from writing characters who are supposed to be significantly older than the average human life span.  

Seriously, the Eternals are supposed to be 7000 years old.  They've been around humans that entire time.  They were supposed to have disbanded as a team and assimilated into the human population something like 500 years ago.  And yet their actions and motivations are portrayed as the kind of thing you'd see from a teenager or twenty-something.  It's absurd.  I know they're technically not supposed to be human, but they're certainly portrayed that way.  Yet we're supposed to believe that they haven't matured or developed a wider perspective in 7000 years?  Come on!  I know everybody has issues, but I kind of feel like a few centuries should be more than enough time to deal with them.  But maybe my expectations are a little high.  

The one I found especially galling was Ajak's change of heart.  She actually remembered all of planets that she'd helped Arishem destroy to hatch new celestials, but when she saw the Avengers undo Thanos' "snap", she decided that this planet was different, that the people on this world deserved to live.  But what about all those other worlds she helped destroy?  Were they just populated by no-account NPCs who didn't deserve to live?  What about the dynamism added to the universe by the rise of new celestials and their continued creation of innumerable new worlds and galaxies?  Does she just not think that's important anymore?  Does creating a handful of super heroes really make Earth so much more special than all the others?  So nothing she saw in the previous 7000 years convinced her that humanity was worth saving, but the Avengers completely changed everything?  To put it generously, the moral calculus of that analysis seems a little sketchy.  You'd think someone who's been around that long would have put some more thought into ethics.

Sorry, but this whole thing is just stupid.  And that's my main problem at the end of the day: the plot was just stupid.  They spent too much time trying to the develop the characters and didn't leave enough time to make the plot actually make sense.  If they'd been successful in making a compelling, character driven story, then maybe it could have been OK.  But they weren't.  The dialog was clumsy and the characters were one-dimensional, with the result that I couldn't maintain enough suspension of disbelief to overlook the plot holes and simplistic characterization.  This is why I stopped caring about the MCU.