<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>The Napkin ~ A Blog By Highgroove Studios</title>
    <link>http://cleanair.highgroove.com/</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>The Napkin ~ A Blog By Highgroove Studios</description>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/cleanair" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>Atlanta Startup Weekend Nov 13-15</title>
      <description>&lt;p&gt;Alanta&amp;#8217;s (3rd?) &lt;a href="http://atlanta.startupweekend.org/"&gt;Startup Weekend&lt;/a&gt; is on Nov 13 &amp;#8211; Nov 15 at &lt;a href="http://www.atdc.org/"&gt;ATDC&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;re big fans of Startup Weekend for a couple of reasons:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;the constraints&lt;/strong&gt;&amp;#8212;successful businesses are built on limited resources. A single weekend to come up with ideas, plan, execute, and launch a business is a daunting and fantastic lesson for anyone interested in starting a business. &lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;the people&lt;/strong&gt;&amp;#8212;what happens when you get 15 crazy developers, 20 biz-dev folk, sprinkle in some opinionated graphic designers and some marketing know-it-alls?  Sheer madness, of course!  I don&amp;#8217;t think you could build a better simulation for working with a diverse team towards a common goal.&lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;the camaraderie&lt;/strong&gt;&amp;#8212;the business(es) coming out of Startup Weekend may not ever become the next Google (or &lt;a href="http://skribit.com/about"&gt;Skribit&lt;/a&gt;), but the ideas and lessons learned by all are sure to make &lt;a href="http://en.wikipedia.org/wiki/A_rising_tide_lifts_all_boats"&gt;the tide rise&lt;/a&gt; here in Atlanta!&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;A very big thank you to our friends at &lt;a href="http://www.kauffman.org/"&gt;The Kauffman Foundation&lt;/a&gt;, &lt;a href="http://www.atdc.org/"&gt;ATDC&lt;/a&gt; (and all the other sponsors) for their support of this Atlanta event.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=NZf7qysbKEw:lEFwK_dOEVA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=NZf7qysbKEw:lEFwK_dOEVA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cleanair/~4/NZf7qysbKEw" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 23 Oct 2009 09:57:00 EST</pubDate>
      <guid isPermaLink="false">http://cleanair.highgroove.com/articles/2009/10/23/atlanta-startup-weekend-nov-13-15</guid>
      <link>http://feedproxy.google.com/~r/cleanair/~3/NZf7qysbKEw/atlanta-startup-weekend-nov-13-15</link>
      <trackback:ping>http://cleanair.highgroove.com/articles/trackback/142</trackback:ping>
    <feedburner:origLink>http://cleanair.highgroove.com/articles/2009/10/23/atlanta-startup-weekend-nov-13-15</feedburner:origLink></item>
    <item>
      <title>Part II: We Just Undid Three Months of Dev work. Here's What We Learned.</title>
      <description>&lt;p&gt;&lt;img src="http://blog.scoutapp.com/images/scout_logo.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;We published &lt;a href="http://blog.scoutapp.com/articles/2009/10/20/part-ii-we-just-undid-three-months-of-dev-work-heres-what-we-learned"&gt;Part 2 of our lessons learned&lt;/a&gt; from undoing 3 months worth of development work on &lt;a href="http://scoutapp.com/"&gt;Scout&lt;/a&gt;, our server monitoring service.&lt;/p&gt;


	&lt;p&gt;As developers, we love technically beautiful solutions.  But sometimes the &lt;strong&gt;best features&lt;/strong&gt; are the ones that get the job done&amp;#8212;and prove themselves by providing real business value.&lt;/p&gt;


	&lt;p&gt;We hope you enjoy us sharing these lessons, if so: &lt;a href="http://news.ycombinator.com/item?id=892986"&gt;up-vote us on Hacker News&lt;/a&gt; and be sure to subscribe to the &lt;a href="http://feeds.feedburner.com/scoutapp"&gt;Scout &lt;span class="caps"&gt;RSS &lt;/span&gt;Feed&lt;/a&gt; or &lt;a href="http://twitter.com/scoutapp"&gt;Follow Us on Twitter&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=cGb0wbwli0k:UVHqeeGkTM4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=cGb0wbwli0k:UVHqeeGkTM4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cleanair/~4/cGb0wbwli0k" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 20 Oct 2009 19:38:00 EST</pubDate>
      <guid isPermaLink="false">http://cleanair.highgroove.com/articles/2009/10/20/part-ii-we-just-undid-three-months-of-dev-work-heres-what-we-learned</guid>
      <link>http://feedproxy.google.com/~r/cleanair/~3/cGb0wbwli0k/part-ii-we-just-undid-three-months-of-dev-work-heres-what-we-learned</link>
      <category>Scout</category>
      <trackback:ping>http://cleanair.highgroove.com/articles/trackback/141</trackback:ping>
    <feedburner:origLink>http://cleanair.highgroove.com/articles/2009/10/20/part-ii-we-just-undid-three-months-of-dev-work-heres-what-we-learned</feedburner:origLink></item>
    <item>
      <title>We Just Undid Three Months of Dev work. Here's What We Learned.</title>
      <description>&lt;p&gt;&lt;img src="http://blog.scoutapp.com/images/scout_logo.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://scoutapp.com"&gt;Scout, our server monitoring service&lt;/a&gt;, has grown quite a bit in 2009.&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;ve documented 2 big lessons we&amp;#8217;ve learned &lt;a href="http://blog.scoutapp.com/articles/2009/10/06/we-just-undid-three-months-of-dev-work-heres-what-we-learned"&gt;on the Scout Blog&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;If you find it helpful, &lt;a href="http://news.ycombinator.com/item?id=867286"&gt;give us a vote on Hacker News&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=mHy0IYiqxSU:Ro7QzxnWWZc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=mHy0IYiqxSU:Ro7QzxnWWZc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cleanair/~4/mHy0IYiqxSU" height="1" width="1"/&gt;</description>
      <pubDate>Wed,  7 Oct 2009 13:22:00 EST</pubDate>
      <guid isPermaLink="false">http://cleanair.highgroove.com/articles/2009/10/07/we-just-undid-three-months-of-dev-work-heres-what-we-learned</guid>
      <link>http://feedproxy.google.com/~r/cleanair/~3/mHy0IYiqxSU/we-just-undid-three-months-of-dev-work-heres-what-we-learned</link>
      <trackback:ping>http://cleanair.highgroove.com/articles/trackback/140</trackback:ping>
    <feedburner:origLink>http://cleanair.highgroove.com/articles/2009/10/07/we-just-undid-three-months-of-dev-work-heres-what-we-learned</feedburner:origLink></item>
    <item>
      <title>Teaching Ruby on Rails</title>
      <description>&lt;p&gt;At last month&amp;#8217;s &lt;a href="http://www.atlrug.org/"&gt;Atlanta Ruby User Group&lt;/a&gt; (&lt;a href="http://www.meetup.com/atlantaruby/"&gt;Meetp&lt;/a&gt;), I gave a presentation on &amp;#8220;Teaching Ruby on Rails.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve taught Ruby on Rails for the Big Nerd Ranch for almost 4 years now, and given on-site trainings all over the world, from Wells Fargo to the New York Times, to startups and even government agencies.  I&amp;#8217;ve also done this talk before at the first &lt;a href="http://www.actsasconference.com/"&gt;Acts As Conference&lt;/a&gt; (Ruby on Rails local conference in Orlando, Florida), but I have refined it a bit based on more experience teaching Rails at various organizations.&lt;/p&gt;


	&lt;p&gt;Being an effective teacher, and thus, Teaching Rails (and for that matter, any real technical programming language and framework) boils down to 4 main points:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Define Your Purpose&lt;/li&gt;
		&lt;li&gt;Know Your Audience&lt;/li&gt;
		&lt;li&gt;Give Relevant Examples&lt;/li&gt;
		&lt;li&gt;Teach How to Learn&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;We&amp;#8217;re hoping to get video of the presentation up soon, but if you just want access to the slides with notes, I&amp;#8217;ve provided them in the footnotes.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://napkin.highgroove.com/articles/2008/02/11/lessons-from-the-trenches-at-acts-as-conference"&gt;Lessons from the Trenches at Acts As Conference&lt;/a&gt; Highgroove Article on Acts As Conference Talk&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://highgroove.com/assets/Teaching%20the%20Rails%20Presentation%20with%20Notes.pdf"&gt;Teaching the Rails&lt;/a&gt; Slides and Notes from Atlanta Ruby User Group Talk&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=SPPFpeCfkPI:h5oSXnqiWQk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=SPPFpeCfkPI:h5oSXnqiWQk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cleanair/~4/SPPFpeCfkPI" height="1" width="1"/&gt;</description>
      <pubDate>Sat, 22 Aug 2009 17:27:00 EST</pubDate>
      <guid isPermaLink="false">http://cleanair.highgroove.com/articles/2009/08/22/teaching-ruby-on-rails</guid>
      <link>http://feedproxy.google.com/~r/cleanair/~3/SPPFpeCfkPI/teaching-ruby-on-rails</link>
      <trackback:ping>http://cleanair.highgroove.com/articles/trackback/139</trackback:ping>
    <feedburner:origLink>http://cleanair.highgroove.com/articles/2009/08/22/teaching-ruby-on-rails</feedburner:origLink></item>
    <item>
      <title>Apache Page Caching and Multiview</title>
      <description>&lt;p&gt;I just wanted to post a quick note to anyone searching for problems with Rails Page Caching with Apache.&lt;/p&gt;


	&lt;p&gt;We just helped a client through a tricky issue that manifested itself through some strangely generated cached files.&lt;/p&gt;


	&lt;h2&gt;The Problem&lt;/h2&gt;


	&lt;p&gt;A visit to the resource:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
