How do you stay up to date? (2026)
I try to write these essays to be evergreen, and the 2021 version of this post has mostly held up (curation matters, good information is worth paying for, and a vague gesture at ‘the news’ is still a non-answer). But the ground has shifted enough since then that it deserves a full update.
The premise behind both posts is Clay Shirky’s old line: “It’s not information overload. It’s filter failure.” There is no such thing as too much information, only inadequate filtering. In 2021, my filters were editorial: choose good sources, ignore bad ones. That was about all an individual could do. What’s changed is that the filters have become programmable.
The short version: every source becomes a feed, every feed becomes searchable by meaning, and an assistant reads it all before I do.
RSS is the foundation (still, again)
Everything funnels into one place: a self-hosted instance of Miniflux, a deliberately minimal open-source RSS reader. Currently about 130 feeds across law, tech, AI, data and finance.
RSS keeps getting declared dead, and keeps being the only thing that actually works. It is the last open standard that lets you own your information diet rather than rent an algorithm’s idea of it. No engagement optimisation, no inserted outrage, no ‘you might also like’. A feed reader shows you what your chosen sources published, in order, once. That property gets more valuable every year, especially now that an increasing share of what algorithms surface is generated noise.
Self-hosting it matters less than using it. But hosting my own copy means the archive is mine, which is what makes the rest of this possible.
n8n: manufacturing the feeds that don’t exist
The problem with building your life on RSS is that many of the most useful sources don’t offer it, either because they never did or because they’d rather you came to them and scrolled.
So I manufacture the missing feeds. I run n8n, an open-source workflow automation tool, and any source without a feed gets one built for it. The pattern is always the same: a scheduled workflow fetches the source, extracts the full text of each item, stores it, and a webhook serves the result as a standard RSS feed that Miniflux subscribes to like any other.
Some examples of what this produces:
- The FCA publishes constantly but wants you to visit the website. I split its output into ~29 category feeds, so consultation papers and enforcement notices arrive like blog posts.
- Around 130 UK select committee feeds (evidence sessions, reports, correspondence), one per committee, so I follow the three I care about closely and skim the rest.
One rule across all of these: full text, always. A feed of headlines only queues up clicks (and the click usually lands on a page that wants something from you). Full articles are reading material.
Vector search: the archive becomes a corpus
A reader full of full-text articles is good. A searchable one is something else entirely, and the economics of it surprised me.
I forked Miniflux to add semantic search. The fork adds a background worker that gives every article a vector embedding, a numerical fingerprint of what the text means rather than which words it contains. The mechanics, for the technically minded:
- Every five minutes, the worker picks up any articles that don’t yet have an embedding (in batches of 50), strips the HTML, concatenates title and body, and caps the text at 10KB, which is more than enough for the meaning of almost any article.
- One API call embeds the batch; the vectors go into Postgres next to the articles themselves, using the pgvector extension with an HNSW index for fast nearest-neighbour search by cosine similarity.
- On startup it backfills, so the entire archive is always covered. Right now that’s ~9,200 articles, every one embedded.
For the model I use Qwen3-Embedding-8B, an open-weights model served via OpenRouter at $0.01 per million tokens. It natively produces 4,096-dimensional vectors, but I truncate to 1,024, for four reasons:
- pgvector’s HNSW index won’t index vectors above 2,000 dimensions, so the model’s native output couldn’t be indexed at all. Some constraint was inevitable.
- Modern embedding models are trained so that the most important information is packed into the leading dimensions (Matryoshka embeddings), so you can cut the vector short and lose very little. The measured quality drop from 4,096 to 1,024 dimensions is a couple of percentage points on retrieval benchmarks.
- That benchmark gap matters when you’re searching millions of documents and fighting for the last percentile of recall. Across ~9,000 articles, the nearest neighbours are the same either way.
- 1,024 floats is 4KB per article instead of 16KB, about 36MB of raw vectors across the archive. With the HNSW graph layered on top (it keeps its own copy of the vectors plus the neighbour links), the whole search index comes to ~72MB, small enough to sit in RAM, so queries are instant.
And the cost, which is the part I find genuinely absurd: a stripped article averages well under a thousand tokens, and roughly 250 articles arrive a day. That’s under 0.2 million tokens a day, about a fifth of a US cent, or roughly 70 cents a year. Embedding the entire archive from scratch costs about seven cents. The semantic search layer over everything I read costs less per year than a single newspaper costs per day. Five years ago this capability didn’t exist outside well-funded search teams; today it’s a rounding error on a hobby server.
What it unlocks is two things keyword search can’t do:
- Search by meaning. “What’s been written lately about AI training data rights?” finds the relevant pieces even when none of them use that exact phrase, ranked by how close they are in meaning. Keyword search makes you guess the author’s vocabulary; semantic search doesn’t care.
- More like this. Any article can pull its nearest neighbours from the whole archive. Read something interesting, and immediately see the related pieces that arrived weeks ago across completely different feeds.
This quietly changes what a feed reader is. A normal reader is a river: things float past, and once they’re gone, they’re gone. With embeddings, the river silts up into a research corpus. When I’m writing about, say, data licensing, the first stop isn’t Google but a semantic query over thousands of full-text articles from sources I already trusted enough to subscribe to (better signal-to-noise than the open web, by construction).
The assistant: something reads it all before I do
The last layer is the newest. A self-hosted AI assistant (a heavily-forked nanobot) has tool access to the same reader and archive, and it reads the firehose so I don’t have to.
Every morning, before 10am, it sends me a briefing over WhatsApp. It’s triaged rather than summarised (a digest is just a smaller firehose):
- What arrived in the last 24 hours that actually matters, scored against the topics and projects I’m currently working on, with a one-line note on why each item is relevant to me;
- Which posts from my network are worth engaging with today, and what the angle is;
- Whether anything that landed overnight is worth a same-day response;
- A nudge on what I published recently and whether the conversation around it needs tending.
The design point: the assistant queries the same curated corpus I read. It is not summarising the open internet; it is triaging sources I already chose. Skip the curation step and you have a very confident noise amplifier.
And during the day it’s a research tool: I can message it “what’s the recent coverage on X?” from my phone and it runs the semantic search and comes back with the relevant pieces, linked, from my own archive.
What didn’t change
Rereading the 2021 post, the foundations survive contact with all this machinery:
- Sources are still everything. The pipeline makes good sources usable at volume; it does nothing for bad ones. The newsletters, blogs and specialist sites from the original post are mostly still in the reader.
- Paying for quality matters more than it did. As generated content floods every channel, provenance becomes the scarce asset, and a feed list is a provenance list.
- The 2021 post argued that having no approach to your information diet signals an uncurious mind. That hasn’t changed. What’s changed is what an approach can be.
What I’m less sure about
Every layer here narrows. The reader only contains sources I chose. Semantic search ranks by proximity to a question I already knew how to ask. And the assistant scores the overnight arrivals against the projects I am already working on, which is the narrowest filter of the three, because it is the only one that knows what I did yesterday. All three point the same way, and what they screen out is the same thing each time: whatever I wasn’t already looking for.
The 2021 version had accidental breadth built into it, mostly through inefficiency. You skim a feed and read something irrelevant because it happens to be sitting there. A triaged briefing removes exactly that, deliberately. Serendipity is a waste of time that turns out not to be, and I have not found a way to write a scoring prompt that protects it.
The embedding layer has a sharper version of the problem. Nearest-neighbour retrieval returns what is close in meaning to the query, and the genuinely useful piece is often the distant one (the paper from another field that turns out to be about your problem in a different vocabulary). Cosine similarity is close to the wrong instrument for finding that.
I am not sure this is bad, though. Serendipity gets romanticised by people who have not counted how much of it was noise. And there is an argument the other way: ‘more like this’ across ~9,200 articles from feeds that never cite each other does surface connections I would not have made by hand, which is a manufactured version of the same thing. Whether it replaces what it displaces, I don’t know. I have been running the whole stack for months rather than years, which isn’t long enough to tell.
Shirky’s line is nearly twenty years old now, and it has aged into something more practical than he probably intended: filter failure is no longer just a diagnosis, it’s an engineering problem, and one an individual can now actually solve, with open-source software, a modest server and an AI bill measured in cents. The explosion of information is real enough. It’s the filtering that decides whether it matters, and filtering is finally something you can build for yourself.
I do still ask the interview question. But the bar has moved: anyone can ask a chatbot “what’s new in my field?” and get something fluent back. The interesting answer now is having an information diet a machine can usefully work on: chosen sources, full text, owned archive, searchable by meaning. Which is mostly curation, and curation is still the slow part.