Reading RubyWeekly. Next level achieved!

(With a bonus)

Posted by Anton Katunin on 9 November 2018
Tags: code, ruby, rss, rubyweekly

RubyWeekly is a weekly email with curated list of links about Ruby. It might take me few hours to read through it if the content is interesting. It’s hard to find 2 hours of focus time. It would be nice if I could track each link in the newsletter separately.

This blog post describes my evolving solution and how you can optimise your workflow and read RubyWeekly with one click.

Version 1

RubyWeekly always comes as a one block of text, i.e, an email, RSS feed or website. The first step was to write a web scraper to convert the web version to an RSS feed with one link per item.

I used the mechanize gem and couple of hours later I had my parser. I created a simple Rails app to parse and serve my new RSS feed.

Then I added the feed to my RSS reader (Inoreader). Everything was great.

That was until I went on holidays and discovered that unread links older than 30 days are marked as read automatically. The read/unread status of each link was handled by my RSS reader. I discovered that most of RSS reader services don’t store the unread status for old items.

That led to the second version.

Version 2

After the holidays my backlog of unread RubyWeekly links grew and was over 200 links.

Instead of one RSS feed, I created one feed per RubyWeekly issue. I configured my RSS reader to automatically import those feeds with an OPML subscription (It’s like a list of RSS feeds to subscribe to). The RSS feeds exist for only a month and will be recreated again after expiry.

Every month my read position was lost, but at least I could track it again for the following month. All I had to do is to manually remember my reading position between monthly refreshes.

You can read more about it here.

The second version was better but it was hard to manually remember the read position between refreshes.

Version 3

The third and most recent version so far; the goal was to fully automate the process while working around RSS Reader limitations. The solution was to not add all items to the feed at once. The item aging process starts when the item is added to the feed.

Instead the new items are added to the pending list first in the Rails app. Only a small portion of the pending list is moved to the RSS feed. As I read through the RSS feed, additional items are added to the feed.

For example, if 20 unread links are added to the RSS feed at the start, when I click on the first link, the Rails app will publish 1 extra item to the feed so there will be 21 links (1 clicked and 20 unread). If I click on 2 more links, the script will publish twice more so 23 in total (3 clicked and 20 unread).

This way as long as I view 20 links in 1 month, I don’t need to worry about losing track of unread items.

But there is more

Bonus

My RSS reader (Inoreader) has a nice feature. You can create a bookmark which will open the next unread link. And that’s what I’ve done.

So the way I read RubyWeekly now is I click the bookmark and it opens the next unread link. When I click it again and it loads the next link. When I need a small break the interesting article is only 1 click away.

Bonus x2

The Pocket App also has a similar feature which is not documented. If you open

https://getpocket.com/random

It will open a random saved link from your collection. Unlike the RSS Reader solution above, it won’t archive the saved link once opened and you have to archive it yourself.