Don't Forget to Plant It!

Lifestreaming Using Yahoo! Pipes

Some of you might have noticed that I recently added a What I’m up to feature on my blog. While I’m not normally a frequent blogger (I actually consider that a feature of this blog), I am pretty active elsewhere on the internet. So I thought it would be cool to create an aggregated feed of my online activities, commonly referred to as a Lifestream. This seemed like the perfect job for Yahoo! Pipes and apparently I’m not alone in that thought.

In case you’ve been in a non-WIFI enabled cave the last few months, here’s Yahoo!’s description of what Pipes does:

Pipes is a powerful composition tool to aggregate, manipulate, and mashup content from around the web.

Essentially, Pipes is an ETL tool for web data, with resulting output being an RSS feed, JSON data, or web widget.

Being that I’m already using Web version 2.0, most of my activity on the internet culminates into some sort of RSS feed. Off the top of my head, I chose to compose my lifestream from my twitter and delicious accounts, as well as a couple of forums that I monitor (shameless plug – Boardista is a forums website I’m currently working on).

So here’s how I created my Lifestream feed. Here’s my Pipes page if you want to follow along. Initially, I had everything in one large Pipe, but quickly decided to break them up to make things more maintainable. One really cool thing about Pipes is that it allows you to break up large Pipes into smaller, interconnected ones, making things easier to manage.

First, I fetched my twitter, delicious, and forum feeds using the Fetch Feed module. I do this in the LifeStream: Twitter/Delicious/Forums Pipes. I separated them out because each type of feed had some characteristics that I wanted to transform from so that when I merged them individual items had some level of consistency with each other. I also wanted to modify the author of each item so that I could later render an icon to identify the source of the item.

Second, I merged the individual feeds into one large one (Pipe Lifestream: Merge Sources):

Then, I sorted the feeds, chopped the feed to only show the last 5 items, and truncated the description to 150 characters if necessary (Pipe LifeStream).

Finally, I needed a way to show this on my blog. I really liked how Andy Bennett showed his latest twitter on his blog, so I wanted to have something like that. Doing some research online, I was able to find the KB Advanced RSS Widget which did mostly what I wanted, all I had to do is tweak it to show the correct icon based on the author I set in the first step.

So after few hours of work, I had a pretty cool Lifestream feed. Overtime, I expect to add more feeds to make my lifestream more complete (I would love to add my coComment feed, if I can only get my actual comment in the feed).

I’ve also learned quite a bit about Yahoo! Pipes:

  • It’s pretty amazing what you can accomplish with such a finite set of functionality.
  • I’m skeptical that your average internet users is going to be able to build truly useful Pipe without help. I was often frustrated by how Pipes wouldn’t let me connect some modules, and by how some controls were enabled/disabled by some seemingly illogical condition.
  • Being able to interconnect Pipes can potentially create some amazing results. It would be even cooler if I can plug in other people’s Pipes.
  • There’s a Web Service functionality available that allow developers to provide some custom transformations for Pipes, which gives Pipes virtually unlimited capabilities. It also means that you can potentially use Pipes to push data to your application.