diff --git a/posts/98_perfect_rss_solution.mdwn b/posts/98_perfect_rss_solution.mdwn new file mode 100644 index 0000000..250fc35 --- /dev/null +++ b/posts/98_perfect_rss_solution.mdwn @@ -0,0 +1,94 @@ +I've been looking for the "perfect" RSS reading solution for a while +and I just got this idea for a setup that has to be about 98% of all +I'm looking for. + +The things I'm looking for are: + +* Emacs interface. This isn't that big a problem since anything with + an API can be made to have such an interface, and I feel comfortable + enough with Emacs Lisp to write it myself if I have to, like I was + doing with + [avandu](http://code.ryuslash.org/cgit.cgi/emacs/avandu/), but then + it *does* need a(n/ good) API. +* Unbound to a single computer. It's a hassle to have to remember + what you have and haven't read. If it was easy your RSS reader + wouldn't care about (un)read items, everything would just be + "items". So sharing that state between computers is pretty + important. +* A server. Something that keeps running 24/7. Or at least the + closest possible approximation of that. It's no good to miss + everything that happens between 11pm and 9am just because you don't + have your feed reader running. Of course this is only a problem if + you're following some high-traffic feeds, but they exist too. +* Runs locally. The nice thing about having shell access to a server + somewhere that someone else keeps online for you is the possibility + to run something like [newsbeuter](http://newsbeuter.org/) and just + (de/reat)tach from whichever computer you're working on. The + downside is, though, that this breaks pretty much all integration + with your desktop. Opening URLs becomes a reliance on your terminal + emulator's ability to parse and open them. Viewing media such as + images, or audio files from a podcast, turns into `Save, Transfer, + Open` instead of just the `Open`. +* Handles big feed lists. Even if you only read five feeds, the day + may come you'll be reading fifty, or even much more. A piece of + software that handles this well is a must. This is the problem I + had with [canto](http://codezen.org/canto/) and Emacs' + [newsticker](http://www.emacswiki.org/emacs/NewsTicker). *canto* + looked awesome, the most interesting interface to RSS feeds I have + come across so far, but back when I tried it trying to read my + collection of feeds would lock-up my computer. *newsticker* would + lock-up my emacs session for 10-20 minutes. + +Now though I have found something that does it all. It is actually a +twist on something I used some time ago. + +*Emacs* + [Gnus](http://gnus.org/) + [Gwene](http://gwene.org/) + +[unison](http://www.cis.upenn.edu/~bcpierce/unison/). Not the easiest +thing to set-up perhaps, but once *Emacs* ++ *Gnus* is in place the rest is a piece of cake. + +*Gwene* is an awesome service that turns RSS feeds into newsgroups. +*unison* is an awesome piece of software for synchronising files +between different computers. *Gnus* is a real newsreader. *Emacs* is +what *Gnus* runs on. + +So it's kind-of like cheating. *Gnus* is not unbound to a single +computer and *Gwene* doesn't offer server-side state tracking either. +But because *Gnus* uses a single file to store state about all of its +subscribed groups, this makes it a good candidate for sharing that one +file. This is not something unique to *Gnus*, at least +[slrn](http://www.slrn.org/) uses the same kind of file, the `.newsrc` +file (or in *Gnus*' case `.newsrc.eld`). + +So I register the feeds I want to follow with *Gwene*, if they aren't +already registered. I subscribe to the resulting newsgroups on +`news.gwene.org` with *Gnus* and when I switch over to another +computer I use *unison* to synchronise the `.newsrc.eld` file. + +An example configuration of *Gnus* could just be as simple as: + +[[!format el """ +(setq gnus-select-method '(nntp "news.gwene.org")) +"""]] + +*unison* just needs: + + root=/your/home/dir/ + root=/your/server/root/ + path=.newsrc.eld + +And that's about it. + +Now it's still not 100% perfect. I've seen that *Gwene* can't handle +100% of the feeds I throw at it, but these can be fixed either by +contacting the people publishing them or by improving *Gwene*'s +parser. It also doesn't automatically check periodicaly, though I +think *Gnus* can be set-up to do that, but since I also use it to read +my mail (again) that's not really an issue. It also isn't accessible +without *Emacs*, *Gnus* and *Unison*, but I hate web-interfaces +anyway. + +So that's it. My 98% perfect RSS reading solution. + +[[!meta title="The 98% perfect RSS solution"]] +[[!tag rss emacs gnus gwene tt-rss avandu]]