Rudi Grobler recently posted an article called ‘Classic Jukebox‘ that shows how to build a jukebox application using custom hardware. It’s a very cool idea, and his article is well worth reading.

This article reminds me of a problem that I was discussing with someone at work the other day, and have been thinking about since. What are the best practices for designing an app, let’s say the Jukebox app, such that it can accomodate multiple form factors? Suppose you wanted this app to be controlled by a custom input device, or a regular mouse + keyboard, or on a multi-touch device like Microsoft Surface, or an HP TouchSmart running Windows 7.

Each form factor would bring along new, and potentially unique, interaction possibilities: Surface allows for multi-finger gestures, while a traditional keyboard allows for things like shortcut keys, etc. How should the MVVM design be used/augmented to make the input processing device-specific, without convulting the core application logic (play next song, pause, lower volume, etc)? Should there be an intermediary layer between View and ViewModel, which is perhaps an InteractionModel, to which the device-specific View is bound? This topic is something that I’m very interested in, so expect to see some more posts on it in the near future.

I started working at IdentityMine a few weeks ago, and have been exposed to several very interesting projects made by some very smart people. One project that I think has a lot of potential was created by Andrew Whiddett. He created a library that adds in-depth routed event support in Silverlight 3. If you are working with Silverlight, I highly suggest you check this exciting project out! I’m very interested in seeing where this goes…