summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemsen2012-11-11 14:28:50 +0100
committerGravatar Tom Willemsen2012-11-11 14:28:50 +0100
commit22dbbfcb8fda13c16f5919edae5962c15a3419e7 (patch)
tree2340d2ecbfe687159d1b9b78c75a77019baf15f7
parentc8db0045510c9ad30ab46bea78ed7c85dbc95c52 (diff)
downloadsite-22dbbfcb8fda13c16f5919edae5962c15a3419e7.tar.gz
site-22dbbfcb8fda13c16f5919edae5962c15a3419e7.zip
Add "98% perfect RSS solution" post
-rw-r--r--posts/98_perfect_rss_solution.mdwn94
1 files changed, 94 insertions, 0 deletions
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]]