• Building Rocky.js with Emscripten

    Over the last couple of weeks we have been working on a new JavaScript SDK, Rocky.js.

    The end goal of Rocky.js is to allow you to run JavaScript code directly on your watch. But in order to iterate quickly and collect feedback from the community, we first decided to offer a version of Rocky.js that runs in the browser. To that end, we transpiled bits of the very firmware that runs on Pebble watches worldwide into JavaScript and replicated our watch SDK’s behavior with high fidelity.

    Keep reading for more details on how we ended up setting it up and what we learned along the way.

    READ MORE
  • Introducing engineering.pebble.com

    Hello Internet!

    We’re thrilled to be launching Pebble’s engineering blog. Pebble’s engineering team works on some really cool hardware and software, and this blog will expose and explain some of the projects we’ve shipped recently. We will be sharing some of the technical challenges we’ve faced, and the tips, techniques, and solutions that have been employed, as we strive in our goal of building a fantastic platform for Pebble’s users, developers, and community at large.

    We’ve created mechanisms to develop and test software rapidly, with a distributed team, across multiple software stacks, and solved some really interesting problems. We’re excited to share some of what we’ve learnt, how we work at Pebble, and how some of what we create operates under the hood.

    Today’s Pebble smartwatches have about 1/8000th the RAM, 1/100th the CPU frequency, and 1/10th the battery capacity of cell phones1. Hence, Pebble’s software engineering team is used to operating in highly constrained environments. We write embedded code for multiple hardware platforms that must be size and power efficient while providing a feature-rich user experience and SDK; develop mobile applications that operate across generations of mobile phone hardware while stretching the limits of the publicly available APIs of...

    READ MORE