http://example.com/articles
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Would correctly generate the page:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
/path/to/app/public/articles.html
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Subsequent visits would load the cached page.&lt;/p&gt;
&lt;p&gt;However, if you then tried to visit a page like:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
http://example.com/articles/2
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Where a route used that for pagination, or simply any action off that resource, you apache would try and request a file like:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
/path/to/app/public/articles.html/2.html
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;This is problematic, and does not work.&lt;/p&gt;


	&lt;p&gt;If, however, you removed the cached file and instead created the directory first, like so:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
/path/to/app/public/articles/
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;When you requested the resource:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
http://example.com/articles
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;it would correctly generate an index file:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
/path/to/app/public/articles/index.html
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;And then correctly generate any cached pages inside the directory like 2.html, 3.html for pagination (if setup in rails routes correctly).&lt;/p&gt;


	&lt;h2&gt;The Solution&lt;/h2&gt;


	&lt;p&gt;The problem was that Apache has the MultiViews option turned on.&lt;/p&gt;


	&lt;p&gt;We changed the server configuration file from this:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
&amp;lt;Location /&amp;gt;
Options All FollowSymLinks MultiViews -Indexes
&amp;lt;/Location&amp;gt;
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;to this:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
&amp;lt;Location /&amp;gt;
Options All FollowSymLinks -Indexes
&amp;lt;/Location&amp;gt;
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;When you remove this option from the configuration, you get the correct caching behavior, which is that requests to:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
http://example.com/articles
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Still generate the cached file:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
/path/to/app/public/articles/index.html
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;But now, requests to the slash-ending url and resources off that route:&lt;/p&gt;


