My indie, integrated feed reader

 For a few years now, it has been a goal (or more of a dream) to build my own feed reader which integrates directly with the blog making it easy to perform indieweb actions such as likes and replies.

I started building a WordPress plugin back in 2018 but quickly abandoned it as I didn't have the coding skills necessary at the time.

Today I am officially unveiling /reader, my new indie, integrated feed reader.


Before getting to the details I wanted to say that this has been made possible thanks to this RSS & Atom parser by David Grudl, it took a lot of the grunt work out of the equation meaning I could focus on the important bits.

Down to business

Reader adopts the visual style from the blog and my notes page displaying items as 'cards' in a river of news — oldest first. It can show all items, per feed or the last 24 hours.

New feeds can be added individually or imported from an (uploaded) OPML file. When added, the posts for that feed will be automatically pulled in. A cron job polls for new items every 30 minutes checking the last time the feed was updated to see if it needs to grab new items. That date is then written to the database for the next time it checks.

I'm currently storing a rolling three months of items but may reduce this to keep the table size down. When polling for posts it compares the timestamp (e.g. pubDate or updated) against 'now minus three months' and ignores anything older. New items are pulled into the database and those older than three months are deleted.

I can trigger a manual update at any time via a 'refresh' icon which triggers an async action to poll feeds in the background. The feed list (which slides out from the left) shows which feeds have unread items.

Indie and Integrated

So, why go to all the trouble of building my own feed reader? The main reason is integration with the blog. It's also another aspect of my online life that I can bring into my own control.


In addition to 'mark as read' each 'card' has actions which allow me to post directly to the blog and send webmentions. I can like, reply to or bookmark a post and the relevant Webmention will be sent.

Tapping each of these actions brings up a form populated with the post URL and the 'content filter' to add the required markup. I can then add some comments or my reply and post that straight to the blog.

I can 'mark all as read' which does as it suggests unless viewing a single feed when only items for that feed are marked.


The /reader page is publicly available but all admin and post actions are gated behind login checks. Anyone is welcome to come and have a look at what feeds are listed — the posts visible will reflect my read/unread status.

I am considering adding the ability for anyone to download an OPML export of the feeds list should they want. I might also add an option to 'suggest a feed' where visitors can let me know of a site they think I should be subscribed to.


This is a version 1.0 feature that likely has bugs and needs tidying up or refining so it will likely change as I use it more and come up against issues or frustrations. I've already thought of one thing I want to add while typing this.

It doesn't support JSON feed but someone submitted a PR to include this in the library so I may look at implementing that in future.

Here's a short video of /reader in action.

  • Reader
 In his post What is a blogchain? Horst Gutmann posits that:

" ... making a post part of a chain is an explicit action ... But what would happen, if we don’t do that explicit step? This would also allow us to not only have a single parent-child path but one involving multiple parents, just as multiple thoughts can come together to form a new one."

He writes about creating a blog-graph rather than a blog-chain. It took me back to the idea of pathways and journeys through the blog.

Some kind of visual presentation of threads, especially in a social context, has been on my mind since the Google+ days — a means of depicting the spread of a conversation and the conversation itself in a graph-like manner. Horst's thinking translates this to the ongoing conversation with yourself AKA the blog.

It's someting I was already considering in some form so as to aid with those pathways and journeys, although not quite so elegantly.

The complexity a full map would require is currently beyond me but I can implement the first steps. I wondered, "what would it look like if my 'Start Here' page showed onward links from the posts it displays?" Now, the links are all available within the full post text but would if be useful to pull them out into a simple list for quick reference? So that's what I've been working on.

Graph links

It's not amazingly pretty (I'm iterating the design) but it helps to add a bit of structure to things. Is this the best place to do it? It's as good as any. Does it do what I set out to achieve? At a (very) basic level, it provides the beginnings of a path (two levels deep now) – somewhere to start exploring things in a couple of different ways.

  • Blog - Mar 9, 2022
  • Archive - Mar 29, 2018
 I keep going back to the thought that "the most focus you'll ever have" on something is when it first grabs you.

