Skip to main content
Runner-focused interface rendered for a 10.85-inch four-color e-paper display

Custom embedded system

Runner's E-Paper Dashboard

A four-color, always-ready training command center built for one useful glance—not another screen demanding attention.

Evidence 1
1360 × 480 canvas
Evidence 2
Native four-color UI
Evidence 3
Dual-controller partial refresh
Evidence 4
7 AM–10:30 PM active window
Interface tour

One screen, six purposeful layers

The hierarchy follows the decisions a training day actually asks you to make—from the next workout to the conditions outside, then the quieter signals that keep the day on track.

Native dashboard canvas1360 × 480 · four-color e-paper
The complete four-color runner dashboard with Runna, Strava, marathon, weather, time, and Claude Code widgets
  1. 1

    Next workout

    Runna surfaces the prescription, duration, best or scheduled weather window, and actual-versus-planned weekly mileage.

  2. 2

    Training load

    Monday–Sunday Strava progress shows completed runs, sessions still ahead, and current-year running mileage—all in miles.

  3. 3

    Race-day motivation

    The TCS New York City Marathon countdown sits beside live Team for Kids fundraising progress.

  4. 4

    Conditions now

    A large 12-hour clock and current weather cover temperature, rain, wind, humidity, UV, and air quality.

  5. 5

    Time and tools

    Day, month, and year progress share the lower rail with Claude Code's five-hour and seven-day usage windows.

  6. 6

    E-paper lifecycle

    Seam-safe partial updates, three-hour de-ghosting, offline fallbacks, and a 10:30 PM–7:00 AM powered-down quiet period keep it dependable.

Scope

What I owned

Product design, interface architecture, Raspberry Pi integration, display-driver engineering, data integrations, and reliability testing.

Problem

Put the training plan, current conditions, race motivation, and daily context in view without opening a phone or accepting the visual noise of a conventional monitor.

Built

Designed a native 1360 × 480 interface around Runna, Strava, the New York City Marathon, weather, time progress, and Claude Code usage, then built a safe partial-refresh driver for the panel's two-controller architecture.

Outcome

A calm, runner-first surface that stays useful throughout the day, updates only the regions that changed, and powers the display hardware down overnight while the last image remains visible.

Engineering constraints

The conditions that shaped the system

01

The 10.85-inch glass is one visual canvas driven by two controller dies split exactly at x=680.

02

Four-color particles need a deliberate waveform; localized updates reduce disruption but do not turn e-paper into an LCD.

03

Personal API credentials must stay off the display, out of the repository, and recover cleanly when a service is unavailable.

Key decisions

Tradeoffs made explicit

01

Runner first

Runna owns the largest region, with the next prescription and Monday–Sunday mileage visible before secondary system information.

02

Design to the silicon

Every widget is clipped to a controller-safe zone, so frequent updates never straddle the physical x=680 seam.

03

Conserve the panel

Localized updates handle the day, a full refresh clears accumulated ghosting every three hours, and one static night summary precedes hardware power-off.

Architecture
Raspberry Pi Zero 2 W service with isolated collectors for training, weather, fundraising, and developer-tool data
Zone-local Pillow renderer constrained to the panel's black, white, yellow, and red palette
Seam-aware JD79665AA driver coordinating independent master and slave controller windows
Persistent refresh ledger, health endpoint, startup checks, and USB recovery path
Validation
14-stage hardware probe passed on the physical four-color panel
171 hardware-free runtime and driver tests
Palette, clipping, controller-seam, and refresh-policy assertions
Three-hour de-ghosting refresh plus deterministic quiet-hours behavior
Stack
PythonRaspberry PiPillowSPIE-PapersystemdREST APIs
Result

The finished system combines a physical product, a purpose-built interface, live service integrations, custom display control, and verified on-glass behavior.

Tour the interface