&lt;pre&gt;
&lt;code&gt;
http://example.com/articles/
http://example.com/articles/2
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;Now correctly generate a folder with an index.html and 2.html, which caches just fine.&lt;/p&gt;


	&lt;p&gt;I hope this helps someone else out!&lt;/p&gt;


	&lt;h2&gt;References&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://discuss.joyent.com/viewtopic.php?id=24960"&gt;Passenger aka mod_rails delivering cached content for edit-route&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.gerd-riesselmann.net/archives/2005/04/beware-of-apaches-multiviews"&gt;Beware of Apache&amp;#8217;s MultiView&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=iG4sBRzHgLo:_c6CNyWTqbY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=iG4sBRzHgLo:_c6CNyWTqbY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cleanair/~4/iG4sBRzHgLo" height="1" width="1"/&gt;</description>
      <pubDate>Tue,  4 Aug 2009 17:24:00 EST</pubDate>
      <guid isPermaLink="false">http://cleanair.highgroove.com/articles/2009/08/04/apache-page-caching-and-multiview</guid>
      <link>http://feedproxy.google.com/~r/cleanair/~3/iG4sBRzHgLo/apache-page-caching-and-multiview</link>
      <category>HowTo</category>
      <trackback:ping>http://cleanair.highgroove.com/articles/trackback/137</trackback:ping>
    <feedburner:origLink>http://cleanair.highgroove.com/articles/2009/08/04/apache-page-caching-and-multiview</feedburner:origLink></item>
    <item>
      <title>How to update a Facebook Page Status using the Facebook API</title>
      <description>&lt;p&gt;For a client&amp;#8217;s application, we needed to programmatically (without user-intervention) update the Status (Wall) of a Page for a Company.  After researching the &lt;span class="caps"&gt;API&lt;/span&gt; and several guides, you would think it was just not possible..&lt;/p&gt;


	&lt;p&gt;In fact, there&amp;#8217;s even a forum post on the Facebook developers forum on &lt;a href="http://forum.developers.facebook.com/viewtopic.php?pid=155004"&gt;How to update facebook page status from 3rd party application&lt;/a&gt; where a Facebook employee explains that it is impossible (as of 2007, at least).&lt;/p&gt;


	&lt;p&gt;The good news is, it is not impossible (as of right now).  Here&amp;#8217;s how to update the Status of a Facebook Page Programmatically, through the &lt;span class="caps"&gt;API&lt;/span&gt;.&lt;/p&gt;


