tudor’s website

Zoomer Tries RSS: In Praise of Yarr

tags: good-software, praise, rss, self-hosted

Yarr is, according to its GitHub page, yet another rss reader. But I think this description doesn’t do it justice.

I started using a feed reader less than half a year ago, to easily keep track of new content I enjoy on the internet without depending on social media. Web feeds are, in 2024 terms, old technology: according to the RSS Advisory Board, RSS, one of the main web feed formats available, has been published in 1999, and it’s not even the first web syndication format ever made.

I’m a Gen Z-er: I was a toddler when RSS reached its 2.0 milestone, and when Apple popularised RSS for podcasts by adding support in iTunes. I was in middle school when Google Reader was shut down. When I started using the internet by myself, it was already dominated by social media, which is still the dominant source of information for many people around me, younger and older alike.

Getting all my information from social media got really tiring; I was using Reddit mostly, and a carefully curated set of information-oriented Instagram profiles — so nice to read pictures of text! I didn’t really like wasting my time doom-scrolling instead of doing other things that could generate some creative output — like writing on this blog, maybe — or doing some fun coding. Or maybe I could tidy up my kitchen, read a book and actually learn some interesting, useful things laid out in a long-form structure. Heck, even getting bored is pleasant, it makes your brain think!

I ditched Instagram altogether, and then I also uninstalled the Reddit client I was using on my phone. I still read some subreddits from time to time, but now it requires me to manually type in the subreddit I want to read, scroll a bit, and then become very frustrated with the new web UI — which is totally not intentionally bad to make you download the mobile app. Not only that, but I also change the URL to old.reddit.com when needed (even harder when doing it on my phone…). And then I only read without ever logging in, which is why using Old Reddit is a requirement. You can easily see that it’s not the best reading experience for the web.

With this in mind, I remembered RSS and feeds are a thing, so I figured I should set up a reader. I’ve never used one before, but the concept sounded promising: I can subscribe to blogs and news outlets, directly!

I had three requirements for choosing one:

  • Simple, non-distracting UI.
  • Has some kind of feature to extract relevant content from web pages — many feeds truncate the content.
  • Doesn’t require me to do any kind of syncing when using multiple devices to read (laptop and phone). A self-hosted web app should be fine.

First try: Feeder

Feeder is a pretty Android app, it implements the newest Material 3 design language, and it’s generally very pleasant to use. It definitely satisfies the first requirement. And it knows how to extract the content from a web page, very nice! Unfortunately, it’s only for your phone. If you want to change your reader app, it does support importing and exporting OPML files; that is pretty sweet, but I don’t want to be tied to my phone to read the news and the blogs I want to follow.

Second try: Miniflux

Miniflux is what I’ve been using up until I discovered Yarr, actually. It’s wonderful software: it’s a web application, very easy to self-host, and it’s quite featureful. It has a very simple UI (some might say “arcane”), stays out of your way, no useless spacing, readable, accessible, it’s just great. Looks similar to Lobsters and sourcehut, I really like this style. It even has the required manifests to make it a Progressive Web App, making it look like an app on your phone. It’s just an all-around pleasant experience to use Miniflux.

Being written in Go, it’s very easy to self-host: the program is just a single statically-linked executable. I run NixOS on my server, and I was very delighted to see that there is a module for Miniflux in Nixpkgs. Very easy to set it up and integrate it in my setup.

I have one big gripe with Miniflux, though: it only supports PostgreSQL, though very understandably so. It’s much easier to support a single configuration, a very respectable one in this case. Miniflux also has a commercial offering, so it shouldn’t come as a surprise that it’s in its best interest to have a well-tested and reliable storage layer.

It’s just that I prefer having as many services as possible use SQLite when it comes to my self-hosted services. One of the main downsides of self-hosting is that you have to take care of your own services — who would’ve thought! I really, really don’t want to take care of a PostgreSQL cluster, even if it’s a single-node one. You might argue that it’s just one node, what’s to be taken care of? Identity maps, backups, authentication… I can just use SQLite, have all my data in one file (per service), you cannot access it remotely, so that’s covered, backups are a one-line command (sqlite3 db.sqlite ".backup db.sqlite.bak"), and the only authentication and authorisation is in the file system permissions. I don’t even have to think about what needs to be taken care of, there isn’t really anything I need to worry about! Of course, serious usage should make me worried about the throughput, write blocking, cache sizes, journal modes and so on. But at my scale, that’s not really an issue. It reduces the cognitive complexity, let’s put it this way.

The less I need to think about things when self-hosting
→ The easier it is to self-host
→ The more satisfied I am
→ The more I am encouraged to keep on doing it!

It’s the same as: the cleaner and well-stocked my kitchen is, the more I am encouraged to cook and eat healthy. The sharper my knives, the more I enjoy cutting onions. Hence, sorry PostgreSQL, but I don’t want you here. If this is not a problem for you, then I strongly encourage you to give Miniflux a try.

Which brings me to…

Third try: Yarr

A screenshot of my Yarr instance, showing some websites I follow and some posts from samwho.dev
A screenshot of my Yarr instance, showing some websites I follow and some posts from samwho.dev

Yarr is, in some regards, even more minimalistic than Miniflux. It doesn’t provide fancy integrations, it doesn’t support multiple users (it does support authentication, though). It doesn’t do much, really.

But what it does, it does well. And it has a couple of niceties, such as the possibility to change the auto-refresh interval — or disable it altogether — or to switch between the predefined colour palettes. There are also some keyboard shortcuts, and the ability to save (star ⭐️) articles for later. It has a small search box, too.

