<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tail Recursive &#187; Yahoo Pipes</title>
	<atom:link href="http://www.tailrecursive.org/blog/category/technology/yahoo-pipes/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tailrecursive.org/blog</link>
	<description>The random mutterings of a propeller-head...</description>
	<lastBuildDate>Sat, 26 Jun 2010 21:32:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Fun with Mashups (Part 2)</title>
		<link>http://www.tailrecursive.org/blog/2007/11/08/fun-with-mashups-pt2/</link>
		<comments>http://www.tailrecursive.org/blog/2007/11/08/fun-with-mashups-pt2/#comments</comments>
		<pubDate>Fri, 09 Nov 2007 03:25:16 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Dashcode]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Yahoo Pipes]]></category>

		<guid isPermaLink="false">http://www.tailrecursive.org/blog/2007/11/08/fun-with-mashups-pt2/</guid>
		<description><![CDATA[Earlier, I wrote a quick sketch to show how you can use Yahoo! Pipes to build a new RSS feed summarizing recent activity on some favorite websites (in this case, web comics). That is all very well, but how do &#8230; <a href="http://www.tailrecursive.org/blog/2007/11/08/fun-with-mashups-pt2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Earlier, I wrote a <a href="/blog/2007/11/05/fun-with-mashups-pt1/">quick sketch</a> to show how you can use <a href="http://pipes.yahoo.com">Yahoo! Pipes</a> to build a new RSS feed summarizing recent activity on some favorite websites (in this case, web comics). That is all very well, but how do you actually use the darned thing now that you have got it? Sure, you can look at the list in the Pipes application, but that is not very convenient. Well, this post is about how you can use that pipe you have created.</p>
<p><span id="more-96"></span></p>
<p>If you go back to a pipe&#8217;s page, you will see bar with a number of buttons on it:</p>
<p style="text-align: center"><img src="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/consumingpipe.png" alt="Using a Pipe" /></p>
<p>You can see that there are several options listed here: you can subscribe to the pipe in a number of news reader services out on the web, including My Yahoo!, Google, Bloglines, Rojo, Netvibes, Newsgator, and AOL. If you were to click one of those add buttons, Pipes would send the information about the pipe to the matching service, which would set up an RSS subscription to the pipe. You would then be able read the updates from the pipe right in your regular news reader. For instance, I use Google to keep up on my RSS feeds. If I click the &#8220;Add to Google&#8221; button on the pipe, I am forwarded to Google and get a chance to add the pipe to either my Google Reader account or my homepage. If I choose to send the pipe to my homepage, then a new gadget appears on my homepage (see the picture below). The process works in much the same way on any of the other online news reader services.<a href="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/googlehomepage.png" title="Google Homepage"></a></p>
<p style="text-align: center"><a href="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/googlehomepage.png" title="Google Homepage"><img src="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/googlehomepage.png" alt="Google Homepage" /></a></p>
<p>What if you do not use one of the online news readers? What if you use a desktop RSS reader tool instead? Well in the &#8220;More Options,&#8221; you can use &#8220;Get as RSS&#8221; to get the raw RSS feed for the pipe and use that in your favorite news reader.</p>
<h2>For Mac Users</h2>
<p>If you are a Mac user, however, and have upgraded to Leopard, there is an additional way you can use a pipe that is easy to do: you can make your own dashboard widget. While you have been able to do this sort of thing before Leopard, it was a somewhat difficult operation to build your own widget, requiring hand-coding of the widget. With Leopard, though, there is a new tool called Dashcode which makes building widgets incredibly easy. When you start up Dashcode, it presents you with a list of pre-packaged templates you can use. There are several to choose from; but to start with, we will just pick the simple RSS template.</p>
<p style="text-align: center"><a href="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/dashcode_templates.png" title="Dashcode Templates"><img src="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/dashcode_templates.thumbnail.png" alt="Dashcode Templates" /></a></p>
<p>When you select the RSS template, a window will open with a generic RSS reader widget. There are a couple of things to notice in this window. First, on the right there is a view of the widget framework&#8230; with all the little UI elements you need to get started. You can update any of them right in the workspace area. On the left is an outline view of the various elements of the widget, including the front and back views of the widget (the back view is where the configuration options are set in most widgets). On the bottom-left is a convenient workflow to tell you what needs to happen to complete your widget.</p>
<p style="text-align: center"><a href="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/dashcode_blank.png" title="Blank Widget"><img src="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/dashcode_blank.thumbnail.png" alt="Blank Widget" /></a></p>
<p>To get started, double click on &#8220;My RSS Feed&#8221; and change the text to something more descriptive&#8230; maybe &#8220;Recent Comics.&#8221; Next, we need to set some attributes of the widget so it can actually work (like the URL to the RSS feed). Click on arrow next to &#8220;RSS Properties&#8221; in the &#8220;Provide RSS feed&#8221; workflow step. A window should open with a whole mess of property settings you can change.<a href="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/dashcode_attributes.png" title="Widget Attributes"></a></p>
<p style="text-align: center"><a href="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/dashcode_attributes.png" title="Widget Attributes"></a></p>
<p style="text-align: center"><a href="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/dashcode_attributes.png" title="Widget Attributes"><img src="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/dashcode_attributes.thumbnail.png" alt="Widget Attributes" /></a></p>
<p>There are a lot of things you can set here, but for our purposes there are really only two things we have to worry about: the Widget Identifier, and the Feed URL. The Widget Identifier must be a unique text string naming the widget to the system. If you know about these things from developing other Mac OS X software, put in whatever you like. If you do not know about this sort of thing, just replace the &#8220;Untitled&#8221; bit at the end with something like &#8220;RecentComics&#8221;. You should not reuse a widget identifier for a different widget! The next step is to set the Feed URL&#8230; just paste in the URL you get from Pipes when you select &#8220;Get as RSS.&#8221; If you like, you can now click the &#8220;Mark as Done&#8221; button in the &#8220;Provide RSS feed&#8221; workflow step. Ordinarily, at this point, you would go on to set other widget attributes, customize the image used for the widget and the widget icon, <em>etc</em>. For our purposes, however, this is good enough. Now try out the widget. In the upper left corner of Dashcode, you will see an icon marked &#8220;Run.&#8221; Click it. Soon, up will pop your brand-spanking new widget for you to try out. It should list the items that are in your pipe. Neat!<a href="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/dashcode_debug.png" title="Widget Debugging"></a></p>
<p style="text-align: center"><a href="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/dashcode_debug.png" title="Widget Debugging"><img src="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/dashcode_debug.thumbnail.png" alt="Widget Debugging" /></a></p>
<p>Now, if you want, you can go one extra step and add the widget to your dashboard. Save the project, and then look in the File menu for &#8220;Deploy Widget to Dashboard&#8230;&#8221; This menu item will bundle the widget into the correct file format to use in the dashboard and will then install it in your personal dashboard. You can then use it any time you like (if you decide you want to get rid of it, the widget will be in the &#8220;Widgets&#8221; folder in your personal &#8220;Library&#8221; folder&#8230; you can just drag the widget file to the trash). If you like, you can also take that widget file and share it with others (although the &#8220;Deploy&#8221; option might be better for that, since it will not hide the file in your library). Also, if you are going to share your widget with others, you might want to add your own icon to the project (the icon appears in the widget bar when you are selecting widgets to add to your dashboard) and maybe make your own spiffy background to give your widget some pizazz.</p>
<p>The process of building this widget has taken considerably longer to write about (and probably for you to read) than it takes to complete. I believe the second time I built a widget using Dashcode, it took me about five minutes. Think about that for a moment, to built a little application that goes out on the internet, pulls down up-to-date data from a variety of sources, and then formats it all into a nice, legible window took me <em>five</em> minutes! Not too shabby!</p>
<p>Of course, we are making heavy use of Dashcode&#8217;s built-in templates&#8230; anything beyond what the base templates can do would require custom coding (but Dashcode helps with that too). Also, Dashcode supplies a number of interesting templates for different common purposes. One of my favorites is the map template: it allows you to combine an RSS feed with Google maps within the dashboard. If you have an RSS feed with special geo tags added (basically, latitude and longitude coordinates), the widget will show the items on the map at the specified locations. You can the click on the map marker to view the contents of the item. Oh, and before you ask, Yahoo! Pipes has an operator that will go through a feed item, look for an address, and apply the appropriate geo tags (also, a number of services will export geo tags, if the location information is present in the source data).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tailrecursive.org/blog/2007/11/08/fun-with-mashups-pt2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fun with Mashups (Part 1)</title>
		<link>http://www.tailrecursive.org/blog/2007/11/05/fun-with-mashups-pt1/</link>
		<comments>http://www.tailrecursive.org/blog/2007/11/05/fun-with-mashups-pt1/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 06:57:38 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Yahoo Pipes]]></category>

		<guid isPermaLink="false">http://www.tailrecursive.org/blog/2007/11/05/fun-with-mashups-pt1/</guid>
		<description><![CDATA[I haven&#8217;t been blogging much about technology stuff, but lately I&#8217;ve been playing with some neat new technology that I think is worth writing about. There are a couple of pieces involved, so I&#8217;ll break this up over a couple &#8230; <a href="http://www.tailrecursive.org/blog/2007/11/05/fun-with-mashups-pt1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t been blogging much about technology stuff, but lately I&#8217;ve been playing with some neat new technology that I think is worth writing about. There are a couple of pieces involved, so I&#8217;ll break this up over a couple of posts, but they all center around <a href="http://en.wikipedia.org/wiki/Mashup_%28web_application_hybrid%29">mashups</a>, the blending of multiple data sources or services on the internet to make a new tool. There are a variety of new tools out there to make this sort of thing really easy to do. First up is <a href="http://pipes.yahoo.com">Yahoo! Pipes</a>.</p>
<p><span id="more-91"></span></p>
<p>Yahoo! Pipes (freely available, but you&#8217;ll have to have a Yahoo! account to use it) is a visual tool and is based on a &#8220;data flow&#8221; model, where you draw out diagrams showing how the data flows from a source, through operations that change it and finally out to its destination. You start off with a main workspace in which you can draw out your pipe. To the left of the workspace is a menu of different building blocks: these can be &#8220;sources&#8221; for the data (ways to pull data off of various websites or files), &#8220;operators&#8221; to transform the data in some way, some blocks for user inputs so you can let users of your pipe configure it, and then some special purpose building blocks to handle specific data types (numbers, dates, <em>etc</em>.). You create a pipe by dragging a source block (you can have more than one) onto your workspace, configuring it, and then drawing a line from the block to a special &#8220;Pipe Output&#8221; block at the bottom of the workspace. If you need to transform the data in some way, you would insert the correct operator blocks in between.</p>
<h2>A Simple Pipe</h2>
<p>I&#8217;ll make this more concrete with a specific example. I love web comics and read my favorites every day. I would love to be able to have a single list of all the most recent updates to my favorite web comics so I can see at a glance when there is something new to read. Fortunately, many of the web comics I read are pretty savvy and have <a href="http://en.wikipedia.org/wiki/Rss">RSS</a> feeds. Wouldn&#8217;t it be convenient if I could mash all those RSS feeds together and have just one to look at? This is easy to do in Pipes. Here are the step-by-step instructions (assuming you&#8217;ve got a Yahoo! account and have gone to the <a href="http://pipes.yahoo.com">Pipes</a> page):</p>
<ol>
<li>Click &#8220;Create Pipe.&#8221;</li>
<li>When the workspace opens up, click the &#8220;Sources&#8221; label in the left channel menu and drag &#8220;Fetch Feed&#8221; to the workspace. You should get a small rectangular block in the workspace. You&#8217;ll see a plus sign labeled &#8220;URL,&#8221; and a text box with a minus sign. There is also a funny little bloop at the bottom of the block, which is a connection point. The &#8220;Fetch Feed&#8221; block takes the RSS data it finds at the URL you provide and makes it available to the pipe on the connection point on the bottom of the block. You can give &#8220;Fetch Feed&#8221; more than one URL, in which case it mixes the data all up in a bucket and makes <strong>all</strong> the results available on that connection point.</li>
<li>Paste the URL for the first RSS feed you want to use in the text box.</li>
<li>Click the plus sign, and a new text box should appear.</li>
<li>Paste the URL for the next RSS feed in the new (empty) text box.</li>
<li>Repeat #4 and #5 for as many feeds as you like.</li>
<li>Drag a line from the connection point on the bottom of the &#8220;Fetch Feed&#8221; block to the connection point on the top of the &#8220;Pipe Output&#8221; block at the bottom of the workspace (the &#8220;Pipe Output&#8221; block is a special block that indicates what the results of the pipe will be). You should see a curvy connection form between the two&#8230; this means that the output of the &#8220;Fetch Feed&#8221; block will now go to the output of the entire pipe. You should also see some activity happen and a list of items (the results of running the pipe) should appear in a text area below the grid of the workspace. The results should look like the picture below (although you don&#8217;t need to use the RSS URLs I did).</li>
<li>If everything looks right, go ahead and save your pipe. You can then look at it in the &#8220;My Pipes&#8221; page and see what it looks like when you run it for real. Also, from the pipe&#8217;s page in &#8220;My Pipes,&#8221; you can subscribe to the pipe data in a variety of RSS readers, or get the RSS URL to use in some other reader of your choice.</li>
</ol>
<p align="center"><a href="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/basiccomics.png" title="Basic Comics Pipe"><img src="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/basiccomics.thumbnail.png" alt="Basic Comics Pipe" /></a></p>
<h2>A Filtered Pipe</h2>
<p>This is great and everything, but it shows <em>every</em> comic in all the feeds&#8230; in some cases even ones that are pretty old. Wouldn&#8217;t it be nice if we could filter things a bit and just show the most recent items&#8230; say, only those posted within the past seven days? Well, we can quite easily by using an operator:</p>
<ol>
<li>Click the connection point on the top of the &#8220;Pipe Output&#8221; block.</li>
<li>Click the scissors icon that appears on the connection to break the connection between the &#8220;Fetch Feed&#8221; block and the pipe output.</li>
<li>Click the &#8220;Operators&#8221; label in the menu.</li>
<li>Drag &#8220;Filter&#8221; to the workspace a little bit below your &#8220;Fetch Feed&#8221; block. A new block labeled &#8220;Filter&#8221; will appear with a lot of options. Operators are blocks that take feed data as input, make some change, and send the results out for further processing. In this case, the &#8220;Filter&#8221; operator takes in feed data (on its top connection point) and throws away items that match certain criteria you specify. What&#8217;s left over is made available for the next stage on the bottom connection point.</li>
<li>Drag a connection from the bottom of the &#8220;Fetch Feed&#8221; block to the top of the &#8220;Filter&#8221; block.</li>
<li>Set the options on the Filter block so you &#8220;<strong>Block</strong> items that  match <strong>all</strong> of the following rules.&#8221;</li>
<li>Select &#8220;item.pubDate&#8221; in the first drop-down box of the rule (this is the property of the feed item we&#8217;re going to check&#8230; in this case, the date the item was published).</li>
<li>Select &#8220;is before&#8221; as the test to make.</li>
<li>Type &#8220;1 week ago&#8221; into the text box. (The &#8220;Filter&#8221; block will now look at each item in the source RSS feeds, and throw out any item which has a publication date (pubDate) that is older than seven days ago). Isn&#8217;t it nice that the &#8220;Filter&#8221; block understands relative date phrases (like &#8220;1 week ago&#8221;)?</li>
<li>Drag a connection from the bottom of the &#8220;Filter&#8221; block to the top of the &#8220;Pipe Output&#8221; block.</li>
<li>You should be able to refresh the test data at the bottom of the screen and save the updated feed. It should look like the picture below. You should see that the number of items in the results is lower than before&#8230; at the very least, nothing in the results should be more than a week old.</li>
</ol>
<p align="center"><a href="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/filteredcomics.png" title="Recent Comics"><img src="http://www.tailrecursive.org/blog/wp-content/uploads/2007/11/filteredcomics.thumbnail.png" alt="Recent Comics" /></a></p>
<p>If you&#8217;d like, you can see my version of this pipe on my Yahoo! Pipes page. It&#8217;s called &#8220;<a href="http://pipes.yahoo.com/pipes/pipe.info?_id=Eh4O4pmK3BGgejKmiXrL0A">Favorite Comics</a>.&#8221;</p>
<p>There&#8217;s a great deal more to Yahoo! Pipes than what I&#8217;ve written here; this is just a very basic example. If you&#8217;re interested, you can explore and get a feel for the possibilities. But, look at what we&#8217;ve done. In the span of just a few minutes, we&#8217;ve created a new RSS feed that brings together a variety of our favorite RSS feeds and filters out items we don&#8217;t want (those that are too old). In other words, we have pulled together data from a variety of sources, tailored it to our specific desires, and then bundled it up so we can use it. We&#8217;ve just scratched the surface however.</p>
<p><strong>Next time:</strong> so, now that you have a feed of your own, how can you use it?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tailrecursive.org/blog/2007/11/05/fun-with-mashups-pt1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
