Introducing dbagg3, an Atom-powered client/server aggregator
Update: I've just dumped what code I have into my CVS repository. So, go ahead and poke fun at it:
Or, fetch it from CVS:
$ cvs -d:pserver:email@example.com:/cvsroot login (Logging in to firstname.lastname@example.org) CVS password: anoncvs $ cvs -d:pserver:email@example.com:/cvsroot co dbagg3
So, besides the funk, there's a little project in which I've gotten immersed. Here's a teaser diagram:
It's a feed aggregator, my third attempt at such. At present, things are roughly close to the diagram above. Everything is clunky and command-line driven at present--but I've got further plans, like a REST API for feed queries and manipulation of various things such as feed subscriptions and the read/unread state of items. Pair this with an XSLT-driven browser UI, and the possibility of other clients (not the least of include other Atom-consuming aggregators).
The goal is to make a Client/Server Aggregator. Somewhat serendipitously, I just caught Bob DuCharme's xml.com article on Amazon.com's web services, which I really like and have drawn inspiration from in thinking about this new aggregator. Eventually, I want to offer the same sort of XML+XSL style of service that they've put together, along with some futher inspiration from the Atom API.
Anyway, as another teaser, check out this early demo involving the XML this thing has been producing, coupled with some experimental XSL:
You'll notice that there are three URLs involved here:
The XSLT expects Atom (plus a few extensions of my own), so you can also do things like this:
These are the sorts of tricks I was looking forward to when I started thinking about things like a universal blog transfer format and rose-colored glasses. XSLT used like this could just as easily produce a blog or RSS 2.0 content.
Anyway, hoping to get some code into CVS by this weekend that's not entirely embarassing. So if you're interested in this stuff, stay tuned. I'm hoping that this thing can provide a base for others interested in feed aggregation--if you just want to play with UI, use the scanning and storage as-is and tinker with XSLT; if you want to play with storage and query, leave the scanning and UI alone; if you want to tinker with parsing... er, talk to Mark Pilgrim.
(Oh yeah, and I will be working on coming up with a better name than
dbagg3. Unfortunately, I probably won't be coming up with a more visually appealing design for the UI, since what you see is the best I can do. Heh, heh. Don't let your programmers do visual design...)