Developing the for the Pebble was a lot of fun. There was a Pebble hack-a-thon recently (recent being 2 years ago) and I finally got around to finishing a project that I started a decade earlier:
Pebble had an ingenious design for its watch apps. Despite the watch having a limited processor and even more limited RAM, it could accommodate several apps, each boasting a lot of capability.
Each Pebble app was comprised of two components: one that resided on the watch and another on the phone. Users could install these apps from Pebble's dedicated app store, and the same app was compatible with both iOS and Android. Pebble brilliantly bypassed Apple's app install restrictions and cross-platform compatibility challenges by executing the on-phone portion within the platform's JavaScript engine.
If you wanted to create a weather application, the phone component of the app would be written in JavaScript and retrieve weather updates from the Internet, which would then be conveyed to the watch's C-based app for display. Watch apps could also have a settings page that was implemented in HTML.
I have always been impressed by of the cleverness and simplicity of this design.
Oh, my memory is hazy here, but if I remember right, at the beginning Apple didn’t let them download executable code (companion js) to the app, so they just took a javascript code from every app in the pebble store, bundled it into Pebble iOS app, and updated it every few days with a fresh code.
Bonus fact: we didn’t actually read the bundled code - we downloaded it from the internet and ran it as usual. But a server-side check ensured you could only get the JavaScript we’d bundled.
Or at least it did until we eventually quietly turned off the check, when Apple stopped paying attention.
https://github.com/codaris/pebble-cpp
It might even become relevant again!
Pebble had an ingenious design for its watch apps. Despite the watch having a limited processor and even more limited RAM, it could accommodate several apps, each boasting a lot of capability.
Each Pebble app was comprised of two components: one that resided on the watch and another on the phone. Users could install these apps from Pebble's dedicated app store, and the same app was compatible with both iOS and Android. Pebble brilliantly bypassed Apple's app install restrictions and cross-platform compatibility challenges by executing the on-phone portion within the platform's JavaScript engine.
If you wanted to create a weather application, the phone component of the app would be written in JavaScript and retrieve weather updates from the Internet, which would then be conveyed to the watch's C-based app for display. Watch apps could also have a settings page that was implemented in HTML.
I have always been impressed by of the cleverness and simplicity of this design.