Most people are familiar with Second Life, Linden Lab’s virtual world. I’d always wanted to do something interesting in SL but nothing had really piqued my interest — until I heard that they had added support in their scripting language, LSL, for making HTTP calls. With the huge growth of web-based apps, it could easily be said that HTTP is now the client-server protocol of choice for today’s developers — and it got me thinking: If Second Life could talk the same protocol as many of the M2M user interfaces we’ve written, could Second Life become an interface itself? Not only providing a view on real-world data, but controlling it?

Turns out that it can. We decided a Nabaztag would be a great ‘control subject’ and set to work.

We decided to use Second Life not only for control, but also for display — in the video (streaming from a webcam pointed at the bunny), you can see an avatar ‘touching’ (clicking) on the sphere floating next to him, sending a web request over the Internet to a server (the local device) which handles the request and activates the bunny… no different than if we had an ‘On’ button in our M2M webapp! We later extended it to have the sphere light up when the server reported that the bunny was active, providing feedback in both directions.

So… what did we learn from this? Not to be beholden to traditional ideas of what an M2M application should be. Modern web applications in a browser are great, but what if a user wants to see data in Facebook? Or wants their data in a GeoRSS feed? If your teen users spend all their time text-messaging and in MySpace, then your world-class website is worthless to them. You have to give them what they want, and you have to make it fit the way they work.

If you’re interested in the details behind the Second Life integration, there’s a technical explanation on my personal blog.