So, having complained about console feed readers, I’ve decided to put up or shut up. Or put my
money where my mouth is. A few months before I wrote the last article, I’d started playing a little bit with ruby-feedparser. Then I promptly forgot about it, as other more pressing matters came up.
However, now I’m dealing with one of the readers I mentioned deciding to die partway through startup, and having marked all my feeds invalid or unread. I noticed it Saturday morning, when I went to check some news before heading out to look at houses, when the window that I keep the reader in was sitting at a prompt with an error on the screen. So I re-ran the command, and within a minute, it had crashed again. As near as I can guess, either some bad data came through on a feed, or its constantly-growing cache got corrupted. Either way, even with logging set to
DEBUG and the “diagnostic” flag specified, there’s no indication at all what is causing the problem.
So, instead of fighting with it, I’m writing my own feed reader. I’ve dusted off the really simplistic “playing around” code, and have been working on turning it into a full-featured (or at least itch-scratching) RSS and ATOM feed reader. It’s nowhere near usable yet, but I’m currently able to pull down, parse, and save feeds, as well as check intelligently for updates (thanks, in part, to “Towards polite HTTP retrieval in Scala“, which gave me the idea to let the remote webservers tell me whether a feed’s changed, in order to reduce load on everyone).
Instead of raw on-disk storage, or fairly opaque language-specific storage formats, I’ve been playing with using SQLite for storage. It seems fairly lightweight (especially in comparison to MySQL or Postgres) while still providing a nice familiar SQL engine, gives me a decent command-line tool to inspect and modify data, is fairly portable, and I was able to get up and running with sqlite-ruby in practically no time at all.
I’m currently working on a functional (read: ugly, but it works for my purposes) interface in ncurses, threads to deal with fetching & updating in the background, category and configuration management, etc. As I work on it off-and-on as I grab a few spare minutes, I’m not sure on the ETA right now, but hopefully something that I’m willing to let others see will be available “soon”.