What I find to be the best feature, though, is the UI: it’s simple, yet it looks good. And on a large enough screen, it has this three-column layout, with the feeds, articles, and article view columns, really nice for reading the news. Yet, if your screen — or browser window — is smaller, it will switch to a one-column layout. I find it clean and practical, and I like its choice of icons. It also has a couple dynamic elements, just enough to enhance it and not to be defined by it. For example, when you manually refresh the feeds, it shows the progress in the bottom-left corner, together with a little animated spinner. And when you add a new feed, in the event that it finds multiple feeds for the same websites, it will present the choices in the same “Add feed” modal. It’s completely a single-page application, unlike Miniflux, which is the opposite: Miniflux is a completely server-side application. And I’m usually against that, but in the case of Yarr, there isn’t any “routing”, there aren’t different screens, it’s just one large feed-reading window, and the dynamic elements only enhance the interaction.

I have even more appreciation for the developer for publishing this text file in the repo with the rationale behind Yarr and the sources of inspiration for the user interface. It would be great if more people did this, to get a small glimpse of what they were thinking of when they started a project. The message of the commit that added this file is let’s be honest, nice touch.

Yarr is a bit stuck in time: the author claims that the software is complete, that it fulfils all their expectations, and that no pull requests with new features will be merged. I think this is good for a feed reader: it does what it says on the tin, without burdening anyone with maintaining the program, and without burdening users with upgrades, config changes and the like. There isn’t much to be done, it just works; I applaud the lack of feature creep. Contrast this to Miniflux, which is an actively maintained and updated project, with many features (not a bad thing!).

Yarr can also be used as a desktop application: it supports being launched from the system tray, of all things. This is a feature that I will never use, yet the author wanted to use their program this way, so they implemented it. For self-hosting, it supports only a single user account (or no account), protected with a username and password.

And when it comes to storage, everything is stored in a single SQLite database. There are no other data folders kept around, just that sole database file containing all the state. (This might be a con if you care about cross-compiling the binary, or if anything else breaks because of cgo. Use of cgo is required, because SQLite is written in C, and is embedded in programs directly by linking to its shared library. Read: cgo is not Go.)

I love it so much, it’s one of my favourite programs I use on a daily basis. Open-source, useful, easy to self-host, easy to use, works with a mouse, works with a keyboard, works with a touchscreen. I don’t have to think about it.

And whenever I’m thinking of it, it’s always out of gratefulness. This is the most I can wish from software, in my opinion.

It’s not as well-known, if judging by the number of stars on GitHub, which might be part of the reason for why there isn’t already a ready-made module for NixOS. Luckily, I made my own, which is available on Codeberg.

All in all, I think switching to feed readers has brought a net improvement in my quality of life, when it comes to consuming information. If Yarr sounds compelling to you, I suggest you give it a try. You don’t have to self-host it, you can just grab a binary release from GitHub and run it locally.

Appendix: The Feeds I Follow

Link Aggregators

Hacker News Daily: This is a feed containing the ten highest-rating articles on Hacker News which have not appeared on previous daily digests. I read HN from time to time, but the volume of submissions it receives is too high for me, thus I prefer visiting the website directly.

My favourite link aggregator is Lobsters, yet I don’t have it in my feed reader, because I prefer just browsing the website directly.

Blogs

Various blogs I enjoy reading. At the time of writing this article, in no particular order:

Comics

I only follow xkcd. I haven’t found other comics I would enjoy reading, yet.

The News

I use my feed reader to read both Dutch news — I live here, and it’s very good language immersion — and Romanian news, to keep an eye on what’s going on there.

Dutch:

  • AT5 Achtergrond: AT5 is a local news outlet. I’m glad that they offer separate RSS feeds for each category on their website, so that I can only follow the investigations.
  • NOS Algemeen: General news from the public broadcasting system. The online Teletext (“Teletekst”) is the best, in my opinion, for getting a quick look at the news.
  • NOS op 3: Mostly targeted at younger people, the NOS also makes nice explainer videos for various events happening in and out the country. They also make explainer apps, such as this one about the electricity network.

As you can see, I mostly read news from the public service. For investigative journalism and more detailed stories, I prefer purchasing magazines and newspapers. It’s always nice to read from paper!

Romanian:

  • PressOne: Investigative journalism
  • Rise Project (link in English): Investigative journalism, focused on organised crime and corruption. I had to be careful when adding this one into Yarr, because the meta tags on the website’s front page lead to the feed for their blog. To get the investigations feed, I fed Yarr with the web page containing all articles categorised with “investigation”.
  • Recorder (link in English): Investigative journalism, again… They have really nice videos on their website and YouTube channel. I am a bit of the opinion that they have a slight tendency to be negativistic and pessimstic, but their materials generally tend to be quite good.
  • Buletin de București: The Bucharest Bulletin. Local publication, I like seeing what’s going on there. The website has a funny address.

YouTube Channels

YouTube offers feeds for all their channels, which I use to subscribe to them without doing it from YouTube itself. You should be able to just paste a YouTube channel in any reader, and it should just pick it up.

Online Magazines

Currently, I only follow Ars Technica and Teletext (not to be confused with the NOS Teletext).

Teletext is, according to their website, the newest platform dedicated to pop culture in Romania. I’m more of a technical person, I don’t have all the cultural knowledge Teletext’s authors do, yet I really love reading their articles, precisely because it’s all new and different to me.

Others

As I have highlighted above, podcasts are actually based on RSS, so nothing stops you from putting them in your feed reader. I personally use dedicated apps for podcasts like GNOME Podcasts on my computer, and AntennaPod on Android.

I also have a recipe website in there which I really like, RecipeTin Eats. Of course the best way to cook is to train your intuition and just make something you’d fancy with the ingredients you have, but it’s always good to get some inspiration from time to time, which is the reason why I have it in my feed reader.