Channels ▼

Mike Riley

Dr. Dobb's Bloggers

WIMM One Developer Review

February 27, 2012

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 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, Lali 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.