First off, this post has been way too long in the making. I should have written it a couple months ago, but that’s the thing about running things, you don’t always have time to come up for air. Anyway, without further ado…
Dispatches From The Internets
Retreat, remembered
Now Read This I
I find a lot of cool links throughout the week and I usually bookmark them on some service, like Pinboard, but for some reason I never considered posting them to the blog. I’m recitfying that as of today.
Here are last week’s finds:
- HTML5 Pattern
A user-generated collection of helpful regular expressions for using HTML5’s form validationpatternattribute. - Mobile Web Design 2.0 (PDF, 61K)
Cameron Moll’s tongue-in-cheek second edition of his popular mobile guidebook. - Design and UX Books I Have Loved (Articles, Too!)
Zeldman recounts his favorites for Rosenfeld Media’s blog. A few of mine are in there. - CSS Summit
3rd Annual CSS conference from Environments for Humans. - Designing for Content: Creating a Message Hierarchy
Steph Hay’s inaugural piece for Web Standards Sherpa. Hint: she started out with a bang. - Monkey steals camera to snap himself
Pure craziness.
I (Finally) Wrote a Book
Over the last five years, one of the most frequent questions I’ve gotten has been “When are you going to write a book?”
On Requiring Facebook for Login
Last night, I had a great conversation on Twitter with Jeff Croft about the pros and cons of requiring a Facebook account for login. It’s a trend that seems to be on the rise and I, personally, don’t think it’s a good long term strategy.
Knock on Wood (Pulp)
I was pretty chuffed to see Web Design in a Nutshell, a book I wrote a few chapters for, show up in this incredible video of a book xylophone. Check it out:
Face It: You Can’t Rely on JavaScript
I’ve been cautioning folks against over-reliance on JavaScript for the better part of a decade. In that time, I harped a lot on Lala.com (which was eventually bought by Apple and shuttered) because they loaded all of their content via Ajax. If you showed up to the page with JavaScript disabled, you were greeted with a curt “you must be this high to ride” type message and, my favorite feature, a “loading” indicator:

We Built a Chrome App
Yesterday saw the launch of the Chrome App Store and, along with it, a Chrome app we created called the wikiHow Survival Kit (also available as a web app).
Honored
Late last week, the nominees for the 2010 .net Awards were announced and I was amazed to find myself nominated for not one, but two awards.
Be a good localStorage neighbor
Most JavaScript developers are keenly aware of what they add to the global object and do their best to namespace their work or sequester it in closures. Namespacing and closures reduce the likelihood that necessary functions and variables will be accidentally overwritten, causing errors to be thrown and interfaces to break. Unfortunately, the localStorage API (available in most modern browsers) doesn’t inherently support creating isolated caches for each script because the cache is site-specific and consists simply of key-value pairs. Internet Explorer’s userData behavior (which is available all the way back to IE5) does support sequestering the cache to a degree because you need to provide a name for it, but the API doesn’t make a whole lot of sense and isn’t at all equivalent to localStorage.
Give a hoot
As any competent JavaScript knows, it’s not cool to litter the global namespace with variables, functions, and the like. It’s far better to encapsulate your code in an object, a series of objects, or even a closure, exposing only what you absolutely need to via the global namespace. This helps reduce the potential for collisions that will probably cause your site to break.