Upcoming Events
Southwest Gaming Expo
11/20 - 11/22 @ Dallas, TX

Workshop on Network and Systems Support for Games (NetGames 2009)
11/23 - 11/25 @ Paris, France

ICIDS 2009 Interactive Storytelling
12/9 - 12/11 @ Guimarães, Portugal

Global Game Jam
1/29 - 1/31  

More events...


Quick Stats
6558 people currently visiting GDNet.
2341 articles in the reference section.

Help us fight cancer!
Join SETI Team GDNet!



Link to us

Link to us

Home » Features » Product Reviews » The Chumby
  Intel sponsors gamedev.net search:   

Product Reviews
Jump to:
Hardware
All product reviews

Product: The Chumby
Developer: Chumby Industries
Reviewer: John Hattan
Posted: April 22, 2008
Rating:
Discuss this review

The Chumby
by John Hattan

A Widget Platform?

The Chumby is a "widget platform", which is one of those terms that only came into being recently and is difficult to describe but in actual use, makes sense. If you think about all the software-based widgets platforms that are out there (Yahoo Widgets, Apple Dashboard, Vista Sidebar, etc), you see some commonality of features. . .

  1. Small (at least in pixel-size) and unobtrusive
  2. Informational
  3. Not especially interactive

One of the most obvious candidates for widget-hood (and the first widget that appears on any widget platform) is the weather-forecaster widget, and you won't find a widget platform, software or hardware, that lacks it. It's a little thing that sits on your desktop and quietly displays your local weather as well as a forecast for the next couple of days. It's not something that you need to summon into being, and it's not something that requires your interaction. It's just something that's "there", and it's available at-a-glance if you ever need that kind of information.

Other than the humble weather-widget, there are loads of other services that have been widget-ized, to greater and lesser value. There are more clocks than you can count, CPU usage-meters, system temperature-monitors, calendars, to-do-lists, and other tools that are occasionally useful but don't really warrant being fully-fledged applications that require your attention.

Which brings us to the Chumby. The Chumby is a standalone hardware widget-platform. It's actually a tiny standalone computer that sits in about the simplest housing imaginable, a soft leatherbound kidney bean-shaped affair with a small LCD screen. Hardware-wise, the closest thing you could compare it to would be a Windows Mobile PocketPC device. Like most Windows Mobile devices, it's running an ARM processor and has a 320x240 touch-sensitive color screen and has 32mb of RAM, but that's where the similarities end. The Chumby runs Linux and has no visible input devices or keyboard, although it does have a touch-sensitive screen, an accelerometer/tilt-sensor, and a hidden button at the top about where the snooze-bar would be if the Chumby was an alarm clock.

The Chumby is also an open platform. And this openness works at two levels. First off, all of the visible User Interface (UI) of the Chumby as well as all the widgets are done in Flash, specifically Flash Lite 3, and are streamed to the Chumby from the Chumby.com site. So all screen output, sound, touchscreen input, and network communication can be done via those features built into Flash. Some Chumby hardware features that aren't intrinsically built into the Flash platform, like the tilt-sensor input, are available as extensions to the built-in Flash objects.

