tob

In praise of syndication

The web is terrible

Useful things tend to become invisible over time. I have a router running OpenBSD that I had not touched in a while. One day I logged in and got curious.

$ uptime
12:26PM  up 1583 days,  2:33, 1 user, load averages: 0.13, 0.12, 0.08

It had been running continuously for 4 years without interruption, happily doing its singular task. Similarly, tools like SSH, SCP, rsync, the Sublime text editor, VLC or that one script I wrote years ago all vanish in the daily noise because apart from doing their job, they are primarily not annoying.

The same cannot be said for browsing the web anymore. I use a somewhat dated but otherwise fully functional MacBook 13” from 2013 with the latest MacOS. Most things are working just fine, but as soon as I open a browser and go to any bigger website, the poor piece of silicon is choked to death by a barrage of trackers and useless features packed together in a lasagna of Javascript libraries, each running in the background using websockets and Ajax requests to continue the torture.

Even with a beefy machine I notice laggy input in every bigger web application. In some cases browser vendors running big websites are actively abusing APIs to stop you from using their competitors. Apart from the dreaded interface changes that are imposed on visitors every now and then, content is often hidden in completely overloaded designs, buried under advertisements and self playing videos. The problem has become so endemic to everyday online life that several browsers now come with built-in “Reader Views” or services such as Pocket to trim down websites to their bare essence. Without an almost mandatory set of ad- and script blockers, redirect skippers, CDN caches, fingerprint scramblers and privacy containers (the list goes on), almost every modern website is a cocktail of ad-infested privacy nightmares. And then there is the fine threshold where running too many add-ons to curate the web is a bottleneck and security threat itself, so having multiple browsers on a device is also considered “normal” these days. Maciej Cegłowski summarized the state of modern web design in his hilarious talk The Website Obesity Crisis with the following image:

A great way to combat many of these problems is to use RSS. I recently noticed that over the last year I had relocated most of what I consume online to an RSS reader. I had been using it for now more than 12 years, mostly to follow blogs, but now on some days I only open the reader instead of my browser. I am not alone in this move: Wired ran an article about the resurgence of RSS because of the way the web had transformed. A reader on Hacker News soon after pointed out the irony that the very same article - suggesting RSS as a solution to this hot mess - came with its own clown-car of trackers. In a very twisted way, this article made clear why most of the web is terrible.

An elegant weapon for a more civilized age

For those unfamiliar, RSS is a standardized container format for content updates, for instance blog posts or news articles. Such updates usually have a title, an author, a publication date, some content (i.e. text and images) and perhaps a list of tags. RSS encapsulates each update in a bit of XML. An RSS reader - often referred to as a feed aggregator - which you point to an RSS stream will, in regular intervals, check the stream if any new updates appeared and download them for you to view later. In many ways, it is like having an inbox for website updates.

But it doesn’t have to end at blog posts. Most of what we read and watch every day can be encapsulated with RSS: Facebook posts, Tweets, Instagram pictures, new videos uploaded Youtube/Twitch/Vimeo, Github commits etc. are all updates on websites we check repeatedly every day. That manual labor can be avoided by subscribing to their RSS streams.

Say you are interested in computer graphics. You may have a couple of people posting on Twitter that you follow. There is also the SIGGRAPH Facebook page you open every day to scan for interesting tidbits. You are also on Mastodon, because some people from the community are gathering there. Additionally, you read a ton of blogs, and you follow the Youtube channels of Khronos, GDC and some researchers, for which you get notified through your subscription on Youtube. Except this one person that hosts their videos on Vimeo, that one you need to check on your Vimeo account. At last there are the Github projects with the occasional releases and the starred repositories of people you follow. To sum up: The content category you are interested in - computer graphics - is splattered all over the place and every day you will need to go out and collect everything back together.

With an RSS reader, you can open a folder - let’s call it Computer Graphics - and simply add all those sources into it. It is now the RSS readers task to fetch new items in regular intervals and notify you. You will never have to visit any of those pages again to check for updates. After all, if it is just a category you are interested in, who cares were the content comes from?

The image above shows a sample from my Music folder, where I follow Soundcloud accounts next to Youtube, Vimeo and a blog at the same time. All relevant data ends up in the same stream of notifications.

What do I gain?

Apart from reducing the menial task of visiting a bunch of websites every day, RSS has some nice side-effects.

No walled gardens: RSS readers allow you to fetch content from a multitude of sources and group it in any way you please. Decentralization comes naturally and is easily managed. Content is not bound to specific websites or providers.

No accounts: On Youtube for instance, subscribing to channels requires an account. For each other walled garden where you subscribe to something, you will need an additional account. You can get away without any accounts by aggregating all subscriptions via RSS.

Limited tracking: RSS encapsulates raw content of an update. A reader can show you a new item without you visiting any website. All the Javascript nonsense that comes with a page you would usually visit (like the omnipresent Google Analytics) is gone.

