trolls.dev

The Night Shift · Department

DReader

Building an ad-free phone reader for Drudge Report, whose source page has no feed or API.

8 essays filed here

  1. 01

    You're a third of the way down the front page, thumb settling over a headline, when the wall changes and three new stories break in at the top. In a reader that just redraws the page, the column grows above you and everything you were reading slides down — your thumb comes down on a headline that wasn't there a second ago. The refresh did exactly its job and stole your place. The quiet, load-bearing trick in DReader is scroll anchoring: before the new stories land, note where the line under your thumb is; after they land, put it back. New goes in above the fold and waits behind a small count; the line you were reading never moves a pixel.

    7 min read
  2. 02

    A push notification is a favor the source does you: it rings the moment something changes so you never have to keep asking. The Drudge Report does no such favor — no push, no webhook, no 'since' cursor, nothing that will ever call DReader to say the wall just changed. So DReader has to knock. Knock too often and you're a nuisance on a page you don't own, and the news is barely fresher for it; knock too rarely and you're serving yesterday on a day that turned over an hour ago. The way out isn't a cleverer fixed number — it's letting the page set the pace: the same flurry of edits that makes the news worth refreshing is the page telling you to knock more often, and a quiet hour is it telling you to leave it alone.

    6 min read
  3. 03

    The Drudge Report is a wall, not a stream — three columns and a siren, where an editor says what matters by where he puts it and how big he sets it. Position is the ranking. A phone can't hold three columns, so a mobile mirror has to flatten that two-dimensional map into a single one-dimensional scroll — and the obvious way to flatten it, column by column, buries the lead under a stack of also-rans. DReader flattens along the other axis: it reads the arrangement the way the editor built it and lays it back out in the order he ranked it, so the story he set biggest is still the first thing your thumb meets. The wall becomes a line without becoming a different front page.

    6 min read
  4. 04

    Look at the Drudge Report at nine, then again at nine-forty, and the whole wall looks new. Most of it isn't. The same stories get reworded, resized, and shuffled through the day, and the page never tells you which lines are genuinely new and which just changed clothes. The trick to reading it the way a person wishes they could is knowing that the headline is a costume and the link underneath it is the name — so that's what DReader diffs.

    6 min read
  5. 05

    Almost every content app is a room — furniture arranged to keep you sitting in it, measured by how long you stay. The Drudge Report is the opposite: an index whose entire purpose is to send you somewhere else. So DReader's real product was never the page you look at. It's the round trip — out to the story fast, and back to the exact spot you left, so the next headline is one tap away.

    6 min read
  6. 06

    The Drudge Report says what matters not in its words but in its type — one headline set enormous, another flashed red, the rest filed small. That ranking is the editor's whole opinion, and it's the first thing a feed reader throws away. DReader's real job isn't fetching the links. It's carrying the emphasis across.

    6 min read
  7. 07

    A modern news page makes you download a few megabytes to read a paragraph of headlines. The words — the thing you actually came for — are a rounding error in the bytes. DReader is what's left when you ship only the rounding error, and why that isn't a diet you can apply to the heavy page but a different object entirely.

    5 min read
  8. 08

    The Drudge Report has no RSS, no API, no app, and no intention of adding any. It is hand-edited HTML that changes dozens of times a day. DReader has to read it the way a person does — by looking at the page — and that constraint, not the styling, is the whole engineering problem.

    5 min read