What you&amp;#8217;ll need:
	&lt;ul&gt;
	&lt;li&gt;Ruby and RubyGems&lt;/li&gt;
		&lt;li&gt;A Facebook Account&lt;/li&gt;
		&lt;li&gt;A Facebook Page&lt;/li&gt;
		&lt;li&gt;A Facebook Developer Account/Access (we&amp;#8217;ll go through setting this up)&lt;/li&gt;
		&lt;li&gt;A Ruby or Rails app with access to the facebooker library (either as a gem or using the Rails plugin).&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: As pointed out in the comments, publishing through Facebook using the method described below does place content on the fan page, however, it is not displayed in any user&amp;#8217;s feeds or streams, which makes it not quite so useful.  We have since opted to go with the uber-cool &lt;a href="http://ping.fm"&gt;ping.FM&lt;/a&gt; service and we even wrote a little &lt;a href="http://github.com/highgroove/ping.fm"&gt;ping.fm ruby wrapper library&lt;/a&gt; for their &lt;span class="caps"&gt;API&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Facebook&amp;#8217;s &lt;span class="caps"&gt;API&lt;/span&gt; is really meant for the web&amp;#8212;it&amp;#8217;s a session-based &lt;span class="caps"&gt;API&lt;/span&gt; that relies on a browser being opened, being redirected to the Facebook site, and authorization happening in their walled-castle.&lt;/p&gt;


	&lt;p&gt;Just for reference, and to show the differences of posting a tweet through the Twitter &lt;span class="caps"&gt;API &lt;/span&gt;(with the use of a Twitter Ruby gem for a truly fair comparison):&lt;/p&gt;


	&lt;p&gt;1) Authorize using &lt;span class="caps"&gt;HTTP&lt;/span&gt;Auth:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
