When people talk about the “internet dying” - what they are really talking about is slop overtaking the algorithm - of social media becoming unuseable because it’s all bots. But that is not the internet, not by a long shot.
If you live and die by the algorithm, then your experience will be one of curation. It will never be that which you have decided for yourself. It will be a path that is taken for you, and that is no path at all.
We solved the problem of the “algorithm” a few years back (well, 27 years back, in 1999 - holy shit that was 27 years ago) - with RSS feeds. I have discussed RSS in the past, but I think I have stumbled upon the “endgame” way to use it: have a server that is the “point of truth” that serves all your feeds. This also tracks read/unread state across your client devices, and syncs it up/down to your phone or machines. Then, you can easily track what you have read and make notes to self/org notes that then become blog posts, emails etc.
With this setup, you have a fully sovereign system in which “scrolling” the internet is a non-starter. Heck, you can get everything you’ve ever wanted to read (or watch and listen to!) shipped right to your door and only open a browser when you really must. I have started to use EWW in emacs more as the JS hellscape of the modern web continues, and this setup is very, very peaceful, yet powerful.
This works for news sites, blogs, youtube channels, really anything you can create a feed with.
Let’s discuss setting this up.
The Components#
Miniflux#
Miniflux is a self hosted RSS feed aggregator - your new “point of truth” if you will - for all feeds and things you want to watch/read/consoom on the internet. Setting it up is very easy in NixOS:
{ config, lib, pkgs, ...}:with lib;let cfg = config.services.homelab;in{ config = mkIf cfg.enable { services.miniflux = { enable = true; config = { LISTEN_ADDR = "0.0.0.0:8082"; }; adminCredentialsFile = "/run/agenix/miniflux-admin"; }; };}Setup a password/username for your admin and then open up your service in a browser to add the feeds to. You will then navigate over to Settings > Integrations > Fever API and set this up so that you can use Elfeed in emacs to read your feed.
One major benefit of miniflux is that you can very easily import/export your OPML feeds to and from it, so if you’re migrating from another service, it’s very quick to get up and running.
Elfeed-Protocol#
Elfeed Protocol is how we will ingest all of our feeds into emacs. I previously had used Elfeed-org - which is still a good way to organize your feeds, but limited strictly to emacs. You will hook into your miniflux fever API like so:#
(use-package elfeed-protocol :ensure t :after elfeed :config (setq elfeed-feeds nil) (setq elfeed-use-curl t) (elfeed-set-timeout 36000)
(let* ((auth (auth-source-search :host "miniflux.labrynth.org" :require '(:secret))) (entry (car auth)) (pass (if (functionp (plist-get entry :secret)) (funcall (plist-get entry :secret)) (plist-get entry :secret)))) (if pass (setq elfeed-protocol-feeds `(("fever+https://joshua@miniflux.labrynth.org" :api-url "https://miniflux.labrynth.org/fever/" :password ,pass))) (message "Error: Could not find credentials in auth-source")))
(elfeed-protocol-enable)
(run-at-time "1 minute" (* 60 60) #'elfeed-update))Change your url or IP address to your running miniflux instance, and setup your credentials in pass.
MPV#
You can hook up elfeed-tube to your feeds to allow playing of video and audio through MPV. This is a nice touch, especially for those that want the suckless feel.
Capy Reader#
Capy is the app that I use on my Android phone, downloaded from F-Droid, it works out of the box with miniflux by pointing directly to your server. Not much to say here, it’s minimalist by design, allows you to read feeds internally or right in your phone’s browser, and just works.
Tailscale#
Setup a tailscale instance for your server, machines, and phone, and you can simply point to your miniflux server and access it wherever you may be. Nice.
Conclusion#
You are now an independent netizen which depends on no platforms or third parties to show you content. Everything is on you to decide what you want to consume, and everything is in chronological order, no filtering, no shadow banning.
Welcome to how the internet was supposed to be.
As always, God bless, and until next time.
If you enjoyed this post, consider Supporting my work, Checking out my book, Working with me, or sending me an Email to tell me what you think.