About Javascript

Javascript (also and more properly known as ECMAScript) is a programming language that some web browsers implement in order to let scripts control the dynamic behaviour of a web page, such as what happens when the user clicks on some region of text.

We at Cat's Eye Technologies have long taken a dim view of this predominant application of Javascript. It's gratuitous; web pages exist in order to convey information, not be playthings. Managing the user interface is the browser's job; what makes the page think it can do it better? But more to the point, putting a Turing-complete control language in a browser is a way to let web pages be just as impossible to predict, and just as buggy, as general computer programs. Multiply this by the number and degree of variations between Javascript specifications and implementations to experience the full hellishness of this fact.

Or, as we used to say, web pages shouldn't crash your browser.

But we also admit that Javascript, used judiciously, can improve the usability of a web page.

So we have decided to compromise. Our policy regarding Javascript is as follows.

  • If you don't like it, turn it off.

    Everything on this website is navigable even with Javascript disabled. (It even looks acceptable without styling. So if you don't like our far-out background graphics, or you want the genuine experience of surfing the web circa 1996, try turning off CSS too.) If you're using a browser that doesn't allow you to disable these features, you might want to consider why you chose to use a tool that takes that power away from you.

  • Use commodity components.

    As much as we like to "roll our own" computational stuff here at Cat's Eye Technologies, the application domain of Javascript generally makes that option too risky. Correct Javascript must not only encode a correct algorithm, it must correctly account for differences between Javascript implementations and browsers. In addition, being interactive, any incorrect Javascript will have a direct negative impact on the user experience.

    So what we do is we use commodity components -- open-source Javascript modules that are community-developed. The broad base of users and developers helps ensure that the scripts are tested both deeply and broadly (that is, across a large cross-section of browsers.)

  • Keep it simple, stupid.

    When writing our own Javascript is unavoidable, we keep it as simple as possible. Is there a way to write it that doesn't involve a loop? Is there a way to accomplish the same thing using stylesheets instead? Does the interactive feature actually not make the site more usable? If the answers to any of these are "yes" then there's a good chance that the script they're being asked about won't get written.