tl;dr: Activate ReadKit’s totally hidden but perfectly functional ability to subscribe to arbitrary RSS feeds outside of aggregators. Feel your way forward from there.

Edited to add: This also seems to work with Dreamwidth, via simply changing the domain name in the subscribed-to URIs as should be obvious.

I wanted to add various friends’ LiveJournal feeds to my RSS reader, but do so in a way that allowed me to read “friends-locked” posts: private entries visible only when authenticated as a person in a given LJ user’s approved social graph. Several years ago, I set up NetNewsWire to handle this acceptably well. However, development on that program had ceased prior to Google quietly killing the world’s most popular RSS aggregation service in 2013, forcing me, along with countless others, to completely overhaul my RSS workflow in terms of both server-side aggregation and client-side newsreader. Plenty of people took the understandable path of abandoning RSS altogether, but I strode among the fools who stuck with it, settling on Feedly as my aggregator service and ReadKit as my Mac-compatible RSS client.

I’ve remained happy with both since, but I never followed through with the contortions necessary to add all those LJ feeds back in. As part of my ongoing personal blog renaissance, I have started to read and subscribe to blogs once again (as well as unsubscribing from the many once-favorite feeds my interests have moved on from). While LiveJournal’s prominence in the blogging world has faded quite bit over the last decade, I still have many friends who post there regularly, and who continue to make use of LJ’s friends-lock feature. I missed their writing, and wanted to see it again via RSS.

I faced a problem in that, as far as I could tell, ReadKit supported only subscriptions via aggregators, without the additional support for arbitrary, unsynchronized RSS feeds that NetNewsWire had. In my experience, aggregators didn’t work well with feeds requiring authentication — at least Google Reader didn’t, back in the day, and more recent experimentation suggested that Feedly didn’t handle them much better. So, since it had been a couple of years, I checked in on NetNewsWire — and, lo, its developers have floated a beta of a major new version since the Google Reader apocalypse! However, judging by warning signs that surrounded it, such as the disrepair of its Twitter profile page or its homepage’s invitation to follow its updates on app.net, I inferred that development had stalled out over a year ago. Not something I’d feel comfortable migrating my way back to, at the moment.

(In full fairness: after I started writing this post, I saw that NetNewsWire’s history page dates its most recent release to last September, so the project may in fact have a bit more life to it than its social media presence would suggest.)

This drove me to start experimenting with ReadKit, Feedly, and other aggregators, and shortly after I began I made a surprising discovery: ReadKit can follow feeds outside of aggregation services! It simply sets this feature as inactive by default, and hides its availability so well that I had no idea it existed after nearly two years of regular use. I found it purely by accident as I started to mess around with my aggregator accounts. Here’s how to turn it on:

  1. Select ReadKit → Preferences… from the menu bar.

  2. Click the [+] button the lower left of the resulting Accounts pane, as if you wish to add a new online service account, even though you don’t.

    Adding a new "Account" to ReadKit

  3. Click the rightmost icon from the fancy-looking list of icons at the top of the pane that slides down — the one that resembles the familiar RSS “radio waves” symbol. You should see a two-button form labeled Enable built-in RSS, as pictured above.

  4. Click the Enable button, then close the Preferences window.

And with that, ReadKit transforms — however reluctantly — into a more fully featured RSS reader, allowing you to subscribe to feeds outside of aggregation services. From this point on, when you add a feed to ReadKit, selecting the ambiguously named “Feeds” from the list of available services will mark that feed as locally controlled, versus remotely aggregated.

Actually getting those LiveJournal feeds in there is a separate task. First, log into LiveJournal, then make sure LJ has your permission to serve your account’s data via HTTP auth-digest. Then, start adding feeds to ReadKit with URIs of the pattern http://USERNAME.livejournal.com/data/rss?auth=digest, with USERNAME replaced by the LJ username of the friend whose blog you wish to subscribe to. With each addition, ReadKit will prompt you either for your own LJ account’s username and password, or for access to your LJ credentials as stored in your Mac OS account’s keychain.

If that sounded a bit vague, it reflects the fact that this procedure felt tetchy to me, requiring a bit of tenacity. Sometimes ReadKit would crash when attempting to add the feed, but accept it without complaint after a relaunch. Sometimes it would report that authentication failed, and this meant that my Mac keychain had an outdated notion of my LJ account’s password by way of this particular friend’s account, probably dating from my last regular use of NetNewsWire. I would update this per-instance by opening each complaining feed in Safari, letting the browser prompt me for my username and password. It would then update my keychain, and pass control back to ReadKit. I had in fact changed by LJ password at least once since my NetNewsWire days, so I had to perform this little dance for every single LiveJournal friend’s account I subscribed to. But, in the end, everything worked.

A related disadvantage to this strategy: When I next change my LJ password, I’ll need to individually re-authorize all these feeds somehow. If I cared very much about avoiding this, I expect I’d want to drop $20 per year on a paid LJ account, which would give me a unified RSS feed for my whole friends list. For now, though, this works well enough — and it gives me finer-grained control over the LJ users’ posts I see, without the need to boot anyone from my friends list.


Next post: I saw Oldboy (2003) and then Oldboy (2013)

Previous post: I read: Freedom Evolves