RSS

by R. Preston McAfee, May, 2020

RSS, which stands for "really simple syndication," is one of my favorite technologies. In these days of Covid, I'm spending over two hours with it daily.

RSS is a publishing technology that makes it really easy to push out news stories. Most publishers support RSS, even if finding the link to their RSS URLs isn't always transparent. Some publish using FeedBurner, and not every reader supports FeedBurner. (All the ones I discuss support FeedBurner links.)

Over the years, my RSS feeds have become a fine-tuned machine for news consumption. My current list of news sources is:
Ars Technica, http://feeds.arstechnica.com/arstechnica/index/
LA Times, https://www.latimes.com/california/rss2.0.xml#nt=1col-7030col1
Gizmodo, https://gizmodo.com/rss
New York Times, https://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml
Android Reddit, https://www.reddit.com/r/Android/top/.rss
Slashdot, http://rss.slashdot.org/Slashdot/slashdot
Techmene, http://www.techmeme.com/feed.xml
The Week, https://theweek.com/rss.xml
XDA Developers, https://www.xda-developers.com/feed/
XKCD, https://xkcd.com/rss.xml

These cover general news (NYT, The Week) and California news (LA Times), which is local news for me. In addition, I get technology and science news from Ars and Gizmodo, general tech news from Techmene, phone news from XDA and r/Android and the occasional chuckle from XKCD. I have gradually eliminated most of the opinion authors in NY Times and The Week by the use of blacklists, which delete articles based on the author. The NY Times helpfully has a list of opinion writers. The ones from The Week (which is a great source of reliable news articles, and both left and right-oriented opinions), I created by just noticing authors of opinion articles and banning them from my news feeds. My goal is to quickly see a lot of news, and avoid opinion and argument. Just the facts.

Until Google cancelled it in 2013, I used Google Reader. In early 2013, I tried a variety of services and used Feedly, arguably the closest to Google Reader, for the next three or four years. When Feedly ramped up its advertising, I tried a variety of solutions, using Sismics for a while, then Aggregator supplemented with CommaFeed, but was frustrated that these didn't sync my phone with desktop, so that I had to finish all the news one one, then clear the other, to avoid duplication. I went Android only for several years, using either NewsCracker or Flym. I was reasonably satisfied with this approach, but when I started using my PC a lot, I missed having synchronized news on both PC and Android.

The NY Times is egregious at publishing duplicates. Probably there is some update hidden in the duplicate article, but it means that unless the system erases duplicates (which Flym is particularly good at), I would see the same article multiple times. Sometimes NY Times articles reappear after four or five days. Keeping old articles around for a week with Flym eliminates almost all duplicates, though you have to check the duplicate elimination box in settings.

Recently, I discovered that my webhost, GoDaddy, has a "one button install" of Tiny, Tiny RSS (TTRSS). TTRSS operates in the cloud (specifically on GoDaddy and many other hosts) and can be accessed either by the browser or in Android.

Setup wasn't as intuitive as I'd have hoped. Once installed, I had to edit the config.php file, basically to add the s to https:// for the location of my RSS files. That should have been done automatically and the default should be secure. It also wasn't obvious to me how to add feeds and I wound up adding them manually prior to noticing I could upload a backup (file type opml) from any of my previous readers. The upload ability is hidden in settings.

By the way, Reddit supports RSS in an attractive way. The typical feed for a subreddit xyz is just https://www.reddit.com/r/xyz.rss, so, for example, the science reddit is https://www.reddit.com/r/science.rss, or the earthporn (beautiful pictures of nature) is https://www.reddit.com/r/earthporn.rss. It is really easy to be completely overwhelmed by consuming reddit on RSS. Reddit is full of interesting areas, reasonably well policed to eliminate, or at least downvote, crap. The downsides of RSS as a way of consuming Reddit is that it isn't sorted by upvotes, and comes with ads, while if you use a Reddit client like Joey, the ads are suppressed and the reddits can be automatically sorted by upvotes, so that when you reach a threshhold, you can safely quit reading. But some reddits are worth reading completely, in which case RSS is a sensible way to pull them. On RSS, you can also subscribe to the top-voted entries of a subreddit xyz with www.reddit.com/r/xyz/top/.rss.

