The above information is as nearly completely live as I can make it without
causing obscene annoyance to both my home computer nor the web server; the results are cached for up to five minutes,
which is hardly a long wait if you're dying to get fresh song suggestions. Right.
I run SoundPlay,
the world's most awesome audio player, at home, on my BeOS machine. I one day
conceived of the idea of having a live list of my most recent audio picks, and started
working with SoundPlay's plugin architecture to develop a solution to not only catalog
songs as they were played, but also to encapusulate a little web server and deliver
these results by XML. I even went so far as to dream up an extensive integration with
my custom database, Paradigm, that would allow for cross-referencing and counting facilities.
Yeah right.
This is the second evolution of what was originally a total hack connection
of numerous tools and tricks to make this playlist available.
When you load this page, the script on the webserver here goes to ask the webserver on my
workstation at home (RobinHood)
for all the information you see above. This information is provided by a tiny application,
eavesdropper.client, whose only job is to ask eavesdropper.server for what's hip.
eavesdropper.server is actually much larger, has some pretense of modular design, and
does some bookeeping to keep the answers coming once applications like SoundPlay have been quit.
But eavesdropper.server will always attempt to ask for the most recent data, and so
it then turns around and nags other programs, such as the oft-mentioned audio player app.
This call is answered by my custom plugin,
PlayLog, which does the dirty
work of tracking the most recent songs and providing their attributes (artist, title, album)
to eavesdropper.server.
Back on the webserver's end, all of this is fairly transparent; it
simply requests information from my server at home, just as if it were yet another bored
websurfer like yourself, and gets back a page full of tailored XML, the gorgeous fruits
of the labors of the above three programs. It then takes this information, and using
the miniXML library for PHP, converts this back into structured data, like arrays and
index variables and whatnot. This is essentially what gets displayed here, disregarding
both the caching mechanisms to make certain this server isn't constantly annoying my home
server with requests for 20-second-newer information, and the framework requirements of
my home-spun templating system to present my blog in "books" (differentiating the "regression analysis"
theme from the "blog bebop" theme).