About a year ago I bought a Garmin Forerunner 245 to take my run-tracking to the next level. In almost every respect it’s left my previous Fitbit in the dust (cough… sleep tracking). And means I can run a race without needing to carry a phone. Lovely stuff.
One of the things I found most intriguing about a Garmin device was the prospect of being able to build my own watch-faces using the Connect IQ SDK.
It was fairly straightforward to put an initial app together using Garmin’s own language Monkey C — a name I can only assume was coined for the corollary “Monkey do” pun — and a bit harder to master. Maybe I’ll go into more depth of the hows in a future post, but for now I just wanted to share the results of my messing around over the course of a few evenings.
Eye See You
For some reason the first thought that occurred to me when staring at my big spherical watch was: what if it was staring back? Throw in some creative license, and possibly some delayed wish-fulfillment from when I was 13, and I ended up hooked on the idea of having Sauron’s all-seeing eye on my wrist.
The key here was creating a graphic that would meet the devices’ ridiculously small memory. Cue a lot of posterising, playing with values, compression, and I had something I was happy enough with. Though it left me envious of the Apple Watch’s rich display.
Anyway, turned out alright for a first go.
Are we seeing a theme here? In what perhaps is an obvious logical leap, I started asking myself questions like, “What if the eye could blink?” and “What if the eye didn’t belong to an immortal evil force?”.
And that’s how we came to Eye Spy, a regular eyeball on your arm. This was a simpler affair since the only graphic was a much smaller iris, and I didn’t have to worry too much about clarity or recognisability as long as it just generally looked good.
At this point I started to add more features. I was quite happy with the battery, since it was completely constructed from shape vectors. I also started to figure out how to share common logic between my watch faces using Monkey Barrels.
Next on my list was something quite different, but again inspired by riffing on the circular form factor. I thought it would be pretty funky to have a vinyl record spinning in the watch, with the relevant info (date, time) on the record label itself.
This one involved no image resources whatsoever — I built the entire UI programmatically with shapes. This involved some trial-and-error to work out a good amount of spacing for the highlights, and a little bit of maths to plot the arcs correctly — especially since Garmin watches come in all sorts of sizes and at all sorts of resolutions.
By this point I was getting much more comfortable with the language and framework. And this has by far been the most popular watchface on the store — much to my surprise.
I have many more ideas for enhancements to these watch faces, and many more ideas for new watch faces besides, it’s just a case of finding the time. In any case this has been an enjoyable exercise, even if in the end I settled on wearing a picture of my son’s face instead.