Yesterday Google release version 52 of their Chrome web browser
to a stable branch and started pushing it out to everyone who
uses Chrome. Usually I do not notice this, and wait to update my
Chrome until those 3 little bars turn red. Yesterday evening the
first of our customers starting seeing the results of this
update: a less than functional product. I found out about the issue
through our customer relationship manager this morning. After the
usual attempts to reproduce the issue which only occurred on
Chrome on a Mac with Chrome on my Mac, I informed him that it
couldn't be reproduced.
At this juncture in many a bug report, there isn't a whole lot
further to go on. A bug that can't be reproduced can't really be
fixed - indeed, how would you even know if you did? But we had a
time for the occurance of the bug, so I was able to check the
logs for differences between her machine, where the bug happened,
and my machine, where it didn't. Same operating system. Same
version of that system. Same browser - Chrome, just as had been
reported. But I was running Chrome version 51 and she was
running version 52. However, my Chrome browser didn't have any
updates available. Consulting the
Chrome blog
I learned when version 52 had been released (the night before)
and that it was slowly being rolled out to browsers.
Other people in the office were also currently running version
51 just like me and didn't have the update available yet either.
So I started a guessing game about what the possible issues
might be. A syntax error that had slipped through and this new
version of Chrome was stricter and caught it? Unlikely because I
used a linter to check all the Javascript. A bug introduced into
this new version of Chrome that broke an edge case appearing in
our website's code? Possible, but not super likely and no way to
test until I got the update. One of the libraries among our
dependencies having an issue I settled on as the most likely
possibility.
So I set out to research where our Javascript dependencies might
have fallen behind to the point of breaking. Since it was only
happening in one part of the application this limited the scope
of the search to Javascript libraries used there. It's funny.
Updating some things *cough* jQuery *cough* breaks things but
failing to update others leads to breakage when browsers
remove deprecated features.
The whole idea of servers transmitting
code out to thousands of different possible OS/browser/extension
combinations and expecting the code to be run there correctly is
one of the ludicrous foundations the internet is built on. That's
why when I learned to build webpages we built two versions: one
to run javascript, and one to present static content for browsers
where javascript was turned off. I was one of those people who
had it turned off. For years. It was an unnecessary security risk.
But that was before AJAX...
After formulating my theories I moved on to other issues for the
day, until someone else in the office found the update available
and clued me in.
I checked my Chrome for the update. It was there. So I pulled
the plug and restarted Chrome. This is no small task because I'm
usually logged in to about a dozen services which I've set up to
require 2-factor authentication. I've been really serious about
implementing that level of security ever since
PatientFocus hacked my LinkedIn account.
Sure enough, the issue appeared right away and I was quickly
able to isolate the library responsible and upgrade it.
This got me thinking about the web: what it was created to be and
what it has become. HTML was supposed to be a way to make text
files link to other text files and binary files (like images)
for the organization of information. It was designed in an
incredibly durable way and useful links were soon duplicated all
over the web so that the removal of any one page would not cut
them off from the web. Then came Javascript so we could run code
to do things on and interact with those web pages.
And then CSS to simplify styling them.
Google's fundamental insight was that the value was in the links.
But look what this ecosystem has become. Information useful and
accessible on Tuesday can be rendered inaccessible by Thursday
simply by a single browser, albiet the most popular, changing
the way they handle Javascript. This is not a way to stably
preserve information through the ages. The web today is as
fleeting as a boomtown newspaper in the Old West. That is,
without people like yours truly to keep updating things whole areas
quickly become ghost towns. Is that the way it should be?
And so castles made of sand melt into the sea. Eventually. . .
-
Also, today my Grandma turned 90. This woman has been an inspiration
to my parents, myself, and my children. I hope she endures to
inspire my grandchildren.
|