Cool URIs Don’t Change

A long time ago in a galaxy far, far away… Or, more accurately, thirteen years ago while living in a house maybe 600-800km away (depending on your mode of transport), I published a tutorial entitled JavaScript for E-Commerce, or JSEC for short.

From the web server logs, the JSEC tutorial (and, for that matter, the KeyGlove project, which happened at a similar time), are still pretty high on the list of search terms and entry pages that land random visitors on And I still think the JSEC tutorial is a decent, well-structured tutorial, insofar as it leads one through a certain development process, but I did realise at some point that even though the code all still works in modern web browsers, the tutorial no longer necessarily instructs best practice. For example, it presents a makeEmptyArray() function and associated scaffolding necessary for running on Netscape 2.0.

You all remember Netscape 2.0, right?

But even though the content is outdated, I could never bring myself to take the JSEC tutorial down, because cool URIs don’t change. This is a positive restatement of the old saw “I hope you know that this will go down on your permanent record”. Consequently I added a note at the top of the table of contents to say:

Please note that this tutorial was first published in the year 2000, and is based on work conducted between 1997 and 2000. While we trust that it still constitutes useful tutorial material, it should not necessarily be construed as to impart best practice in the year $THIS_YEAR.

That’s suitably cautionary, but I really want to take the opportunity to state clearly that if I were building an online shop today, I would probably not do so as outlined in the JSEC tutorial. There are several reasons for this, the two most obvious being:

  1. The framework presented uses <frameset> heavily. This will almost certainly provide a poor experience for mobile web users, which is a huge number of people these days. I suspect it’s also problematic for people using screen readers.
  2. At the time the tutorial was written, server-side (PHP/Python/Ruby etc.) ecommerce frameworks were either rare, immature, expensive, nonexistent, or perhaps all of the above. I rather hope think things have changed in the meantime, which makes a pure JavaScript solution less interesting than it used to be.

In summary, the JSEC tutorial will remain online for all to enjoy, but do please be aware of the historical context in which it was created.

(I also find it entertaining that I can believably use the term “historical context” after only a decade or so. Aaah, technology….)