No interspersed ads: Twitter is among one of many websites that inject advertisement posts called “promoted tweets” into your stream. Technically, that is possible with RSS too. Without accounts and scripts following your every move, building a profile about you is limited though.

Unfiltered and unsorted by machine learning: Many services will employ some type of machine learning to show you something they deem interesting for you. Chronological order goes out the window, as these services push the “top” or “most liked post” to the beginning of your stream. RSS is not a service controlled by anyone, therefore the order is yours to control.

Faster browsing: Content is served as raw text that may be formatted with simple HTML. Instead of opening 10 websites that each harass your browser, one feed with limited HTML or text-only messages and pictures remains. All content is served in a common theme.

No social features: Without walled gardens and no centralized sources, there are also no common comment sections or share buttons.

Privacy: Given all of the points above, privacy of whom you follow and what you read is maintained.

Security: Generally, the less intelligent and powerful a system is, the less damage it can inflict. Technological blights like Cross Site Scripting attacks are simply not a thing when you read raw text.

What can go wrong?

Of course not everything is suited for RSS, such as legitimate web applications like shops or banking portals, and there are some down-sides to consider when relying heavily on RSS.

RSS may not be supported: A website you like and want get updates from may provide no or only inadequate RSS streams. For instance, a news page could give you an RSS stream for each category, or the entire site, or none at all. In these cases you might need to rely on third-party scrapers that will generate RSS content from the website. However, a nice side-effect of those services is that they act as proxies: Since you are not directly subscribing to the pages RSS, it won’t even know you where ever there.

Non-public data inaccessible: Scrapers can turn any public website into an RSS stream, but anything locked behind an account can become a problem. Some websites implement private RSS streams using secret tokens (for instance the personal GitHub news feed), but in most cases you will be out of luck.

Only previews available: Many RSS streams do not provide the full content of the update, only a preview, forcing you to open the original website again. It is not the end of the world, but annoying. There are again third party services that will automatically expand to full content RSS streams from preview-only streams.

No social features: Without walled gardens and no centralized sources, there are also no common comment sections or share buttons.

No recommendations: Platforms such as Vimeo or Instagram will, given user tracking through accounts or other means, compile recommendations of what to watch or whom to follow. Decentralized and without accounts, there is no recommendation page anymore. Online RSS readers such as Feedly might recommend more feeds, but in general terms this feature does not exist anymore.

Synchronization between devices: To keep track which article on which feed was marked read or unread, RSS readers keep an index database. These index databases are not standardized and often cannot be synchronized easily between different readers. Online RSS readers such as Feedly solve this problem by synchronizing an online index with a proprietary protocol. An effort is underway to solves this issue.

Multimedia content: Some items can be subscribed to via RSS, but not shown as purely raw text-content, such as video or music subscriptions. In these cases your RSS reader will use a built-in or external browser to open a link. However, getting notified this way is still preferable.

On Readers

Armed with the knowledge of the pros and cons of using RSS, you can start by installing an RSS reader to subscribe to something.

Generally, you want to look out for a reader that supports import and export of your subscriptions. The commonly used format for this is called OPML. Simply put, OPML is a standardized list of all your subscriptions. A current backup of those subscriptions can be used to quickly change from one reader to another, and they are very easy to edit in case one wants to mass-change RSS feed subscriptions to an alternative. For instance, you can export all your Youtube subscriptions as OPML and easily migrate them to Invidious, an open-source Youtube proxy, using a simple search-and-replace with your favorite text editor:

https://www.youtube.com/feeds/videos.xml?channel_id=ID
-> 
https://invidio.us/feed/channel/ID

Keeping a backup of all your subscriptions is essential to being independent of any third-party services or readers!

There are two types of readers: Online readers running in a browser, which keep all your subscriptions behind an online account, or local readers, which may synchronize with an online reader account. The go-to online reader and winner of the Google Reader exodus is Feedly. Feedly supports OPML import-export and can synchronize with a wide range of mobile and desktop readers. If you have no reader application at hand, you can always use the web version. Feedly and other online RSS readers often limit the amount of RSS feeds you can subscribe to for free. An alternative is to use an offline RSS reader or to host your own online RSS reader. FreshRSS is an open-source project that can be set up with minimal friction on a webserver with PHP.

There is a multitude of very nice RSS readers out there, but I’ll mention only a few very basic ones here:

  • Thunderbird, the well known Mozilla email client, supports local RSS subscriptions.
  • Feedbro, a browser extension, comes with OPML support and additionally can render MathJax in blog posts. Since it is browser-based, it can be used in conjunction with uBlock to weed out any additional requests coming from embedded media.
  • RSS Mobile, the most basic iOS RSS reader I could find. Free, no ads, runs without any web service.
  • Readify, an open-source reader and equivalent of RSS Mobile for Android.

