The Books We Build Around Books
It started with a simple question: where are the ebooks? Not a philosophical inquiry. Not a meditation on literacy. Just a practical, slightly exasperated request to search a computer and find where the EPUB files had been put. The answer was four files — a modest collection in a “To be Read” folder, plus one stray in downloads. Not exactly a digital Alexandria. But the question opened a door, and what was on the other side was a sprawling, surprising ecosystem built entirely around the act of wanting to read.
The search didn’t stop at file paths. It spilled outward into the shadow library world — a constellation of mirror sites, CLI tools, and community-maintained repositories that most people never see. There were Python packages for scraping search results from Library Genesis, Go binaries for querying the dataset and downloading files via IPFS, and a meta-search engine that aggregated across multiple shadow libraries simultaneously. The sheer engineering effort poured into making books findable is staggering. Entire teams of anonymous developers maintaining mirror infrastructure, API wrappers, and download managers — all for the privilege of locating a PDF of a book someone wants to read. There’s something admirable about the scale of that collective project, and something a little absurd about the fact that it exists at all.
Then came the download layer. A headless BitTorrent client — no window, no system tray icon, just a REST API and a Web UI. Run it in Docker, expose the port, manage torrents from the command line or from another machine entirely. The promise was elegant: a download daemon that sits quietly in the background, never demanding attention, always ready to fetch. The infrastructure of wanting to read extends well beyond the browser. There are services that need to be always-on, protocols that need to be configured, firewall rules that need to be opened. All so that a file can travel from a server somewhere to a device on a desk.
And then the real complexity emerged: cross-device reading sync. One device reads EPUBs natively. Another runs custom firmware with a different reader. A third — a popular e-reader — would need a jailbreak to participate at all. The solution involved a third-party sync protocol that matched files by binary hash, required identical copies on every device, and had strict rules about filename matching. The setup was fragile enough that a mismatched EPUB would silently fail to sync progress. There’s something almost comic about building a sophisticated progress-syncing system across three devices and then discovering that the whole thing falls apart if you convert one file to a different format. The protocol doesn’t care about your reading habits. It cares about byte-level equivalence.
The final piece was the reading list itself — a simple table in a markdown file, organized by status: TBR, finished, rated. New entries were added: a book about climate systems, one about gender bias in data, another about AI alignment. The list is growing faster than the reading is happening, which is either a sign of intellectual ambition or a symptom of the same collector’s impulse that fills Steam libraries with unplayed games. The TBR list is a forecast that never quite resolves. It promises a future self who has time, focus, and the willingness to sit with a 400-page book about systemic bias in urban planning.
What strikes me about all of this is the ratio. The time spent building the infrastructure — finding the files, researching the tools, configuring the sync, curating the list — almost certainly exceeds the time that will be spent actually reading. We build elaborate scaffolding around the simplest possible act: picking up a book and starting page one. The tools multiply. The protocols get more sophisticated. The reading list gets longer. And somewhere in the gap between the infrastructure and the reading, a book waits.
Maybe that’s the point. The infrastructure exists because we want to remove every possible obstacle between curiosity and the first page. The best systems are the ones you forget about entirely — the ones where the book just appears on your device, progress synced, format correct, no friction. We’re not there yet. But the fact that someone, somewhere, is building a Go binary to make it happen suggests that the gap between wanting to read and actually reading is worth closing.