The next level of openness in the Chumby extends (not surprisingly, because it's Linux) to the Chumby's OS layer. While most widget developers will be satisfied working strictly at the Flash level, the Chumby's hardware hooks are documented for those who want to hack around with the Chumby at the OS level. And there are a few interesting projects being done. A little Googling will avail you of projects intended to convert Chumbys into robot controllers and even low-cost GPS units when coupled with a USB GPS puck. They even publish templates and instructions for replacing the leather "skin" of the unit if you want to knit your own housing.

Chumby network communication is via 802.11b/g Wifi, so you'll need a wifi access point if you want your Chumby to do something other than display the default clock. Setting up the Chumby is very simple, even if you have an encrypted connection, and once you have the connection set up, you can pretty-much forget about it. After setting up your connection, you'll need to set up an account on chumby.com and then "marry" your Chumby to that account, which is a fairly easy process. Once you've done that, you can add widgets to your Chumby from the Chumby.com site by dragging widgets into a little rotation-timeline. Your Chumby will automatically update itself with your widget list.

In addition to widgets, the Chumby also functions as a fairly capable internet radio. Out of the box, it supports SHOUTcast, Mediafly, CBS, New York Times, Radio Free Chumby (apparently a custom service), and SlimServer (for streaming off your own network if you have a SlimServer-capable server). The Chumby can also play music files off an iPod or a USB thumbdrive that's attached directly to the back of the unit. The music is pretty tinny if played from its tiny stereo speakers, but it sounds just fine with headphones. Software updates are adding new stations, and I hope someone over there is working on Pandora support.

And this does bring up a point. While the Chumby can do some limited streaming or widget-playback from a connected USB device, it's really not all that useful without an internet connection. It has a 9v backup battery attachment under the unit, which seems to only be useful if you plan to hack the unit to run standalone. After all, if the power goes out in your house, it's a good conclusion that you're going to lose your Wifi connection too, and if the Chumby doesn't have a Wifi connection, it defaults back to "clock mode". I suppose the Chumby could function as a travel alarm clock in this mode, but you're probably better off just getting a cheap travel alarm clock over letting your $180 device do that work for you.

And while hotels do have Wifi nowadays, they usually have some kind of login-page that you must first visit to unlock the connection, presumably to prevent non-guests from borrowing the connection. And the Chumby doesn't contain an actual web-browser, so getting your Chumby to communicate with a setup like that might be difficult.

Flash Lite 3

The Chumby's widget "engine" is based on Flash Lite 3. Flash Lite is a special minimal version of Flash that's intended to run on resource-constrained platforms, mostly cellphones. And while previous iterations of Flash Lite were pretty horrible in terms of capability, Flash Lite 3 is actually pretty good.

Although that doesn't mean that you can take your latest Flash-based MMORPG client, modify it to fit the screen, and drop it in place. In terms of its actual capabilities, it's best summarized as "Flash 7 plus FLV video support". Flash Lite 2 supported the lion's share of Flash 7 features, with the glaring exception of FLV (Flash Video) support. It's a glaring exception because if you don't support FLV, you don't support YouTube. And a handheld gizmo that doesn't run YouTube videos just isn't right. So Flash Lite 3 added FLV video support so folks could build YouTube players on 'em.

But still that doesn't mean that you can just compile your applet for Flash 7 (aka Flash MX 2004) and it'll run unmodified on a Chumby. Some desktop features like support for native OS fonts isn't there as well as some "premium" features like Flash Remoting that were presumably left out to save space. Still, if you can get your Flash applet to compile under Flash 7, you're 90% there.

Flash player capability isn't the only constraint on the Flash Lite platform. Performance is another biggie, and you just can't expect a widget that tests fine on a 3 Ghz multi-core workstation to look as good on a 200mhz mobile processor. The recommended frame-rate for Flash widgets is 12fps, which is well short of what you see today in most Flash content on the web. So expect to test your work often and be ready to remove features or simplify your graphics until you have something that performs reasonably.

Since this is a development website, I decided that it just wouldn't be fair to talk about development without actually developing something. So I put together a simple widget for the platform. And following the "spirit" of the Chumby, it's simple, informational, and passive. It's also a mite depressing. In fact, it's. . .

The Most Depressing Widget In The World

Yes, it's the Chumby Life-O-Meter, which is a gizmo that, given your birthdate and how old you think you'll be when you die, will tell you how much of your life is over. And, just to make sure that you notice the numbers inch a little higher every day, it calculates it to four decimal places.

One nice thing about Chumbys is that you don't actually have to own one if you want to develop widgets. You can head over to www.chumby.com, set up an account for yourself, and create a "virtual chumby" that displays widgets. You can then test out your widgets in the virtual Chumby. Here's a virtual Chumby showing off my widget as well as a couple others.

The code for the Life-o-Meter widget itself is pretty absurdly simple. The widget only has one frame, a couple of dynamic text-fields, and a little bit of calculation.

stop()


var birth = Date.UTC(CodeZoneReaperYear, CodeZoneReaperMonth-1, CodeZoneReaperDay)
var today = new Date().valueOf()
var death = Date.UTC(int(CodeZoneReaperYear)+int(CodeZoneReaperAge), CodeZoneReaperMonth-1, CodeZoneReaperDay)
var percent = Math.abs(Math.round((birth-today)/(death-birth)*1000000)/10000)


if(percent && CodeZoneReaperYear && CodeZoneReaperMonth && CodeZoneReaperDay && CodeZoneReaperAge)	// everything worked
{
	txtPercent.text =  percent + "%"
	txtMessage.text = Math.floor(Math.random()*2) ? "Have a nice day!" : "See you soon!"
}
else
{
	txtPercent.text = ""
	txtMessage.text = "Configure the\nwidget, mortal!"
}

That's really all there is to it. If you're an astute observer, though, you're wondering where the values for birth year, month, day, and your death-age are coming from. After all, the widget can't display how much of your life is over unless it knows how old you currently are. Those values are actually pre-populated into the _root namespace of your widget, so they're already there when it loads.

And those values are set in your config widget, which is an optional second widget that you should build if your project requires any kind of custom data. The config widget doesn't run on the chumby itself. That widget runs on the chumby.com site and is available under a "customize" option that each widget has in your widget timeline. And your config widget will need to receive and send some bits of XML from and to the chumby.com site to declare what variables you'd like to be stored and sent to the widget when it displays.

Once that's set up, then it's just a matter of uploading your widgets (the actual widget and the configuration widget) to Chumby.com, testing them, and making them public once they're confirmed to work.

Here's my config app. I'm not posting the code, because it's a bit long, but it's basically just a few lines of code that take the values in the fields, formats 'em as XML using the Flash XML classes, and sends it to chumby.com

And once Chumby.com has the configuration info that's associated with your widget, it'll send it along to your widget every time it displays.

If you have Flash and you'd like to look over the FLA files for my widget and the config widget, they're here.

Finally, if your budget is just enough for a Chumby and not enough for a copy of Flash, people have been successful developing widgets with third-party free tools. There's a good list of free tools that can build Chumby widgets over at the Chumby Wiki. Note that this list does not include the free version of Adobe Flex, as Flex can only target Flash 9 and later.

Deploying Your Widget

To test and deploy your widget, you need to upload it to the Chumby.com website under your account. When you first upload your widget, you'll most likely want to mark it private. This will set your widget so it's only visible to your own account and not the community at large. Once your widget is uploaded and marked private, you can add it to one of your widget channels, and it'll start showing up on your Chumby (real or virtual).

If you intend for your widget to be shared with the Chumby community, presumably after a couple of passes to ensure that your widget looks as good on the Chumby itself as it did on your computer, you'll mark the widget as "public". Once it's approved by someone at Chumby.com (mine took a couple of hours to be approved), it's made public and is available for everyone.

I presume if you made a widget that was only useful to yourself, like some kind of server monitor, you could just leave it private forever.

But is it useful?

That's a question that you'll just have to answer yourself. While the little thing is just plenty cute and it has loads of available widgets, is $180 worth it for a combination weather-forecaster, alarm clock, internet radio, and iPod speaker?

Well, I guess the answer to that is that the Chumby can really be what you make of it. One really useful widget that I use is the Server Uptime Meter. Every time it runs, it grabs the uptime from www.thecodezone.com's internet host (mediatemple) via a little piece of PHP installed on it, displaying the uptime and sounding an alarm if the server refuses to respond. When I first hooked up that applet, I thought it was a good idea of how a Chumby could be made into a real-time monitor of anything on the internet. As long as you can package some data in a form that Flash can grok (text or XML preferred) and you can reasonably display that information on a little screen, you can make a monitor. With literally a few minutes of work, a Chumby could be made into a meter for database health, an uptime display for a server-farm, a bandwidth-monitor, etc.

And that's doing things the easy way (i.e. with Flash). If you want to add some bits to the Linux kernel to perform jobs that can't be done in Flash, you're pretty open-ended.

My Chumby currently sits quietly under my monitors and keeps me apprised of the time, the news, the weather, my server uptime, and the continuing adventures of those wacky LOLcats. And I'm happy with it, although it does get a mite distracting when my eyes suddenly find that they have to choose between source code and pictures of cats operating invisible appliances.

Not sure if I'll ever get bold enough to cable it to a Roomba and teach it the three laws of robotics, but it's nice to know that that option is available to me. Until then it'll sit on my desk and keep me informed.


My Chumby nesting among the desk-clutter and showing off the Google News Feed. It fits quite nicely between my two monitors and on top of the Mac Mini.
(the "I'm not a Scientologist" thing is a box of mints I picked up in California)

 

After a long lead-time and a couple of staged rollouts, Chumbys are now available for general purchase at www.chumby.com for $180 (as of April 2008). The price includes the Chumby, AC adapter, instructions, and (just to be eclectic) a couple of burlap storage bags and three "Chumby Charms" to take up space on your desk.