Brussels / 3 & 4 February 2024


Smartwatch firmware... in Go? On TinyGo, small displays, and building a delightful developer experience

Building a nice and responsive GUI is no easy task. It is especially difficult when you're working with a small microcontroller and the existing graphics libraries have various limitations. So I set to work to fix that by building my own graphics library for small embedded systems.

A year ago I started working on a firmware for the Pine64 PineTime, using TinyGo of course. My goal was to have a usable firmware for the watch, while improving the surrounding TinyGo ecosysteem wherever I could. My end goal is to make developing firmware as simple as writing any desktop application.

In this talk I'll describe how I initially added support for the PineTime in TinyGo with some low level hardware details, how low cost displays work, and how I improved the performance of these displays under TinyGo. But I'll also describe how I built a somewhat accurate simulator as part of the hardware abstraction layer, how I implemented a very fast graphics library using generics, and of course how I used all of these to write firmware that can run on the PineTime and any similar smartwatch supported by TinyGo.

While this talk may get technical sometimes, I'll make sure it's still easy to follow even if you're not an embedded developer.


Photo of Ayke van Laethem Ayke van Laethem