30 October 2007

The other night, Matt was showing me his newly unlocked iPod Touch. I was playing with the shell application – just poking around, running top, etc – and rotated the iPod onto its side, just to see if the screen-rotation stuff worked in the third-party application.

After a while, Matt picked up what I was doing – as I poked around, when I found an app that felt like it should have a horizontal view, I would tip the iPod over, wait a second, and then tip it back.

It reminds me of a running joke my parents had with me ever since I was little. I used to pick up Christmas presents and shake them, and if they rattled, I’d assume that they were Lego (Lego, at the time, being the only kind of present I got that rattled). Ever since, we’ve always joked that rattling presents are Lego. And just like I rattled presents to see if they had the potential to be Lego, so you “rattle” the iPod to see if an application has the potential to be rotated.

You don’t necessarily need a visual signpost (an icon or alert) that such functionality is available; you just rotate the device, wait a second, and then flip it back. As a user, you’re interrogating the user to see if that particular interaction is possible. Is that good design? In some kinds of interaction, I don’t think so; you don’t want to poke every button or crawl through every menu just to find out what is or isn’t possible.

With the iPod/iPhone, though, we’re not crawling menus; we’re just interrogating the device to see if it supports a single kind of interaction. We only want a true or false back from it. Couple that boolean response with the simplicity of the accelerometer interface, and these “rattling” interactions come at a much lower cost.

I like rattling as a metaphor for this kind of interaction; it’s the equivalent of responds_to? in Ruby, I guess. What are other good examples of rattling-type interactions I’m missing? And how good are the implementations of it in software or on the web?

1 comment on this entry.

  • Tom Carden | 31 Oct 2007

    Mouse-over cursor changes. Definitely.

    Javascript-only onmouseover things normally feel wrong, but throw in the css needed to change the cursor to a pointer (or a hand for dragging) and suddenly it feels like the web again.

    Java and CSS give you a bunch of proper pointers by default, but Flash only gives you two before you have to hide the cursor and fake it at the framerate of the Flash player instead of the OS. Always hated that.

    I think every non-native GUI toolkit has its smells – do the widgets respond to all the OS’s usual keyboard shortcuts (particularly for navigating around text). Adobe products work one way, Microsoft another – I use the kinds of interactions you’ve identified to sniff out a new app and see which pathways will work and which won’t.