Twitter::HTTPAuth.new('yourusername', 'yourpassword')
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;2) Create the &amp;#8220;post&amp;#8221; (or &amp;#8220;tweet&amp;#8221;):&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
twitter_client = Twitter::Base.new(httpauth)
twitter_client.update("this is a post to twitter!")
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Very easy, and very straightforward. Sure, there&amp;#8217;s some abstraction hidden here, but it&amp;#8217;s an &lt;span class="caps"&gt;HTTP POST&lt;/span&gt; of &lt;span class="caps"&gt;XML&lt;/span&gt; or &lt;span class="caps"&gt;JSON&lt;/span&gt; to a status update action, and an &lt;span class="caps"&gt;XML&lt;/span&gt; or &lt;span class="caps"&gt;JSON&lt;/span&gt; response.  It&amp;#8217;s truly stateless, and can be done in one call, you could even do this using curl (an http library) in one-line.&lt;/p&gt;


	&lt;p&gt;OK, now that we&amp;#8217;ve seen how easy it could be, let&amp;#8217;s do the equivalent on Facebook.&lt;/p&gt;


	&lt;p&gt;To post an update to a Page with Facebook, it requires a bit more prep work.&lt;/p&gt;


	&lt;p&gt;0) Signup as a Developer, by visiting:&lt;/p&gt;


	&lt;p&gt;http://developers.facebook.com/get_started.php&lt;/p&gt;


	&lt;p&gt;Click the button to &amp;#8220;Add the Facebook Developer App&amp;#8221; which is confusing, but cool that being a Developer on Facebook requires you to install the &amp;#8220;Developer&amp;#8221; Application:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20090719-x2dq4myfb4n4pafwwtnbw5yg96.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;You will see a interstitial, click allow:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20090719-g4u7ppnmrc1haf2rfw85ix5d97.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;1) Create an Application.  You can name it the same as your Page:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20090719-tkagiu2n1edt2atr77a5jdt52i.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Here are the steps you definitely need to complete:&lt;/p&gt;


	&lt;p&gt;Grab your &lt;span class="caps"&gt;API &lt;/span&gt;Key and Secret Key (not shown in this screen capture):&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20090719-ewwcn23b1uupgqj3tc3gdy6mu6.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;In the Authentication Settings, make sure this application is installable to Pages:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20090719-rs4mmjp8dswb5qwqefi8wsc11w.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;In the settings, create a Canvas page &lt;span class="caps"&gt;URL&lt;/span&gt;, even though we won&amp;#8217;t need it:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20090719-bnb1gc676nwaw922386i2isjhi.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;You can put in a Canvas Callback &lt;span class="caps"&gt;URL&lt;/span&gt;, but it doesn&amp;#8217;t matter.&lt;/p&gt;


	&lt;p&gt;2) Publish your Page, and your Application.  Now visit the Profile Page for the Application:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20090719-ptac7yek3g3i288u6ku3u167ys.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Add the Application to the Page:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20090719-exj8h1wat72q21cjy9xy54jufr.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;You may have to click the &amp;#8220;More&amp;#8221; actions tab to find the link to &amp;#8220;Add to my Page.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;3) Let&amp;#8217;s generate a &amp;#8220;token&amp;#8221; which is the equivalent of an &amp;#8220;infinite&amp;#8221; session that will allow us to programatically make calls to the &lt;span class="caps"&gt;API&lt;/span&gt;, even if we&amp;#8217;re not actively logged in as the owner of the Page.  The procedure is documented here: &lt;a href="http://www.emcro.com/blog/2009/01/facebook-infinite-session-keys-no-more/"&gt;http://www.emcro.com/blog/2009/01/facebook-infinite-session-keys-no-more/&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m sure this could be done through the &lt;span class="caps"&gt;API&lt;/span&gt; itself, but since it&amp;#8217;s a one-time thing, we can do it ourselves, through our browser.&lt;/p&gt;


	&lt;p&gt;3a) First, log out of Facebook and hit this &lt;span class="caps"&gt;URL&lt;/span&gt;:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
http://www.facebook.com/login.php?api_key=YOUR_API_KEY
&lt;/code&gt;&lt;/pre&gt;
Note that you will be redirected to your canvas page with a auth_token parameter:

	&lt;p&gt;&lt;img src="http://img.skitch.com/20090719-87mddgt71pj29nptqf476asqf4.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;3b) Now, visit this page to generate the token:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
http://www.facebook.com/code_gen.php?v=1.0&amp;#38;api_key=YOUR_API_KEY
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;You should see your new auth_token on the next page:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20090719-cnem3hd3hehsmf5w4q8mpxxht9.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;3c) Now, you can generate a session using this token that should never expire.&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s how to do that using the Facebooker library for Ruby.  In script/console:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
fb_session = Facebooker::Session.create
# =&amp;gt; #&amp;lt;Facebooker::Session:0x330cf0c ....

fb_session.post "facebook.auth.getSession", :auth_token =&amp;gt; "YOUR_GENERATED_TOKEN" 
# =&amp;gt; {"session_key"=&amp;gt;"xxxxxxxx", "expires"=&amp;gt;"0", "uid"=&amp;gt;"yyyyyy"}
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;If you look at the session returned, you&amp;#8217;ll see a session_key and see that the &amp;#8220;expires&amp;#8221; is set to 0.&lt;/p&gt;


	&lt;p&gt;If you have a library that lets you &amp;#8220;set&amp;#8221; the session key, you&amp;#8217;re good to go.  You can use that session_key until it is revoked (since it does not expire).&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re using the Facebooker library, since it has been built to &amp;#8220;authorize&amp;#8221; users through the web and store a facebook session along side a normal web/app session, you actually can&amp;#8217;t do this.  In the library, the session_key is an attr_reader (meaning, a read-only attribute for the Facebooker::Session instance).&lt;/p&gt;


	&lt;p&gt;And even though the guide above (facebook-infinite-session-keys-no-more) tells you to use that session_key, it is perfectly valid (and I assume more appropriate) to just use the auth_token instead, every time.&lt;/p&gt;


	&lt;p&gt;So, now we&amp;#8217;re down to this for logging in:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
