Look at the Drudge Report for three seconds — not to read it, just to look — and you already know which story is the big one. You didn’t parse a sentence to learn that. One headline is set in type twice the height of everything around it. Something up top is flashing red. A little siren gif is spinning next to a link. The page hasn’t told you what’s important in words; it’s shown you, in size and colour and position, before you read a single one.
That is the whole trick of the thing, and it is older than the web. A front page is a ranking machine. The editor’s job — the actual editorial judgment, the part a wire feed can’t do — is deciding that this is a 72-point splash and that is a one-line brief in the third column. The words report the news. The typography reports the editor’s opinion of the news. On a hand-built page like Drudge’s, the second one is the product.
Rank is information, and it’s stored in the layout
Here’s the thing that’s easy to miss when you set out to build a reader for a page like this: the
ranking is real data, and it isn’t written down anywhere. There’s no importance="1" attribute,
no priority field, no tag that says this is the lead. The emphasis lives entirely in the
presentation — the font size, the ALL CAPS, the red, the column the link fell into, the siren
parked beside it. An editor encoded a judgment about what matters using nothing but the tools of
typesetting, and a human reader decodes it instantly and unconsciously.
A machine does not. Point a naïve scraper at the page and it sees a bag of links. It can tell you the URLs and the anchor text, cleanly and completely — and in doing so it quietly deletes the one thing the page was built to communicate. The splash and the third-column brief come out looking exactly alike: two strings, two hrefs, indistinguishable. You’ve captured every word and lost the entire argument.
A flat list is a page with its opinions removed. Every story survives; the ranking that told you which one to read first does not.
This is the failure mode of nearly every “reader” and “reformatter” and RSS-shaped tool. They treat a page as a container of items and reading as the act of pulling the items out. But on a curated front page, order of importance is the content. Strip it and you haven’t simplified the page. You’ve thrown away the edit and kept the transcript.
The hard part is reading the emphasis, not fetching the links
We’ve written before that Drudge has no feed to subscribe to — no RSS, no API, no structured data, just hand-edited HTML that changes dozens of times a day. That note was about how DReader has to read the page the way a person does, by looking at it rather than asking it for data. This is the other half of the same problem, and it’s the harder half.
Getting the links is the easy part; a first-year script can pull every anchor off the page. The part that makes DReader a reader rather than a link dump is inferring the rank the editor never labelled — reading the same signals a person reads. How big is this headline relative to the others? Is it in the block reserved for the splash? Is it red? Does it have the siren beside it? Which column did it land in, and how high? None of those are content; all of them are the editor telling you, in the only language the page has, how much to care. DReader’s job is to listen to that language and come away with a priority order, the way you did in your three-second glance.
And then it has to do the genuinely awkward thing: carry that order onto a screen shaped nothing like the page it came from. A phone is one narrow column. It has no 72-point splash, no three-up layout, no room to shout with size the way a desktop broadsheet can. So DReader can’t just copy the typography across — it has to re-express the same ranking in a completely different grammar. The lead has to still read as the lead when it’s the first card in a vertical list. The red alert has to keep its red. The minor briefs have to still feel minor. The emphasis is preserved; the mechanism that carries it is rebuilt from scratch for a column one thumb wide.
Why a plain list was never the answer
The tempting shortcut, the one most tools take, is to skip all of that and just render the links
top to bottom in the order they appear in the source HTML. It looks reasonable. It’s fast. And it
is subtly, consistently wrong — because the source order is a layout artifact, not a ranking.
A story can sit late in the document and be the most important thing on the page; a splash is
often not the first <a> a parser reaches. Trust document order and you’ll routinely bury the
lead under three briefs that happened to be coded higher up. The reader opens the page, and the
one story the editor was screaming about is somewhere in the middle, the same size as everything
else, indistinguishable from a footnote.
So DReader doesn’t trust the order it’s handed. It ranks the stories itself, from the emphasis in the markup, and then lays them out — which means the phone inherits the front page’s priorities instead of its DOM. The splash is first because it’s the splash, not because it was coded first. That’s a small distinction that took real work, and it’s the difference between a reader that feels like the Drudge Report on a phone and one that feels like a spreadsheet of its links.
The emphasis was the edit
This is of a piece with everything else we build small and run ourselves. It would have been less work to ship the bag of links and call it a reader; plenty of tools do exactly that, and they technically show you the same headlines. But “the same headlines” is precisely the trap. The headlines were never the whole of it. The editor’s ranking — this one huge, this one red, these ones small — was a layer of meaning laid on top of the words, by hand, dozens of times a day, and it’s the layer that makes a front page worth glancing at instead of searching through.
A reader that keeps the words and drops the ranking is faster to build and quietly useless in the way that matters. So DReader spends its effort on the invisible part: reading the size, the colour, the position, the siren, and carrying the judgment they encode all the way across to a screen that can’t repeat any of them. The size was the story. Keeping it a phone away turned out to be the entire job.