Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Channels ▼

Mike Riley

Dr. Dobb's Bloggers

WIMM One Developer Review

February 27, 2012

The world is shrinking. At least that seems to be the case when writing micro-applications for the Android-based wearable computer platform, the WIMM One. This $199 developer preview device comes packed with the main WIMM 330 module and USB charging kit, as well as a black watchstrap to wear the WIMM module on your wrist.

[Click image to view at full size]

Figure 1. Wimm One developer preview device.

While not quite as small as Apple's latest iPod Nano, the WIMM One is still small enough to fit on a large wrist or wear as a pendant. In addition to the developer preview, the production WIMM One device can now also be purchased from Amazon for the same price.

[Click image to view at full size]

[Click image to view at full size]

To help seed developers with potential app ideas, the WIMM developer preview has several micro-apps preinstalled, including a calendar, clocks and timers, and a local weather program. Oddly lacking is a music player micro-app. Also lacking in this first-generation device is an external headphone jack. In fact, about the only sounds that emanate from the WIMM One are simple piezo speaker blips and bloops for audio alarms and notification events.

That said, the WIMM One does pack an impressive array of radios and sensors for its small size. Both WiFi and Bluetooth radios are on-board, along with an Accelerometer, a Magnetometer, and a recessed 14-pin interface port that connects to the USB paddle charger (sorry, no micro-USB port on board). The 16-bit full color, 160x160 pixel capacitive touch screen delivers a slightly larger than postage-sized stamp display of information that is ready to go at any time. Also impressive is the 30-hour battery life on a single charge, though that duration drops precipitously when radios are in full broadcast mode.

The WIMM module that I tested had Android 2.1 installed along with the custom WIMM extensions, predominantly for working with the tiny screen form factor and the on-board components. WIMM supports Over The Air (OTA) updates, and is expected to be updated to Android 2.3 in the near future.

Sampling the Micro-Apps

Upon receiving the WIMM One, developers and customers alike must enter the device's link code to be allowed to customize the preinstalled micro-apps. This link code will also be used to associate your device with WIMM so the WIMM One can access a marketplace that will allow WIMM One users the ability to obtain additional WIMM micro-apps. When the WIMM Micro App Store initially launches (UPDATE - The WIMM Micro App Store Beta is now online), it will not have any e-commerce component, so all apps in the App Store will initially be free to all WIMM One hardware owners. However, WIMM plans on adding an e-commerce component to its App Store some time after the App Store has launched, and promises to give 100% of an app's sold revenue (minus credit-card processing and return fees) for a limited time.

In the meantime, those interested in trying out some of the untested apps prior to the App Store's launch can download the .apk files directly here for alpha-state micro apps, and here for beta-state micro apps. While a majority of the micro apps are relatively simple watches and counters, there are some that take full advantage of the WIMM's Android underpinnings. For example, there's a port of the Ruboto IRB for WIMM that allows Ruby scripts to run on the device. While I didn't see any programs that I could qualify as a killer app for the platform, there are a lot of interesting rough ideas that have the potential to do some really neat functions. A couple ideas I had were:

  • A Bluetooth proximity client app that triggers a computer screen lock and unlock.
  • A server monitor that flashes and sounds out a red alert when a server goes down.
  • A remote control webcam operator and viewer.
  • A fitness app with a lap counter that displays traveling speed and direction.
  • A Dropbox micro client that can be used to share, un-share, download, and display image and text files.

Developing for the WIMM One

Interested developers can check out the WIMM platform right now, and no hardware purchase is required thanks to the Android Virtual Device platform available in the WIMM SDK. Developers first need to sign up for a free WIMM Developer account at dev.wimm.com and then download the WIMM Platform SDK. Then take a look at the Micro App Guidelines to consider the WIMM One's screen real-estate constraints when developing for the platform.

If you're already an Android developer, picking up on the WIMM's custom extensions is easy. The SDK contains the source and resources for four sample micro-apps, ranging from the obligatory HelloWorld to the complete SampleWatch app. Network and Notification demos are also included in the SDK. The notification example is especially important because the WIMM platform does not use the standard Android notification system due to the screen size limitation of the device. However, most of the other standard Android 2.1 libraries also work just fine on the WIMM, so seasoned Android developers should be able to codify their ideas relatively quickly for the WIMM One.

And for those interested in further extending the hardware platform, WIMM offers a Hardware Developer Kit for Accessories. If they succeed, this could spawn a whole new category of smart, wearable accessories, from radio "earrings" to "magic" rings. Some pretty cool possibilities ahead.

