Look at the Drudge Report at nine in the morning. Look again at nine-forty. The wall of headlines seems entirely rewritten — different words up top, a different line flashing red, the whole thing rearranged. Your eye starts over from the top, re-reading lines you already read forty minutes ago, because you have no way to tell which of them you’ve seen. The page offers no help. There are no timestamps on the links, no “new since your last visit,” no little dot next to the fresh ones. There is only the wall, and the wall looks different, and you’re left to re-scan the whole thing to find the one story that actually appeared.

But here’s the thing: most of what changed between nine and nine-forty wasn’t news. The lead got reworded. A headline that was two lines became one. A story slid from the middle column to the top. One line stopped flashing red and another started. Underneath all that motion, the same handful of stories you already saw are still there — wearing new words. Only a couple of links are genuinely new. The page changed dozens of times, and almost none of those changes were the thing you care about. Reading it well means telling the real arrivals apart from the reshuffling, and doing it without a single hint from the page itself.

The label is not the name

The instinct is to diff the headlines. Grab the text of every line now, compare it to the text from last time, and call anything you haven’t seen before “new.” It fails on the first edit. The Drudge headline is not the article’s title — it’s an editorial line, hand-typed and hand-tuned through the day, rewritten to sharpen a verb or shorten a fold or match the mood of the hour. The same story can carry three different headlines before lunch. Diff on the words and every one of those rewrites reads as a brand-new story. You’d flag the same article as new three times and never notice it was one thing the whole time.

The words are a costume. What doesn’t change when the editor rewrites the line is where the line points — the destination URL sitting under the anchor. The Reuters story is the Reuters story whether the headline reads one way at nine or another at nine-forty; the link resolves to the same place both times. That is the closest thing the front page has to a stable name for a story, and it is the one piece of a link the editor almost never touches, because touching it would break the one promise a switchboard makes — that the door goes where it says.

On a page with no timestamps and no IDs, the destination is the identity. The headline tells you what the editor is saying today; the link tells you which story they’re saying it about. Only one of those holds still long enough to diff.

Diffing by destination

So DReader doesn’t compare headlines. It compares the set of places the front page points to. Each time it reads the wall, it reduces the front to a set of destinations, and the whole question of “what’s new” becomes set arithmetic against the last reading:

  • A destination in the new reading that wasn’t in the old one is new — a genuine arrival.
  • A destination in the old reading that’s gone from the new one has been pulled.
  • A destination in both, whose headline text changed, was reworded — and reworded is emphatically not new. It’s the same story you already saw, and it should stay marked as seen.
  • A destination in both that moved up the page or grew in size was promoted — the editor’s opinion changed, but the story didn’t.

That turns “the page looks completely different” into an honest little ledger: one new, two reworded, one pulled. The nine-forty front stops being a wall you re-read and becomes a short list of things that actually happened since nine — which is what you wanted from it in the first place.

Getting the name right

The whole scheme rests on deciding when two links are “the same place,” and that decision is where the real engineering lives, because it can fail in two opposite and equally annoying ways. Match too loosely and two different stories collapse into one identity — a real new arrival hides behind a link you think you’ve already seen, and DReader quietly swallows the news. Match too strictly and a single story wearing two coats of paint looks like two stories — the editor appends a tracking parameter or the syndicator swaps a subdomain, and a headline you read an hour ago comes back dressed as breaking.

So the destination gets normalized before it’s compared: strip the tracking cruft, canonicalize the host, unwrap the occasional redirect, lower-case what’s safe to lower-case. The goal is a name that survives the changes an editor makes to presentation and still separates two genuinely different articles. Neither failure is theoretical, and neither is catastrophic on its own — but the reader feels them immediately. Cry wolf on every reworded headline and the “new” mark means nothing within a day. Miss real arrivals and the whole point of coming back is gone. The honest default is the plain one: identity is the normalized destination, and everything else — the words, the size, the color, the column — is presentation layered on top of it.

What it buys the reader

None of this is visible, and that’s the measure of whether it worked. Because DReader knows a story’s identity across a rewrite, it can do the quiet things that make the front page feel like it holds still. It can keep the list from reshuffling under you while you step out to read a story and come back. It can leave the lines you’ve already visited marked as visited, so a re-worded headline doesn’t trick your own eye into re-reading it. It can carry the editor’s emphasis across a promotion instead of treating a resized line as a stranger. And when something is actually new, it can be the one thing lit up, instead of one unknown in a wall of them.

The front changes dozens of times a day, and the reader should have to notice only the handful of changes that are news. Getting there means refusing to trust the most visible thing on the page — the words — and trusting the least visible one instead: the link the words are painted over. The headline is what the story is being called this hour. The link is what the story is. DReader reads the second one, so you only have to read the first.