I've had a number of items left as unread in Reader, a number of notes left unfinished, a number of tabs left open, all just waiting for me to return to them and write something.

Two years ago, Drew Coffman wrote that notes can be a graveyard for your thoughts, written down then lost. I remarked that it felt my blog could be like this: "that I'm not doing enough with what I've got, making do instead of making strides."

If that is the case, if it is a graveyard, then I want to speak to the dead, build on their ideas. (And by 'the dead' I mean past instances of me who thought something was worth linking to or writing about.) That's why I've made all the recent changes to the site. Reader, Start, it's all about extending blogging, getting more from it, hopefully doing more with it by creating pathways through my thoughts over time.

Tom Critchlow wrote about increasing the surface area of blogging; he was talking about blogging as a whole but it can equally apply to a single blog. Creating a larger surface area allows for more scope, more references, more links, more connections – with some work and a bit of luck that leads to more ideas. Critchlow wrote:

"I think there’s something quietly radical about making your feed reader open by default. It increases the surface area of RSS so others can discover content more easily. It makes blogging more visible."

That's true but, in a setup like mine, it also allows for easier consumption and reuse.

The desire to turn the blog into a database, rather than just be held in one, has been long standing, five years at least. My interest was, therefore, piqued when CJ Eller quoted Justin Murphy's post Personal Knowledge Management is Bullshit. Murphy argues that having an ever expanding dataset is "oppressive not impressive. It’s not useful, and it’s not illuminating."

"Individuals blessed with high degrees of industriousness and orderliness will build sophisticated media diets, note-taking systems, and automated archiving pipelines much more effectively than those less blessed with these traits."

Then they try to sell these systems to the rest of us.

I am definitely more of the latter, the 'less blessed' and always have been; organisation has never been a strength. To that end, I've always been a bad curator. Start is an attempt at improving things, taking them out of my hands to a degree, with a minimum of effort.

It seems a waste to have years of material, of my personal history, sat there for its own sake rather than be able to take advantage of the potential held within. But Eller likens PKM to a garbage heap, "a perpetually expanding web of hyperlinked notes" asking how we can prevent one from developing and save ourselves from such a fate.

Maybe the answer is simply to be selective.

For various reasons, I have been very bad at feeding the machine, very few posts have been marked with labels that would place them within my system. Maybe that's a good thing. By being slow to add items I am preventing an unwieldy build up. I originally intended to throw all sorts in but find that something really has to resonate before it gets labelled.

I also feel that integration is key. Having tried a wiki-like system in the Garden I decided it was better to have any form of PKM as integral to the blog, directly fed by it rather than as a separate repository. Thoughts and ideas are posted once to the blog, why duplicate the effort? I don't want it to be what most would consider a traditional PKM system. Yes, there are bi-directional links in some cases and, between posts, I have the ability to indicate these links, but there are few. Instead, I mainly rely on internal webmentions to indicate related posts. Start deals more with mini-hierarchies originating from individual starting points, threads rather than a web.

Perhaps the blog is finally ready to be the "digital public commonplace book" or thought space alluded to by Chris Aldrich almost two and a half years ago.

Past, present and future me are in a far better position to communicate across the years than ever without having to shoulder too heavy a burden, or continually sort through (and possibly dispose of) a garbage heap. The blog exists in its own right, and will continue to do so for years to come. Everything needed is held within and I now have a way to unlock it.

What could be easier than that?

  • Blog - May 7, 2022
  • Blog - Apr 20, 2022

Word of the day: prosody

  • noun,
    1. the patterns of rhythm and sound used in poetry
    2. the patterns of stress and intonation in a language

Word of the day: jocosely

  • adverb, "in a way that is humorous or shows that you like to play"