So far, Tiny Tiny RSS (TTRSS) performs like a champ. Many RSS readers are slow to update, and a half hour can go by between the time new articles are posted and the reader updates. When trying a new client, I always benchmark against an existing, known-good feed reader, because the variation here can be substantial. I'm not sure why, but I ran about a dozen in a comparison (in groups of three or four) and Aggregator and Flym were systematically faster than most of the others I tried. Here is what the TTRSS interface looks like:

I made a theme, BlueLeft.css (left-click and choose save as to get a copy). You install this by copying it into the themes.local folder in TTRSS, and then it appears as a candidate theme in the settings. This theme is shown in the above picture. There are dark and light themes that come with TTRSS.

Adding blacklists to TTRSS was harder than to Flym, but a good bit more nuanced because I could eliminate by text-matching to authors, body or title separately, while Flym matches all fields (and only author because I asked the developer to support that use case). TTRSS is probably misnamed given that it supports lots of choices and themes; not tiny but definitely nice. I especially like that I host my own list of articles, but in the cloud rather than on a home PC like I did with Sismics, and without ads like arise with Feedly or other commercial solutions.

If you have your own website through a commercial host that supports cPanel, you probably have free access to TTRSS with a one-button install and adding a single letter to the config.php file.

The Android app for TTRSS works reasonably well. It used to have a $4 unlock charge, but there doesn't seem to be any missing functionality in the free version or the version available for sideloading from FDroid or the version on the creator's website. A $4 donation is more than reasonable, especially because you can try it first to see if it works for you. I also have used this app, which worked OK, no option for pictures in the feed unless you click on the headline. For reading rapidly, it is better, but I use the other more often because I wind up clicking less and just getting enough from the snippet. Because the feeds live in the cloud and are synchronized, there is no issue with using two apps -- each becomes up to date when opened.

I use a cron job, created through cPanel, to update the feeds every five minutes. The syntax is

*/5 * * * * /usr/local/bin/php /home/mcafee/public_html/RSS/update.php --feeds --force-update --log /home/mcafee/public_html/RSS/log/cron.log --quiet

which runs every five minutes, grabs php from /usr/local/bin/php, applies it to the update program, applies it to all feeds, forces an update of all feeds (weirdly, sometimes it would just fail to apply the update to all the feeds if force-update is omitted, even though the --feeds flag should force all feeds to update), logs to a file named cron.log, and the --quiet flag prevents an email every time it runs.

Update Nov 1, 2020: I switched webhosts from GoDaddy to Inmotion. Pages are loading much faster and so far I haven't experienced the 2-3 minute downtime that occurred occasionally with GoDaddy. Plus SSL certificates are included; I paid about $250 for three years of SSL at GoDaddy. TTRSS on Inmotion has distinct issues. First, the need to edit config.php noted above because default was http, not https, was not present. However, instead, API access is disabled by default and you have to guess that the first login was admin, rather than, say, your user account id. Moreover, if you import feeds when logged in as admin, feeds won't appear if you create another user account. You have to add feeds separately, or check the single user box. Finally, it throws off a ton of irrelevant errors -- something about a change in the way php handles colors -- which is annoying both because there is always a yellow caution triangle, and because you don't get notified if a meaningful error occurs. Finally, the default cron job (good work, though, including a cron job) also includes an error that png files should include progressive appearance. This is super irritating because it spawns an email for an error that doesn't matter. You can send the error directly to trash, of course, but still. All this because the version of TTRSS is not adapted to such a modern version of php.

Update April 2, 2022. TTRSS started running many entry processes, dozens, exceeding the forty permitted and causing system faults. This is likely the fault of a company called Softaculous, who provides software to web hosts and hasn't updated TTRSS in over two years. Because TTRSS relies on PHP and a database program, updates to either potentially break TTRSS. The breaking does not appear to be the fault of TTRSS, which has new versions on GITHUB, but Softaculous, which has not updated the version it supplies to web hosts. So I switched to FreshRSS, which is a similar program. Installation was certainly easier -- it worked out of the box. It has several alternate displays, but what I really like is "reading mode" which hides all the feeds and just displays large font, easily read scrollable articles, available with a button click. There are several Android apps for FreshRSS and I chose FeedMe. I'm liking it enough that I donated $10 to the creator.

Update Jan 2023: I still prefer FreshRSS and indeed have no complaints. I make about $40 per year from answering questions in the Play Store and spend perhaps $3 on apps, so I donate the balance to app developers and FreshRSS's android app gets the most -- it is terrific. Overall FreshRSS is the best way to consume RSS.