fb_session = Facebooker::Session.create
fb_session.auth_token = "YOUR_GENERATED_TOKEN" 
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Note, if you&amp;#8217;ve setup Facebooker using the plugin, it loads your api key and secret key using the configuration yaml file.  You could also be explicit:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
fb_session = Facebooker::Session.create(Facebooker.api_key, Facebooker.secret_key)
fb_session.auth_token = "YOUR_GENERATED_TOKEN" 
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;4) Now, time to post something to the page.  We&amp;#8217;ll use the Facebook &lt;span class="caps"&gt;API &lt;/span&gt;&lt;a href="http://wiki.developers.facebook.com/index.php/Feed.publishTemplatizedAction"&gt;feed.publishTemplatizedAction&lt;/a&gt; method, using the page_actor_id parameter.  As of right now, the documentation states correctly that this method &amp;#8220;is deprecated for calls made on behalf of users. This method works only for publishing stories on a Facebook Page that has installed your application.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s a sample call in Ruby:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
fb_session.post("facebook.feed.publishTemplatizedAction", :target_ids =&amp;gt; "", :title_template =&amp;gt; "Testing a News Feed post on a Page posted by {actor}", :title_data =&amp;gt; "{}", :body_template =&amp;gt; "Check it out yo says {name}.", :body_data =&amp;gt; "{\"name\": \"cbq\"}", :body_general =&amp;gt; "Here is the body.", :page_actor_id =&amp;gt; "YOUR_PAGE_ID")
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;A couple of things to note.  Facebook requires that you put the {actor} variable in the title, so you&amp;#8217;ll have to come up with something clever to do with that.  You can also put data in the title for replacement, just like you can do with the body.  Above, the example has a {name} variable replaced in the body, but you don&amp;#8217;t have to add any body data to replace.  The above example shows passing variables and not passing variables for reference.&lt;/p&gt;


	&lt;p&gt;The page id should be easy to grab from any of the URLs of your Page.&lt;/p&gt;


	&lt;p&gt;You should be all set, and see your posts on your page momentarily:&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20090719-j7g6iun3ej1bihat197956wr8c.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;References:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://facebooker.rubyforge.org/"&gt;Facebooker Ruby Gem Documentation&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://apps.facebook.com/facebooker_tutorial/"&gt;Facebooker Tutorial on Facebook&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://getsatisfaction.com/pingfm/topics/posting_updates_to_facebook_fan_pages_api_supports_it"&gt;Posting Updates to Facebook Fan Pages &amp;#8211; &lt;span class="caps"&gt;API &lt;/span&gt;Supports It&lt;/a&gt; &amp;#8211; a post on Ping.FM re: success using &lt;span class="caps"&gt;API&lt;/span&gt;.&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=_YqBnSz3heM:tnqhhuXeqsc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=_YqBnSz3heM:tnqhhuXeqsc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cleanair/~4/_YqBnSz3heM" height="1" width="1"/&gt;</description>
      <pubDate>Sun, 19 Jul 2009 19:33:00 EST</pubDate>
      <guid isPermaLink="false">http://cleanair.highgroove.com/articles/2009/07/19/how-to-update-a-facebook-page-status-using-the-facebook-api</guid>
      <link>http://feedproxy.google.com/~r/cleanair/~3/_YqBnSz3heM/how-to-update-a-facebook-page-status-using-the-facebook-api</link>
      <category>HowTo</category>
      <trackback:ping>http://cleanair.highgroove.com/articles/trackback/134</trackback:ping>
    <feedburner:origLink>http://cleanair.highgroove.com/articles/2009/07/19/how-to-update-a-facebook-page-status-using-the-facebook-api</feedburner:origLink></item>
    <item>
      <title>Rails Rumble at Highgroove HQ</title>
      <description>&lt;p&gt;If you&amp;#8217;re thinking about doing this year&amp;#8217;s &lt;a href="http://r09.railsrumble.com/"&gt;Rails Rumble&lt;/a&gt;, Highgroove HQ in Atlanta (&lt;a href="http://maps.google.com/maps?q=highgroove+studios&amp;#38;oe=utf-8&amp;#38;client=firefox-a&amp;#38;ie=UTF8&amp;#38;hl=en&amp;#38;ll=33.780431,-84.38015&amp;#38;spn=0.068915,0.163078&amp;#38;z=13&amp;#38;iwloc=A"&gt;map&lt;/a&gt;) is offering up our office space for any teams in the Atlanta area for the competition (Aug 22 &amp;#8211; Aug 23).&lt;/p&gt;


	&lt;p&gt;Highgroove has a team, and we know of a few more folks seeking teams.  Ping us if you&amp;#8217;re interested in joining or forming one.  Registration ends soon (this weekend)!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=vmkCnD5BcD0:W_KedFd5lZQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=vmkCnD5BcD0:W_KedFd5lZQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cleanair/~4/vmkCnD5BcD0" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 10 Jul 2009 13:57:00 EST</pubDate>
      <guid isPermaLink="false">http://cleanair.highgroove.com/articles/2009/07/10/rails-rumble-at-highgroove-hq</guid>
      <link>http://feedproxy.google.com/~r/cleanair/~3/vmkCnD5BcD0/rails-rumble-at-highgroove-hq</link>
      <category>Atlanta</category>
      <trackback:ping>http://cleanair.highgroove.com/articles/trackback/133</trackback:ping>
    <feedburner:origLink>http://cleanair.highgroove.com/articles/2009/07/10/rails-rumble-at-highgroove-hq</feedburner:origLink></item>
    <item>
      <title>Writing Ruby Extensions in C the Highgroove Way</title>
      <description>&lt;p&gt;Trying to handle image manipulation, creating PDFs, or in-memory caching in pure Ruby is like trying to win the Tour de France on your hipster single-speed bike. The single-speed works 90% of the time, but when you have demanding performance requirements, it&amp;#8217;s not good enough. Many popular Ruby libraries, such as MySQL/PostgreSQL, RMagick, and most of the webservers Ruby applications are deployed on (like Passenger, Mongrel, and Thin), harness the blazing speed of the C language and libraries to handle the heavy lifting and performance-intensive business that Ruby can&amp;#8217;t keep up with on its own.&lt;/p&gt;


	&lt;p&gt;In some of my recent work, I had the opportunity to delve into and expand on a Ruby extension written in C for looking up geographic information based on IPs. This library was vital to one of our client&amp;#8217;s projects that has immense performance requirements without the possibility of full request caching. By utilizing the existing GeoIP C library for accessing their special in-memory binary database, we were able to keep up with the demand the application would be seeing.&lt;/p&gt;


	&lt;p&gt;As is common at Highgroove Studios, along with making sure our contributions to the library were open sourced, I took the lessons and experience gained from this unusual endeavor and presented them to our local Ruby User Group here in Atlanta. I focused more on exposing the bridge between the Ruby and the C environments and understanding the internals of the Ruby language from a C standpoint. However, armed with this knowledge, any Rubyist is able to open up most any Ruby extension or even the Ruby language implementation itself and understand what&amp;#8217;s going on. My goal was to get the developers over the initial hurdle of being able to read the code and understand it enough to investigate further.&lt;/p&gt;


	&lt;p&gt;Personally, I gained from this experience a better appreciation for the real beauty of the Ruby language and the effort required to make it as fluid and dynamic as it is as well as having a more thorough understanding of the internal workings of the language. Working this close to the language core has also made a difference on my Ruby style, both in trying to fight the language less but to also use it more efficiently and effectively.&lt;/p&gt;


	&lt;p&gt;For more information, check out the presentation slides&lt;sup&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt; and some of the C examples I wrote for the presentation&lt;sup&gt;&lt;a href="#fn2"&gt;2&lt;/a&gt;&lt;/sup&gt;. Also check out the GeoIP I contributed to which inspired this whole adventure&lt;sup&gt;&lt;a href="#fn3"&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;


	&lt;p id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; &lt;a href="http://www.slideshare.net/maraby/writing-ruby-extensions"&gt;http://www.slideshare.net/maraby/writing-ruby-extensions&lt;/a&gt;&lt;/p&gt;


	&lt;p id="fn2"&gt;&lt;sup&gt;2&lt;/sup&gt; &lt;a href="http://github.com/mtodd/ruby-c"&gt;http://github.com/mtodd/ruby-c&lt;/a&gt;&lt;/p&gt;


	&lt;p id="fn3"&gt;&lt;sup&gt;3&lt;/sup&gt; &lt;a href="http://github.com/mtodd/geoip"&gt;http://github.com/mtodd/geoip&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=oYtxORWgM9I:l806LB5h5Ec:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=oYtxORWgM9I:l806LB5h5Ec:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cleanair/~4/oYtxORWgM9I" height="1" width="1"/&gt;</description>
      <pubDate>Fri, 10 Jul 2009 13:56:00 EST</pubDate>
      <guid isPermaLink="false">http://cleanair.highgroove.com/articles/2009/07/10/writing-ruby-extensions-in-c-the-highgroove-way</guid>
      <link>http://feedproxy.google.com/~r/cleanair/~3/oYtxORWgM9I/writing-ruby-extensions-in-c-the-highgroove-way</link>
      <category>Open Source</category>
      <category>What We Wrote</category>
      <category>Presentations</category>
      <trackback:ping>http://cleanair.highgroove.com/articles/trackback/132</trackback:ping>
    <feedburner:origLink>http://cleanair.highgroove.com/articles/2009/07/10/writing-ruby-extensions-in-c-the-highgroove-way</feedburner:origLink></item>
    <item>
      <title>Highgroovers are fans of Sinatra</title>
      <description>&lt;p&gt;Both James Edward Gray II and Matt Todd were quoted in Satish Talim of Ruby Learning&amp;#8217;s Poll: &lt;a href="http://rubylearning.com/blog/2009/06/29/20-rubyists-using-sinatra-do-you/"&gt;20+ Rubyists are using Sinatra &amp;#8211; Do You?&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Sinatra is a Ruby framework for quickly creating web applications with minimal effort&amp;#8212;a &lt;span class="caps"&gt;DSL&lt;/span&gt; for the web.  We use Sinatra for several client projects, and it is also an integral part of &lt;a href="http://scoutapp.com/"&gt;Scout&lt;/a&gt;.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Check out &lt;a href="http://www.sinatrarb.com/documentation.html"&gt;Sinatra&lt;/a&gt; Documenation &lt;/li&gt;
		&lt;li&gt;Learn more about how &lt;a href="http://blog.scoutapp.com/articles/2009/06/29/sinatra-scout-ruby"&gt;Scout uses Sinatra&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=6scQdm2vrWA:03b39oXiN2Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=6scQdm2vrWA:03b39oXiN2Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cleanair/~4/6scQdm2vrWA" height="1" width="1"/&gt;</description>
      <pubDate>Wed,  1 Jul 2009 10:30:00 EST</pubDate>
      <guid isPermaLink="false">http://cleanair.highgroove.com/articles/2009/07/01/highgroove-sinatra-ruby</guid>
      <link>http://feedproxy.google.com/~r/cleanair/~3/6scQdm2vrWA/highgroove-sinatra-ruby</link>
      <category>Open Source</category>
      <trackback:ping>http://cleanair.highgroove.com/articles/trackback/131</trackback:ping>
    <feedburner:origLink>http://cleanair.highgroove.com/articles/2009/07/01/highgroove-sinatra-ruby</feedburner:origLink></item>
    <item>
      <title>Scout Goes Deep! and Robust! and More!</title>
      <description>&lt;p&gt;&lt;a href="http://scoutapp.com/"&gt;Scout&lt;/a&gt; got a major facelift today, to show off all the new features we&amp;#8217;ve launched over the past few months.&lt;/p&gt;


	&lt;p&gt;To learn more about many of the new features, including:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Deep Rails Instrumentation&lt;/li&gt;
		&lt;li&gt;Triggers and Trends&lt;/li&gt;
		&lt;li&gt;The New Daemon-based, Robust Agent&lt;/li&gt;
		&lt;li&gt;The Improved, Easier &lt;span class="caps"&gt;API&lt;/span&gt; and Developer Resources&lt;/li&gt;
		&lt;li&gt;and our new Pricing Model&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;head on over to the Scout Blog to read all about it.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://blog.scoutapp.com/articles/2009/05/26/deep-rails-instrumentation"&gt;Now with deep Rails Instrumentation, triggers, a more robust agent, and more&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=XBaisd49lnw:mGLefk01vyg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/cleanair?a=XBaisd49lnw:mGLefk01vyg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/cleanair?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/cleanair/~4/XBaisd49lnw" height="1" width="1"/&gt;</description>
      <pubDate>Tue, 26 May 2009 23:21:00 EST</pubDate>
      <guid isPermaLink="false">http://cleanair.highgroove.com/articles/2009/05/26/scout-goes-deep-and-robust-and-more</guid>
      <link>http://feedproxy.google.com/~r/cleanair/~3/XBaisd49lnw/scout-goes-deep-and-robust-and-more</link>
      <category>Scout</category>
      <trackback:ping>http://cleanair.highgroove.com/articles/trackback/130</trackback:ping>
    <feedburner:origLink>http://cleanair.highgroove.com/articles/2009/05/26/scout-goes-deep-and-robust-and-more</feedburner:origLink></item>
  </channel>
</rss>