Once you have the SDK unzipped and have copied the addon_wimm_one_7 folder into your add-ons folder in your main Android SDK's folder, launch the WIMM Emulator by going to the tools folder inside the addon_wimm_one_7 directory and run the "emu" executable script. This will create the WIMM emulator that can be interacted with via the usual Android Debug Bridge (ADB) tools. And the WIMM One hardware device itself can also be mounted for file access as well as ADB control, log capture, and software debugging needs.

Once you have written your micro-app, you can install it on the device by connecting the WIMM 330 module to the USB paddle charger, and either drag a compiled .apk file to the mounted USB drive (after checking to make sure that "Mount as USB Storage" is checked in the WIMM's Advanced Settings screen), or via the usual ADB command, "adb install MYAPP.apk". Likewise, micro-apps can be uninstalled via the "adb uninstall MYAPP.apk" instruction. Make sure that the Android manifest file has been flagged for debugging (android:debuggable="true"). Otherwise, your micro app won't show up on the WIMM One.

I have to admit, the first time I saw my little micro-app running on the WIMM, I couldn't help but smile and feel empowered by the fact that I could program a little watch app so quickly and effectively. Obviously, this is the level of accelerated app adoption that WIMM is hoping to capture among progressive Android developers. Even intermediate Android developers will be able to quickly create WIMM apps, and the Alpha and Beta micro-app forums are proving to be fertile ground for these rapid innovations.

A New Kind of Form Factor

The first thing that struck me when developing my first micro-app for the WIMM One was the small display surface. So much for porting my Android Smartphone apps directly to the WIMM. This can be partially mitigated by offloading some of the application preference aspects of the app via WIMM's device configuration page. For example, location and time preferences are selected via this web interface, as are login credentials for Google and Microsoft Exchange-based calendars. Although I hesitate to recommend entering sensitive login details to a third-party service, including WIMM's, for obvious security concerns, WIMM's Director of Marketing, Lori Malm, had this to say about WIMM's approach to user credentials:

"For Google Calendars, we use OAuth2. The user authenticates directly with Google and Google provides us with a Refresh Token. The user can invalidate the refresh token at any time. We never collect the data.

For Exchange, we use public-key cryptography and encrypt the login credentials and the Refresh Token for Google accounts with a user-specific private key that is only stored on the user's WIMM Module. The encrypted account information is kept in one of our databases. Only when a module syncs is the private key available (only in memory) to the server so it access the login credentials or refresh token to access a user's Calendar. If a module is hacked into or if our databases are breached, the hacker cannot access a user's Google or Microsoft Exchange account information."

And while the WIMM One's interface is entirely touch driven, there are only a few basic gestures available to the WIMM apps: up, down, left, right, and dual-touch swipe down. I also found that response time for gesture identification and slide between screens was also on the slow side due to the low power processor used in the WIMM. But this slower response time really comes as no surprise. Anyone who remembers the first Android phone (the infamous G1) knows how painfully laggy that device was, and how that problem is more or less a thing of the past on modern day Android smartphones.

Another constraint for which I needed to recalibrate my app development strategy was the fact that network connectivity has to be called upon explicitly via WIMM's Network Sync calls, which spin up the WiFi connection. This is done so that the device isn't always broadcasting. If it were, the battery life would drain rapidly. And because it takes time for the WiFi to spin up, authenticate to an access point, negotiate a DHCP lease, and connect to the network, WIMM apps have to account for the lag such real-time data captures will have on the app's overall performance. In fact, WIMM recommends that your app infrequently polls the network for updates so that battery life is conserved.

Finally, keep in mind that while the WIMM is currently designed around a wrist watch-style form factor, the size of the main module is small enough to house within a pendant, a belt clip, or even a bike mount. Indeed, the WIMM folks expect the WIMM module to be at the heart of the micro-app wearable universe, regardless of how it is affixed to your person.


The WIMM is an exciting, though still very nascent, wearable computing platform that builds upon familiar operating systems and programming approaches to achieve its objectives. It reminds me a lot of the first time I saw a Kodak digital camera in the early '90s, in that it's really cool but not fully realized to the potential of what it promises. Depending on how WIMM navigates the treacherous waters of bleeding edge embedded computing, they may become the market leaders or may be overshadowed by the efforts of more established players recognizing the true potential that wearable computing products may provide in the future. In the meantime, WIMM offers alpha geek developers a glimpse of the future today, and although it's not perfect, the WIMM One is a big step forward and embodies the potential of what may one day become a dominant subcategory in the embedded computing space.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.