Journal
Personal
23 Jun 2025#adr#embedded#iot 1 min read

Render on the server, draw on the device

The e-ink device fetches a finished picture; the server does the layout.

FromPalabrino: Desk Companion

In the design, the device lays nothing out. It wakes, asks the server for its next frame, and gets back a finished PNG in the panel's six colours, a pronunciation clip and how long to sleep. Themes, fonts and the word itself are the server's problem, so a new layout never needs a firmware update.

The renderer fills an SVG template and converts it to PNG. On paper Go won, on estimated cold start (70 to 90 ms against 180 to 250); the prototypes the next day used each platform's own runtime, Node, then Deno. A device that is no longer paired gets a "not paired" frame and stops asking, so removed devices cannot spam the database.

flowchart LR
  W[Device wakes] --> Q[Next frame request]
  Q --> R[Renderer: SVG to PNG]
  R --> S[Storage]
  S --> D[Device draws and sleeps]

Related