RSS streams of common services

Apart from blogs, one of the most interesting use cases of RSS is to escape social media bubbles and walled gardens. Because RSS prevents social media platforms from tracking you, most have dropped their RSS support entirely. However, this is where scrapers such as RSS-Bridge come to the rescue: These services parse website content and turn it into an RSS stream, shielding you away entirely from the site. In the list below, replace RSS-BRIDGE-INSTANCE with for example https://bridge.suumitsu.eu/. There are many more publicly hosted instances of RSS-Bridge, and of course you can run your own.

Here is a sample of RSS streams you can use to replace typical social media:

  • Twitter: https://RSS-BRIDGE-INSTANCE/?action=display&bridge=Twitter&format=Atom&u=USERNAME
  • Mastodon: https://MASTODON-INSTANCE/@USERNAME
  • Instagram: http://instatom.freelancis.net/USERNAME
  • Facebook: https://RSS-BRIDGE-INSTANCE/?action=display&bridge=Facebook&media_type=all&limit=-1&format=Atom&u=USERNAME
  • Hacker News: http://feeds.feedburner.com/fullhackernews
  • Reddit: http://inline-reddit.com/feed/?subreddit=SUBREDDIT
  • Youtube: https://invidio.us/feed/channel/CHANNELID
  • Vimeo: https://vimeo.com/USERNAME/videos/rss
  • Twitch: https://twitchrss.appspot.com/vod/USERNAME
  • Tumblr: https://USERNAME.tumblr.com/rss
  • GitHub: https://github.com/USERNAME/PROJECT/releases.atom
  • Soundcloud: https://rssbox.herokuapp.com/

I keep a more comprehensive list updated on this Github Gist. Note that for most of these pages there are often multiple alternative scraper projects. If you cannot find an RSS stream of a website or service you want to subscribe to, consider contributing to projects such as RSS-Bridge, RSSHub or RSSBox. Multiple instances of these projects are hosted for free by volunteers, and you may want to consider running your own as well.

Conclusion

RSS is a great way to keep track of content updates on any number of sources you visit daily. It naturally shields against unnecessary ad-tracking and separates actual content from virtual garbage, making the experience of reading and viewing more pleasant. RSS frees from the bonds of walled gardens and allows you to organize all of your sources by categories again instead of where they originate from: It is no longer your “Youtube subscriptions” or “people you follow on Instagram”, but subscription bundles of “cat videos” or “food pictures”, wherever they might come from. A well maintained subscription list will reduce the time you spend mindlessly surfing the web in search for new stuff.

If you are as upset as I am about the current state of the WWW, I encourage you to consider this alternative way of consuming the web, or to revive your RSS reader if you have abandoned it a couple of years back.

Here is my recommendation:

  1. Find a good reader you feel comfortable with or sign up to Feedly. I’m on MacOS and prefer Reeder.
  2. Add a couple of blogs.
  3. Subscribe to some of your favorite Youtube channels (here is one I like called 3Blue1Brown).
  4. Use it for a couple of days or weeks to get a feel for it.
  5. Use this list to populate your reader with more content.
  6. If your reader supports a usage overview (like Organize Sources on Feedly), identify and eliminate spammy sources.

And then, if you prefer it, slowly, but steadily, subscribe to to everything you watch, read or listen to online. You can start with my log right now.

References

  1. Wikipedia, RSS
  2. Tobias A. Franke, A list of RSS endpoints, readers and resources
  3. Wikipedia, Comparison of readers
  4. RSS-Bridge, RSS-Bridge Project

Triple Product Integrals

The Grand Picture Most introductions and implementations of Precomputed Radiance Transfer will deal fairly well with the easiest use case: The double product integral for diffuse reflections. Beyond this scope however, few show how proper rotation of frequency-space encoded lighting works, and even fewer dive into the problem of view-dependency...

Continue reading

On nomenclature

Ever since the graphics field got expanded by a variety of new gadgets such as the Oculus Rift, Microsoft’s Kinect and HoloLens or the Leap Motion, and new parties moved in to expand their usage (in particular Magic Leap), I have seen a whole brigade of marketeers and fanboys come...

Continue reading

The Convolution Theorem

The Basis In Linear Algebra, we’re used to build a vector $\mathbf{v}$ out of other vectors $\mathbf{v_1}, \mathbf{v_2}$. Each vector is, at the very least, implicitly constructed out of its basis vectors. If there is no specific basis mentioned anywhere, we assume it to be a basis of unit vectors....

Continue reading

Differential Rendering

Every graphics sub-discipline has its own holy grail, some go-to paper that everyone must have read to get into the necessary basics of the field: Physically Based Rendering has a book by the same name, Path Tracing has Eric Veach’s dissertation, real-time global illumination has Reflective Shadow Maps. For Augmented...

Continue reading