All Consuming Web Services
by Erik Benson
|
Pages: 1, 2
Currently Reading Javascript Includes
Since All Consuming has tools to help people create lists of books, it makes sense to give back a little to the weblogs that I've taken information from. Any user of the site can include in their own weblog a Javascript snippet which will display the cover, title, author, and comments about books they're currently reading; they can even modify it (using CSS) to fit the display of their site:
<style type="text/css">
<!--
.ac_image {}
.ac_link {}
.ac_image_tag {}
.ac_title {}
.ac_comment {}
.ac_logo {}
-->
</style>
<script
language="javascript"
type="text/javascript"
src="http://allconsuming.net/xml/users/currently_reading.erik.js">
</script>
The result looks something like this:
SOAP and XML
Working with web services is addictive. You use them to gather data; but, after aggregating it and analyzing it and shaping the data into a couple new forms, it only makes sense to allow people to get that data from you. It's like an animal: the data goes in one end, it gets digested and filtered, and the data comes out the other end. The only difference is that the data on the tail end is more highly organized, more valuable, and just generally more nutritious than the data that originally went into the beast.
For the more technically savvy, All Consuming has a SOAP interface that can be used to retrieve the hourly and weekly lists, user reading lists, and several other types of information.
Here's an example of how to use the SOAP interface to All Consuming:
use SOAP::Lite +autodispatch => uri => 'http://www.allconsuming.net/AllConsumingAPI', proxy => 'http://www.allconsuming.net/soap.cgi'; my ($hour,$day,$month,$year) = qw(12 3 15 2003); my $AllConsumingObject = AllConsumingAPI->new($hour,$day,$month,$year); my $data = $AllConsumingObject->GetHourlyList;
The public methods available for use include: GetHourlyList,
GetWeeklyList, GetArchiveList, GetCurrentlyReadingList,
GetFavoriteBooksList, GetCompletedBooksList, GetPurchasedBooksList,
GetRereadingBooksList, GetNeverFinishedBooksList, GetFriends, and
GetRecommendations. At the moment, most of these methods only
require that you pass in a URL or user name, but more detailed
instructions on how to call these methods is supplied here and code samples
are given here.
For those who prefer XML, there are also several directories full of interesting slices of data, available here, for whoever wants to play with it.
The way I've been developing the SOAP and XML interfaces has been organic and iterative. Rather than implement every possible method I can think pf, I implement a bit, see how people use it that little bit, and then fill out it out with their suggestions and recommendations. I will continue to fill out the feature-set of the SOAP and XML interfaces as long as people are interested in using it, so if you don't see something that you think I have that you could use, let me know and I'll try to make it for you. Some interesting applications that people have built on top of All Consuming's web services include DJ Adams booktalk script (explanation here) and Kellan Elliott-McCrea's custom script for displaying his currently reading bucket on his weblog.
The Network of Friends and Recommendations
The original motivation for All Consuming was not actually limited to creating interesting book lists. It was also intended to explore the possibilities of friend networks, trust networks, and reputation systems, and this is where I see the site developing in the future. Aggregation tools like Blogdex, Daypop, and Technorati are extremely interesting in and of themselves, providing views into the world that we have not been able to really see before. But I believe that as the sphere of the web continues to expand and it becomes increasingly easier and easier to see what the entire world is reading, linking to, and discussing, there will be a desire to personalize that experience a bit and see what the people you know and trust are reading, linking to, and discussing.
But how to define that? Start with small steps, of course. At All Consuming, like many other places, you can create a list of friends that you'd like to keep an eye on. You don't have to create it from scratch either. Given that we know your weblog, we can ask Google for similar sites to your own, Blo.gs for sites that you've marked as friends, and even see who on All Consuming is reading the same books as you. All Consuming presents all these suggestions to you, and you can select the weblogs from that list that you like or enter weblogs that are not in the list. Either way, the end result is a list of friends.
With that list, you can subscribe to an email so that whenever All Consuming sees that one of your friends is reading something new (either because the automatic script picked it up or they manually entered it into the site) you will know about it right away. Also, at any point you can get a list of book recommendations that display the books that all of your friends are reading. Those books that have been mentioned recently or by more than one of your friends will be at the top of the list. Today my recommendations look like this:

In the coming months, I'd like to take this a couple steps further. I'd like to be able to take a look at the set of all books that my friends, and my friends' friends, and my friends' friends' friends are reading, sorted so that the books that are being read and talked about the most are at the top. I can see this as being a practical implementation of the work that's already been done with FOAF, since one of my major problems with FOAF is that it leaves too much interpretation as to what a friend is. If I'm making a list of people whom I'd like to have recommend books to me, though, and it existed in a network of people who displayed similar connections between people, that would actually be useful and meaningful.
With web services that understand relationships between sites and that are able to glean book information from them, this ultimately becomes just a question of the server's computational power (with my current setup, it would be prohibitively expensive for me to scan three generations out for every user at All Consuming). However, I'm confident that I'll be able to find a way to scale this, whether it's a feature that only paying members can access or something else, because the data would just be so interesting. Once we find one good application of passing information back and forth through web services on a friends network, I believe that web services like XML and SOAP will open up into an even broader landscape of innovations that they're currently in.
Conclusions
The data is out there, stored digitally on weblogs and other sites all over the Internet, just waiting to be looked at. The data is accessible via standard HTML markup and web services like SOAP and XML, making it easily processed and interpreted by simple machines and scripts that anyone can write. Finally, the data is interesting: it gives us a glimpse of the patterns and trends that emerge out of the collective activity of the entire group, bypassing the traditional necessity of trusting a few voices to represent the many. It is truly a model for distributed idea generation and interpretation which is only beginning to be tapped. All Consuming is a tiny filter on top of this vast collection of group activity, aimed solely at finding connections between weblogs and books, but I look forward to the day when hundreds of other views of the data are available to consume and build upon.
Share your comments or questions on this article in our forum.
(* You must be a member of XML.com to use this feature.)
Comment on this Article
| Titles Only | Titles Only | Newest First |
- MovableType plugin
2003-05-28 07:03:43 Dave Seidel [Reply]
There is a MovableType plugin for for All Consuming available: http://mt-plugins.org/archives/entry/allconsuming.php
The current version (1.0) retrieves the XML version a user's "favorite books" or "currently reading" list. The next version of the plugin will very likely use All Consuming's SOAP interface in order to provide a lot more data.
