Work / Sprite

Sprite

Partial 2026

A palm-sized ESP32-S3 display, its content server and its phone app: firmware, networking, storage and mobile, proven on physical units.

Illustration of the real flow. The cube’s screen is a real framebuffer capture from a Sprite unit and the pack’s own character frames; the pack sizes are measured.

What it does

The phone puts the device on Wi-Fi through a protected temporary access point. From then on the device talks to a Node server, which plans content packs to fit its flash, sends them in chunks over authenticated APIs and reads back device health. Firmware changes count as proven only when they work on flashed hardware, with a rollback build kept. A successful compile is not enough.

How it runs

  1. The phone puts the device on Wi-Fi through a protected access point
  2. The device registers with its content server
  3. The server plans content packs that fit the device’s flash
  4. Packs are sent in authenticated chunks
  5. The device shows the content and reports its health back

How it works

Sprite spans C++ firmware built with PlatformIO, a Python build-and-flash CLI, a Node and SQLite management server, and an Expo phone app. Commissioning moved from Bluetooth to a protected Wi-Fi access point after measured coexistence failures. A resource ledger measures whether a content pack physically fits the device's filesystem. Deploy plans are labelled dry run, simulated or live, so a plan is never mistaken for a deployment. Two security faults were found and closed on real hardware: a guard that never compiled, and a token leak.

Skills shown

Cloud, servers & networking
Wi-Fi commissioning through a protected access point, then chunked transfers to the device over authenticated APIs.
DevOps & CI/CD
A Python build-and-flash CLI, GitHub Actions CI, and deploy plans labelled dry run, simulated or live.
Security
Found and closed a security guard that never compiled and a device-token leak, then re-verified both on hardware.
APIs & backend
A Node, Express and SQLite content server that plans content packs to fit the device’s flash.
Embedded & IoT
ESP32-S3 firmware in C++ with PlatformIO, counted as proven only on flashed hardware with a rollback build kept.
Mobile apps
An Expo and React Native phone app that commissions the device.

Worth knowing

  • Moved commissioning from Bluetooth to a protected Wi-Fi access point after measured Bluetooth/Wi-Fi coexistence failures.
  • Found a production security guard that never compiled because of build flags, and a heartbeat path that leaked a device token. Both were closed and re-verified on hardware.
  • Shrank a starter content pack from about 114% of the flash filesystem to about 62% by de-duplicating identical files in a generated profile, without deleting the originals.
  • Traced a suspected firewall problem to a duplicate heap check that stopped the request from ever opening a socket.
  • Deploy plans say whether they are a dry run, simulated or live, so a plan is never mistaken for a deployment.