Via Althouse

 Bookmarked: Can we ever become Post-Social? – On my Om...

"To me, this is the real challenge of post-social reality. To live in this post-social future, one has to embrace ideas that are the antithesis of self-importance. After two decades of being trained by micro-dosing on dopamine, I am not sure we can!"

 Johann Hari's Lost Connections was recommended to me so I used my monthly credit on Audible to get the audio book.

Over the past couple of days (while walking Jac or doing the dishes) I've listened to just the first four chapters and it is already the stuff of revelation, and we haven't really gotten into the meat of anything yet.

I'm glad that Hari narrates the book himself. The story he shares is intensely personal so hearing it in his own voice adds a deeper connection to what you are hearing. There appears to be a trend forming here.

I've had his book Stolen Focus on my wishlist since the start of the year. Listening to Lost Connections has served to reinforce my desire to read (or listen) to it.

  • Blog - May 16, 2022
 Several Short Sentences About Writing isn't so much a book that you 'read', more one that you peruse a section of every now and then.

As such, I'm going to start Consolations by David Whyte.

That will technically be four books I'm reading at the same time (along with the Daily Stoic and Daily Thoreau) — maybe five if you include the audiobook of Oliver Burkeman's Four Thousand Weeks.

I've never really been one for having multiple books on the go but the nature of these means that I can dip in and out as required. I'm also looking for those serendipitous moments when things align across multiple texts and create connections that wouldn't normally appear.

 A couple of days ago, I finally finished Oliver Burkeman 's Four Thousand Weeks having started it back in August.

More like it finished rather than me completing it.

I "read" it through a combination of Kindle and Audible, listening whilst walking Jac or when running on the treadmill. It didn't always sink in. At one stage I backtracked in the Kindle app to make some notes, forgot, then (some time later) continued to listen in Audible only to realise ten minutes in that I'd heard that part before. Heard but not really remembered. So I continued, hoping it would sink in this time.

It's quite ironic that Burkeman writes about the modern frustration of reading a book, that people experience "a revulsion at the fact that the act of reading takes longer than they’d like." I, however, got more from the times when I did read as opposed to those where I listened. Why? Because I could actually take more time over it. It is easier to re-read a paragraph, passage or even a page than to muck about with your phone rewinding in the Audible app, trying to guess at how far back you should go to repeat the part you wanted to hear again.

I will also watch movies in Netflix while running, breaking them down into episodic chunks. There's something refreshing about watching something 20 to 30 minutes at a time. It gives you pause for thought, allows you to consider what's happening more deeply.

The past couple of runs have found me watching In Time, a 2011 offering which I thought looked interesting when suggested by the app. It's a typically dystopian vision of the future where time is the ultimate currency. At one point, 1 the lead character (played by Justin Timberlake) is told "you do everything too fast." The obvious sexual innuendo retort aside, it's a comment that fit perfectly with Burkeman's whole point: we race through life doing everything too fast, trying to organise our way to perfection to get everything done. But we can't, it's impossible — we're just too afraid to admit it.

We have time for what we have time for. Not a second more, not a second less. It reminds me of a scene in The Sandman graphic novel by Neil Gaiman: Death goes to collect a child who complains that his time was too short. Death replies: "You lived what anybody gets, Bernie. You got a lifetime. No more. No less."

We can't do it all so we should enjoy what we have, savour it. Only then will it be truly time we'll spent.

  1. after coming into some time, doesn't quite sound the same as coming into money  


"The fluidity of the mind is of the same family as the fluidity of being. Sometimes they coincide sharply. We call that a revelation." — Etel Adnan.


"If you should ever turn your will to things outside your control in order to impress someone, be sure that you have wrecked your whole purpose in life." — Epictetus

 Happy Friday.

"One needn’t believe in miracles to experience them. But one must be present for them."

Via Jake.

Colin Walker Colin Walker colin@colinwalker.blog