From Sensor Watch to Open Book Touch:A Framework for Creativity by Joey Castillo

raffael_de1 pts0 comments

Open Book Touch - From Sensor Watch to Open Book Touch: A Framework for Creativity | Crowd Supply

Open Book Touch

A pocketable, front-lit, open source e-reader — for every book, in every language

Crowdfunding now!

View Purchasing Options

Aug 21, 2026

Project update<br>5 of 5

From Sensor Watch to Open Book Touch: A Framework for Creativity

by

Joey Castillo

Appendix A: Applications for Open Book Touch<br>Perhaps the most enduring lesson learned from shipping Sensor Watch was this: the code that I write to bring a device to life is necessary, but the code that enables the community to write their own code is essential in a deeper way. Sensor Watch launched with timekeeping, temperature sensing and calculation of sunset times and moon phases. Useful! But in writing a well-documented, easily extensible framework (which I called Movement), more than a hundred members of the community have now contributed code of their own, and Sensor Watch Pro can roll dice, show TOTP login codes, draw tarot cards and play Wordle (and of course still tell the time).

When planning to launch Open Book Touch, I knew I needed to provide really excellent software for reading books. That much was a requirement, the sine qua non of shipping an e-book reader. But I also knew that I wanted to deliver a really excellent framework for developing other kinds of software for Open Book. That’s where Focus came in, and I already wrote a bit about it a couple of weeks ago.

Alongside, I also wanted the ability to load applications onto Open Book without having you completely reflash it, removing all of its booklike qualities. What I wanted, essentially, was something like what I made for Sensor Watch, where you can mix and match new kinds of functionality, but keep the object in its base state: a watch that tells the time, or a book that you can read. My solution to this was adding an additional item to the Open Book’s "drawer" menu: Applications.

Applications are self-contained binaries that Open Book Touch can load at runtime, jump into, and jump back out from when they exit. This was a wild rabbit hole of a feature to implement: lots of pointer math and linker-fu and crazed exported symbol names like extern char _ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEjjj. (I wish that was an exaggeration.)

Anyway, in the end, I was able to get to a point where you could launch an application from the menu, relocate it, jump into it and get "Hello World" to print on the console. And once I get you to Hello World, I’m sure you can figure out the rest, right?

I’m totally joking, of course. If you want to write an application for Open Book Touch, you get the full Focus framework and full access to the display and all the hardware, along with some helpful glue code that gives you touch tracking and display output. Once I got the application loader working, the first thing I did was write a simple Sudoku application. I especially love to demo this one, because it shows off just how much you get for free when you develop an application with Focus. That whole number pad interface at the bottom of the screen? The Sudoku numbers are just Focus TextFields with a numeric type; the appropriate keyboard automagically appears whenever a TextField comes into focus.

As much as I’d love to show you the internals of how the Sudoku app works, the second example I wrote feels more of a piece with the project. Since applications get full access to the hardware, they also get access to the wifi radio. So I made an application that fetches a random poem from poetrydb.org.

It’s not much, but its simplicity makes it the perfect candidate for explaining at a basic level how making an application for the Open Book works. Which, for those of y’all that want to get technical, I’ll get to at the end of the post. But for now, a couple more app ideas.

Appendix P(DF) and N(PR)<br>One feature request I get a lot is for PDF support. I’m going to be honest: PDF parsing feels like it’s at the very edge of the ESP32-S3’s capability. But we gave it the old college try, and what do you know:

That’s MuPDF, a GPL-licensed PDF parser, decoding a PDF file — the sheet music of the variation that plays behind our campaign video — and displaying it on the Open Book, all from an application built using the exact same framework you just saw demonstrated via the poetry application.

To set expectations: as of now, this is nothing more than a tech demo: PDF parsing is slower than I’d like, and I haven’t implemented zooming, so A4 sized PDFs look super tiny on the Open Book’s 4.26 inch screen. I also can’t build this PDF reader into the Open Book firmware due to license incompatibility, and the app is a bit large as it stands. Still, I think it’s a fantastic flag to plant in the ground as a demonstration of the possible.

Another use case that folks have asked about involves connectivity: OPDS, RSS feeds, even OpenStreetMap. Open Book Touch has wifi, so it’s totally possible to...

book open touch application from watch

Related Articles