How to build a printer
- ID
- 22656
- Status
- summarized
- Published
- 09 Sep 2026, 5:22 AM
- Fetched
- 11 Sep 2026, 5:45 AM
- Provider
- Hacker News
- Category
- dev-community
- Original URL
- https://nishantjosh.dev/blogs/how-to-build-a-fking-printer/
- Source URL
- https://hnrss.org/best
Summary
- Score
- 5.5
- Created
- 11 Sep 2026, 6:52 AM
- Tags
- Audience
- developersvibe_coders
What happened
Nishant Joshi turned an Xteink X3 e-ink reader into a wireless printer by implementing IPP (Internet Printing Protocol) over HTTP on its ESP32-C3, advertising it via Bonjour mDNS so macOS could discover it driverless. The core challenge was receiving a full Letter page at 300 dpi (~8.4 MB uncompressed) on a device with only 400 KB of RAM and 6.8 KB of free heap after Wi-Fi and buffers—solved by streaming decoded, dithered rows directly to the display instead of buffering the whole page.
Why it matters
If you build for constrained embedded devices, this is a concrete worked example of streaming large payloads through a tiny memory budget by treating the display as your buffer rather than holding the full image. It also demystifies IPP and Bonjour _ipp._tcp._universal discovery enough that you could prototype your own network-printable device without a driver stack.
Discussion angle
The streaming-to-display trick is the real lesson—when your target has kilobytes of RAM, your architecture has to be row-by-row transform-and-write rather than receive-then-process. Ask the room what other constrained-device problems could use the same pattern.