Here’s what’s on my desk at work: an iMac (with keyboard, mouse and USB cup warmer), some paper, pens, a few books and an A4-sized copy of Paul Downey’s The URI Is The Thing—an intricately-detailed Boschian map of all things RESTful. It’s released under a Creative Commons license, so feel free to download the PDF from archive.org, print it out and keep it on your own desk.
I love good URL design. I found myself nodding vigorously in agreement with just about every point in this great piece on URL design:
URLs are universal. They work in Firefox, Chrome, Safari, Internet Explorer, cURL, wget, your iPhone, Android and even written down on sticky notes. They are the one universal syntax of the web. Don’t take that for granted.
That’s why I feel so disappointed and sad when I see previously-robust URLs swapped out for the fragile #!
fragment identifiers. I find it hard to articulate my sadness, but it’s related to what Ben said in his comment to Nicholas’s article on how many users have JavaScript disabled:
The truth is that if site content doesn’t load through curl it’s broken.
Or, as Simon put it:
The Web for me is still URLs and HTML. I don’t want a Web which can only be understood by running a JavaScript interpreter against it.
If I copy and paste the URL of that tweet, I get http://twitter.com/#!/simonw/status/25696723761
…which requires a JavaScript interpreter to resolve.
Fortunately, those fragile Twitter URLs will be replaced with proper robust identifiers if this demo by Twitter engineer Ben Cherry is anything to go by. It’s an illustration of saner HTML5 history management using the history.pushState
method.