<?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>catapult-creative.com</title>
	<atom:link href="http://www.catapult-creative.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.catapult-creative.com</link>
	<description>worldwide (web) whatnot</description>
	<lastBuildDate>Thu, 28 Jan 2010 14:56:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>iPad &#8212; I&#8217;m glad I&#8217;m not really a pundit</title>
		<link>http://www.catapult-creative.com/2010/01/28/ipad-im-glad-im-not-really-a-pundit/</link>
		<comments>http://www.catapult-creative.com/2010/01/28/ipad-im-glad-im-not-really-a-pundit/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 14:56:20 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.catapult-creative.com/2010/01/28/ipad-im-glad-im-not-really-a-pundit/</guid>
		<description><![CDATA[OK so I&#8217;m really glad that I&#8217;m not a professional technology pundit, since all the predictions from my last post turned out to be wrong.  Even the name!  What the hell?  I&#8217;m pretty sure that I&#8217;m going to be there in line for the thing on the first day, but &#8220;iPad&#8221;?  [...]]]></description>
			<content:encoded><![CDATA[<p>OK so I&#8217;m really glad that I&#8217;m not a professional technology pundit, since all the predictions from my last post turned out to be wrong.  Even the name!  What the hell?  I&#8217;m pretty sure that I&#8217;m going to be there in line for the thing on the first day, but &#8220;iPad&#8221;?  It sounds like something that the menstrual product industry would market for &#8220;young lady&#8217;s first period.&#8221;  &#8220;iSlate&#8221; was so much better.</p>

<p>I&#8217;d still love to see the iPad enable some cool peripheral needs.  I understand why they didn&#8217;t showcase that as a major use of this thing, but I&#8217;m hoping that the <span class="caps">SDK </span>will let programmers create apps that enable the iPad to be used as an input device &#8212; the 1000-sensor multitouch screen would make it pretty compelling for that.  I mean if you watch the <a href="http://brushesapp.com/">Brushes app</a> demo, you&#8217;ll get an idea of what you could do with this in something like Photoshop or Illustrator.</p>

<p><a href="http://daringfireball.net/2010/01/ipad_big_picture">John Gruber got to play with one</a> a bunch and said that the main thing that he (and it seemed everyone else there) noticed about the experience is how fast it is.  And it&#8217;s Apple&#8217;s own chip in this beast &#8212; a 1 Ghz Apple A4 chip.  This is going to drive Apple&#8217;s bid toward dominance as the &#8220;largest mobile device maker in the world&#8221;</p>

<blockquote>
  <p>Apple now owns and controls their own mobile <span class="caps">CPU</span>s. There aren&#8217;t many companies in the world that can say that. And from what I saw today, Apple doesn&#8217;t just own and control a mobile <span class="caps">CPU, </span>they own and control the hands-down best mobile <span class="caps">CPU </span>in the world. Software aside (which is a huge thing to put aside), it may well be that no other company could make a device today matching the price, size, and performance of the iPad. They&#8217;re not getting into the <span class="caps">CPU </span>business for kicks, they&#8217;re getting into it to kick ass.</p>
</blockquote>

<p>It seems inevitable that they&#8217;ll try to put one of these babies into a new version of the iPhone, and then, well holy crap. They&#8217;ll need to call it the 3GS^2</p>

<h3>Peripheral</h3>

<p>I wish I&#8217;d been right about the magnetic induction stand, because I think that would&#8217;ve been a lot cooler than the flip-around carrying case thing that they&#8217;re going to ship this with, but it makes sense that they&#8217;re going to have the same 30-pin power/data connection that the iPhone/iPod have.  Apple has a history (that they seem to have abandoned) of just drastically changing what&#8217;s available in the way of interfaces or peripherals on new devices.  Remember how aghast people were that the iMac had no 3.5&#8243; floppy drive?  Earlier than that, I think there was a big stink when they did <span class="caps">SCSI </span>instead of parallel ports on their boxes.  Given this history, it made sense to me that they might want to make the sync interactions of the device entirely wireless.  But given the existing commitment to 30-pin connectors, it feels a little more &#8220;new Apple&#8221; that they kept this tech in the device.</p>

<p>I&#8217;ll leave the public predictions to people who know a lot more about the history and industry on these things, but it was fun to speculate.  I can&#8217;t wait to download the <span class="caps">SDK </span>for iPad &#8212; I should have it later today &#8212; and I&#8217;m of course hyper-excited to get one in 60 days.  Still trying to decide though whether I care about the 3G access.  At this point, hearing that <span class="caps">AT&amp;T </span>is willing to sell me an unlimited 3G data plan for $29.95 is sort of like hearing that shit sandwiches are 75% off.</p>]]></content:encoded>
			<wfw:commentRss>http://www.catapult-creative.com/2010/01/28/ipad-im-glad-im-not-really-a-pundit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reckless predictions about the Apple Tablet</title>
		<link>http://www.catapult-creative.com/2010/01/04/reckless-predictions-about-the-apple-tablet/</link>
		<comments>http://www.catapult-creative.com/2010/01/04/reckless-predictions-about-the-apple-tablet/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 22:47:14 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.catapult-creative.com/2010/01/04/reckless-predictions-about-the-apple-tablet/</guid>
		<description><![CDATA[With no pundit reputation to screw up, I stand here unashamed and ready to be proven wrong.  Here are my predictions for what the mythical Apple tablet computer will be all about.

It will be called the &#8216;iSlate&#8217;

Cool name.  NYTimes editor Bill Keller called it a version of that name (&#8221;the new Apple slate&#8221;) [...]]]></description>
			<content:encoded><![CDATA[<p>With no pundit reputation to screw up, I stand here unashamed and ready to be proven wrong.  Here are my predictions for what the mythical Apple tablet computer will be all about.</p>

<h3>It will be called the &#8216;iSlate&#8217;</h3>

<p>Cool name.  <span class="caps">NYT</span>imes editor Bill Keller called it a version of that name (&#8221;the new Apple slate&#8221;) at one point awhile back, and it just fits nicely.  Also Apple owns islate.com.</p>

<h3>There will be an awesome accessory</h3>

<p>The iPhone comes with an accessory that manages to actually <em>up</em> the cool factor &#8212; its headphones.  The iSlate will have one if its own: a sleek cradle that will fulfill the functionalities of a stand (allowing the iSlate to sit upright for easy seated viewing), and a charging station, using magnetic induction as its power delivery mechanism, and enabling Apple&#8217;s designers to avoid placing a power port on the device itself.  I&#8217;m also predicting as part of this that it will support over-the-air sync <em>only</em>.</p>


<h3>Part of the pitch will be for use as an accessory</h3>

<p>Not a big part, mind you, but I think there will be significant emphasis on using this as a secondary input device for an existing computer &#8212; as a drawing tablet or a multi-function &#8220;hotkeys&#8221; device or something.  This could just be <a href="http://www.catapult-creative.com/2009/09/09/apple-my-fingers-ache/">wishful thinking</a> on my part, but I just can&#8217;t get past the idea that Apple wants people to view this as a computing device whose primary attraction is that it lends itself to a paradigm-shifting <em>generality</em> of use.  That means fulfilling the roles of computer, television, magazine, and yeah, <a href="http://www.wacom.com/">Wacom tablet</a>.</p>

<p>More importantly will be the idea that the iSlate fits into your life in a certain way &#8212; as your &#8220;on-the-go&#8221; device; even more so than the iPhone, this is the thing you take to meetings, take on short trips, etc.  Auto-syncing important documents and whatnot over the air will be a big deal.</p>

<h3>It will run something beefier than iPhone OS</h3>

<p>Maybe not full-on OS X, but I agree with <a href="http://daringfireball.net/2009/12/the_tablet">John Gruber</a> that they&#8217;re not going to just spooge the iPhone OS onto the device:</p>

<blockquote>
   <p>in the same way that it made no sense for Apple to design the iPhone OS to run Mac software, it makes little sense for a device with a 7-inch (let alone larger) display to run software designed for a 3.5-inch display.</p>
</blockquote>

<p>I also don&#8217;t think that the file system will be <em>completely</em> hidden away a la the iPhone and that the only way you&#8217;ll be able to interact with the device is through apps.  If this is to try and be a general-purpose computing device, there has to be some kind of file system access, even if it&#8217;s severely limited.  Another piece of evidence for it being something somewhere between iPhone OS and full-on OS X is the <a href="http://www.appleinsider.com/articles/09/05/07/snow_leopard_to_support_native_3g_wireless_wan_hardware.html"><span class="caps">WWAN </span>(as in 3G) network information reporting in Snow Leopard</a>.</p>

<p>OK &#8212; that seems like prognostication enough for now.  Can&#8217;t wait for January 26th/27th.</p>]]></content:encoded>
			<wfw:commentRss>http://www.catapult-creative.com/2010/01/04/reckless-predictions-about-the-apple-tablet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Take no one&#8217;s word on The Tablet</title>
		<link>http://www.catapult-creative.com/2009/12/20/take-no-ones-word-on-the-tablet/</link>
		<comments>http://www.catapult-creative.com/2009/12/20/take-no-ones-word-on-the-tablet/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 04:54:11 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://www.catapult-creative.com/2009/12/20/take-no-ones-word-on-the-tablet/</guid>
		<description><![CDATA[I like this Macalope column from Macworld, reminding us all how wrong all the pundits were in advance of the iPhone (and quite a bit of the dumb stuff that&#8217;s been said lately about the rumored Apple tablet).  The best part though is his insight that the reason Apple has succeeded with the iPod [...]]]></description>
			<content:encoded><![CDATA[<p>I like <a href="http://www.macworld.com/article/145141/2009/12/tablet_macalope.html">this Macalope column</a> from Macworld, reminding us all how wrong all the pundits were in advance of the iPhone (and quite a bit of the dumb stuff that&#8217;s been said lately about the rumored Apple tablet).  The best part though is his insight that the reason Apple has succeeded with the iPod and iPhone is because those two technologies each had a killer differentiating feature that made them able to disrupt an existing market.</p>

<blockquote>
   <p>if and when it appears, will have some differentiator that makes it a compelling purchase. The iPod replaced your CD collection, the Apple TV would like to replace your <span class="caps">DVD </span>collection (but you won&rsquo;t buy one), and the iPhone, obviously, replaced your cell phone. The tablet (insert caveat about its existential dilemma) will turn another industry on its head. The problem with the JooJoo is that it has no hook, no ecosystem. It doesn&rsquo;t act as a compelling replacement for anything you have.</p>
</blockquote>

<p>One thing that I&#8217;m hoping for (but that I think there&#8217;s very little possibility of due to the likelihood that they&#8217;re going to base it on iPhone OS) is some kind of personal diagramming application.  I&#8217;d love to be able to add some programmatic heft behind the diagrams I draw of data models, applications, etc.  I&#8217;d love to be able to put data behind some stuff, or draw things that can go right into a program like <a href="http://www.omnigroup.com/applications/OmniGraffle/">OmniGraffle</a></p>

<p>If my own little personal BS grammar of pseudo <a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language"><span class="caps">UML</span></a> could get programmed out pop-n-fresh automatically into some <a href="http://api.rubyonrails.org/classes/ActiveRecord/Base.html">ActiveRecord models</a> right after I drew it freehand, I&#8217;d be one step closer to some right-brain techie Nirvana.</p>]]></content:encoded>
			<wfw:commentRss>http://www.catapult-creative.com/2009/12/20/take-no-ones-word-on-the-tablet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One new thing that blows my mind a bit</title>
		<link>http://www.catapult-creative.com/2009/11/13/one-new-thing-that-blows-my-mind-a-bit/</link>
		<comments>http://www.catapult-creative.com/2009/11/13/one-new-thing-that-blows-my-mind-a-bit/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 14:56:11 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.catapult-creative.com/2009/11/13/one-new-thing-that-blows-my-mind-a-bit/</guid>
		<description><![CDATA[There are more black people than white people on Twitter, and this is only recently becoming obvious to people because of new Twitter stuff like Trending Topics:

But seriously&#8212;talk about being in a bubble!&#8212;demographically, there is a greater proportion of black people than white people among the Internet-using population on Twitter: according to Pew, 26% of [...]]]></description>
			<content:encoded><![CDATA[<p>There are <a href="http://www.theawl.com/2009/11/what-were-black-people-talking-about-on-twitter-last-night" title="What Were Black People Talking About on Twitter Last Night? | The Awl">more black people than white people on Twitter</a>, and this is only recently becoming obvious to people because of new Twitter stuff like <a href="http://twitter.com/trendingtopics">Trending Topics</a>:</p>

<blockquote><p>But seriously&mdash;talk about being in a bubble!&mdash;demographically, there is a greater proportion of black people than white people among the Internet-using population on Twitter: according to Pew, 26% of African-Americans online use Twitter; only 19% of white Internet people use Twitter. So really the question is: why does Twitter get so white and boring during the day? Don&#8217;t white people do anything at work?</p></blockquote>


<p>So many data at play in this that I don&#8217;t want to say anything, but this is really interesting for what it says about Twitter&#8217;s power as a general communication medium with high availability outside the socioeconoomic ranks of affluent suburban office workers.</p>]]></content:encoded>
			<wfw:commentRss>http://www.catapult-creative.com/2009/11/13/one-new-thing-that-blows-my-mind-a-bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When open-uri can&#8217;t convert Hash into String &#8212; another time it happens</title>
		<link>http://www.catapult-creative.com/2009/10/25/when-open-uri-cant-convert-hash-into-string-another-time-it-happens/</link>
		<comments>http://www.catapult-creative.com/2009/10/25/when-open-uri-cant-convert-hash-into-string-another-time-it-happens/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 00:20:13 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CodeDunce]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.catapult-creative.com/2009/10/25/when-open-uri-cant-convert-hash-into-string-another-time-it-happens/</guid>
		<description><![CDATA[Short answer: OpenURI doesn&#8217;t support the &#8220;feed://&#8221; pseudo protocol and if you try it with a hash of header options it gives you the same error as if, like some dumb muppet, you hadn&#8217;t required the library in the first place.  In other words, it falls through to Kernel#open and leaves you scratching your [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Short answer:</strong> OpenURI doesn&#8217;t support the &#8220;feed://&#8221; pseudo protocol and if you try it with a hash of header options it gives you the same error as if, like some dumb muppet, you hadn&#8217;t required the library in the first place.  In other words, it falls through to Kernel#open and leaves you scratching your head.</p>

<p><strong>Long answer:</strong> Read on, code fiends.  Read on.</p>

<p>Tonight I decided to earn some HusbandPoints&trade; by helping my wife get a large number of tagged photos off <a href="http://picasa.google.com/">Picasa</a> for a project that she&#8217;s working on.  Downloading them by hand would&#8217;ve been a pain in the ass timewise and also would&#8217;ve been a big pain opportunity-cost wise as well, since she would&#8217;ve had to take time out from the main body of the project (a homemade cookbook for a friend&#8217;s wedding) to do a dumb photo-by-photo clickfest through the entire large Picasa album she&#8217;d assembled with her friends.  Plus it gave me a reason to mess around w/ the Google <span class="caps">API</span>s some &#8212; knowledge that would almost certainly come in handy later.</p>

<p>Now, the easiest way to go about scripting this w/ Ruby involves using <strong>open-uri</strong> to pass in the authorization token from Google into every request, per their <a href="http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html">ClientLogin authentication method</a>.  You do that with a piece of code like this:</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;width:620px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="ruby codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co1"># Assuming that @auth_token is set by a login method</span><br />
<span class="kw1">def</span> http_header<br />
&nbsp; <span class="br0">&#123;</span><span class="st0">&quot;Authorization&quot;</span> <span class="sy0">=&gt;</span> <span class="st0">&quot;GoogleLogin auth=#{@auth_token}&quot;</span><span class="br0">&#125;</span><br />
<span class="kw1">end</span><br />
<br />
<span class="co1"># HTTP GET a Google content feed (Atom)</span><br />
<span class="kw1">def</span> get<span class="br0">&#40;</span>url<span class="br0">&#41;</span><br />
&nbsp; response = <span class="kw3">open</span><span class="br0">&#40;</span>url, http_header<span class="br0">&#41;</span><span class="br0">&#123;</span> <span class="sy0">|</span>f<span class="sy0">|</span> f.<span class="me1">read</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#125;</span><br />
&nbsp; Hpricot.<span class="me1">XML</span><span class="br0">&#40;</span>response<span class="br0">&#41;</span><br />
<span class="kw1">end</span></div></td></tr></tbody></table></div>

<p>Here we&#8217;re getting the content from Google (which will come as an Atom feed, as all of their various pieces of content do) and then parsing the result with <a href="http://github.com/whymirror/hpricot">Hpricot</a>.  We pass the <strong>http_header</strong> Hash to OpenURI&#8217;s <strong>open</strong> method to specify a set of <span class="caps">HTTP </span>header variables.  This is supposed to be easy, but tonight it wasn&#8217;t, and my wife was treated to the inelegant sounds of me cursing at my laptop screen for 10 or 15 minutes until I figured out what the problem was.</p>


<h3>&#8216;feed://&#8217; don&#8217;t go &#8217;round here</h3>

<p>The problem turmed out to be the &#8220;feed://&#8221; pseudo protocol.  Safari likes it (because it fancies itself a feed reader), and decided to make the <span class="caps">RSS </span>link provided by Google for the tag set my wife wanted to download into a &#8220;feed://&#8221; URL.  Of course, there&#8217;s no such protocol, and &#8220;feed://&#8221; itself is a pretty lame.  People have been <a href="http://www.rassoc.com/gregr/weblog/2003/09/15/subscriptions-with-feed/">bitching about its lameness</a> for a long, long time.  It&#8217;s almost as lame as me not catching it.</p>

<p>But the lamest thing of all (which was causing the cursing) is how OpenURI handles this:</p>

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;width:620px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="font-family:Monaco,Lucida Console,monospace">TypeError: can't convert Hash into String<br />
<br />
method initialize &nbsp; in open-uri.rb at line 32<br />
method open_uri_original_open &nbsp; in open-uri.rb at line 32<br />
method open in open-uri.rb at line 32<br />
method get&nbsp; in picasa.rb at line 62</div></td></tr></tbody></table></div>

<p>This is the same thing you get when you try to use <strong>open</strong> on a <span class="caps">URL </span>with a hash of header arguments and you&#8217;ve forgotten to require the OpenURI library in the first place.<br />
 <br />
The problem here seems to be with this part:</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;width:620px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="ruby codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">def</span> <span class="kw3">open</span><span class="br0">&#40;</span>name, <span class="sy0">*</span>rest, <span class="sy0">&amp;</span>block<span class="br0">&#41;</span> <span class="co1"># :doc:</span><br />
&nbsp; <span class="kw1">if</span> name.<span class="me1">respond_to</span>?<span class="br0">&#40;</span><span class="re3">:open</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; name.<span class="kw3">open</span><span class="br0">&#40;</span><span class="sy0">*</span>rest, <span class="sy0">&amp;</span>block<span class="br0">&#41;</span><br />
&nbsp; <span class="kw1">elsif</span> name.<span class="me1">respond_to</span>?<span class="br0">&#40;</span><span class="re3">:to_str</span><span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">%</span>r<span class="br0">&#123;</span>\A<span class="br0">&#91;</span>A<span class="sy0">-</span>Za<span class="sy0">-</span>z<span class="br0">&#93;</span><span class="br0">&#91;</span>A<span class="sy0">-</span>Za<span class="sy0">-</span>z0<span class="sy0">-</span><span class="nu0">9</span><span class="sy0">+</span>\<span class="sy0">-</span>\.<span class="br0">&#93;</span><span class="sy0">*</span>:<span class="sy0">//</span><span class="br0">&#125;</span> =~ name <span class="sy0">&amp;&amp;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>uri = <span class="kw4">URI</span>.<span class="me1">parse</span><span class="br0">&#40;</span>name<span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">respond_to</span>?<span class="br0">&#40;</span><span class="re3">:open</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; uri.<span class="kw3">open</span><span class="br0">&#40;</span><span class="sy0">*</span>rest, <span class="sy0">&amp;</span>block<span class="br0">&#41;</span><br />
&nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; open_uri_original_open<span class="br0">&#40;</span>name, <span class="sy0">*</span>rest, <span class="sy0">&amp;</span>block<span class="br0">&#41;</span><br />
&nbsp; <span class="kw1">end</span><br />
<span class="kw1">end</span></div></td></tr></tbody></table></div>

<p>It&#8217;s not calling the part you might think &#8212; the piece where it asks if the name can be converted to a string and if it conforms to a loose <span class="caps">URI </span>regex pattern.  It&#8217;s instead calling it with the original, version of <strong>open</strong>, the one that the Kernel class provides so you can easily open files and <span class="caps">URL</span>s (but without all the tasty options given you by OpenURI).  This error gets thrown by Kernel when you try to use open outside the context of OpenURI (as <a href="http://highearthorbit.com/open-uri-and-cant-convert-hash-into-string/">this guy points out</a>).</p>

<p>Since we can tell that a <span class="caps">URL </span>that starts with &#8220;feed://&#8221; should pass the first of the two tests in the &#8220;elsif&#8221; clause (the regex pattern), that means that it&#8217;s not passing some part of the the <span class="caps">URI.</span>parse test.  Here&#8217;s what that <span class="caps">URI.</span>parse method looks like:</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;width:620px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="ruby codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">def</span> <span class="kw2">self</span>.<span class="me1">parse</span><span class="br0">&#40;</span>uri<span class="br0">&#41;</span><br />
&nbsp; scheme, userinfo, host, port, <br />
&nbsp; &nbsp; registry, path, opaque, query, fragment = <span class="kw2">self</span>.<span class="kw3">split</span><span class="br0">&#40;</span>uri<span class="br0">&#41;</span><br />
<br />
&nbsp; <span class="kw1">if</span> scheme <span class="sy0">&amp;&amp;</span> @@schemes.<span class="kw1">include</span>?<span class="br0">&#40;</span>scheme.<span class="me1">upcase</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; @@schemes<span class="br0">&#91;</span>scheme.<span class="me1">upcase</span><span class="br0">&#93;</span>.<span class="me1">new</span><span class="br0">&#40;</span>scheme, userinfo, host, port, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;registry, path, opaque, query, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fragment<span class="br0">&#41;</span><br />
&nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; Generic.<span class="me1">new</span><span class="br0">&#40;</span>scheme, userinfo, host, port, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; registry, path, opaque, query, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fragment<span class="br0">&#41;</span><br />
&nbsp; <span class="kw1">end</span><br />
<span class="kw1">end</span></div></td></tr></tbody></table></div>

<p>No great clues there.  But if you run through the code in the OpenURI#open method&#8217;s elsif clause, it turns out that if you parse the offending &#8220;feed://&#8221;-based <span class="caps">URI, </span>you don&#8217;t get a &#8220;URI::HTTP&#8221; object.  You get a &#8220;URI::Generic&#8221; object, which doesn&#8217;t respond to <strong>open</strong>.  Obviously, the library doesn&#8217;t support this kind of <span class="caps">URL, </span>and if it weren&#8217;t overriding a Kernel method, it&#8217;d probably say so, but it can&#8217;t make assumptions about what you&#8217;re trying to do with <strong>open</strong>, so it instead falls through to the call to the overridden Kernel#open and you get the same error you&#8217;d get if you never used &#8220;require &#8216;open-uri&#8217;&#8221; in the first place.</p>

<p>Lesson learned, boys and girls &#8212; pseudo protocols aren&#8217;t supported by much at all other than self-important feed reading software.</p>

<p><em>Thanks to the Gimite <a href="http://gimite.net/gimite/rubymess/google-spreadsheet-ruby/">Google Spreadsheet library</a> for inspiration on the auth code</em></p>]]></content:encoded>
			<wfw:commentRss>http://www.catapult-creative.com/2009/10/25/when-open-uri-cant-convert-hash-into-string-another-time-it-happens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Fast Flip &#8212; not sure about this yet</title>
		<link>http://www.catapult-creative.com/2009/10/06/google-fast-flip-not-sure-about-this-yet/</link>
		<comments>http://www.catapult-creative.com/2009/10/06/google-fast-flip-not-sure-about-this-yet/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 13:38:52 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.catapult-creative.com/2009/10/06/google-fast-flip-not-sure-about-this-yet/</guid>
		<description><![CDATA[I&#8217;ve only played with Google&#8217;s new Fast Flip newsreading feature for a few minutes, but I&#8217;ve already got one major problem with it: it&#8217;s hard to scan headlines.  When you think about it, that&#8217;s something that reading a paper newspaper still lets you do &#8212; you open up a double-sided broadsheet and you&#8217;re scanning [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve only played with Google&#8217;s new <a href="http://fastflip.googlelabs.com/">Fast Flip</a> newsreading feature for a few minutes, but I&#8217;ve already got one major problem with it: it&#8217;s hard to scan headlines.  When you think about it, that&#8217;s something that reading a paper newspaper still lets you do &#8212; you open up a double-sided broadsheet and you&#8217;re scanning over probably 5 or 6 stories on the inside, depending on the number of advertisements.  If you scan down the front page or the main page of a section, you can see the headlines for 8-10 stories.  With Fast Flip, the &#8220;scanning&#8221; view is a bunch of screen caps of the articles you&#8217;re about to look at, with the headline in small print underneath.  Scanning this list of screen caps isn&#8217;t that informative because the shrunken headlines are hard to read.</p>

<p>Contrast this with the front page of <a href="http://news.google.com/">Google News</a> or something like <a href="http://www.techmeme.com/">Techmeme</a> or <a href="http://www.memeorandum.com/">memeorandum</a> and you&#8217;ll see what I mean.  </p>

<p>Now I get that Fast Flip is designed for you to click into one of the streams of articles and then use the left/right arrows to page through it, but this causes me to &#8220;zoom in&#8221; conceptually and doesn&#8217;t really let me stand back and see all the headlines from a distance.  So I can have the experience of &#8220;flipping&#8221; from page to page and not knowing in advance anything about what I&#8217;m going to see next (other than some basics of subject matter), or I can scan small headlines all at once.  Doesn&#8217;t feel like the greatest compromise in the world.</p>

<p>For me, I&#8217;m still deciding if I like this or not.  I&#8217;m a big fan of graphic design and I like that Fast Flip offers an opportunity for that to shine through earlier in the reading process than it can on something like Google News or Techmeme, but I&#8217;m not sure if that outweighs the benefit of being able to move fast through a large number of headlines.</p>]]></content:encoded>
			<wfw:commentRss>http://www.catapult-creative.com/2009/10/06/google-fast-flip-not-sure-about-this-yet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple, My Fingers Ache</title>
		<link>http://www.catapult-creative.com/2009/09/09/apple-my-fingers-ache/</link>
		<comments>http://www.catapult-creative.com/2009/09/09/apple-my-fingers-ache/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 13:13:13 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://www.catapult-creative.com/2009/09/09/apple-my-fingers-ache/</guid>
		<description><![CDATA[As we all wait with bated breath for the latest announcement of awesome from Cupertino, I thought I&#8217;d mention something that I&#8217;d love to see Apple make: a &#8220;soft button&#8221; keypad for configurable hotkeys.

I spend most of my work day at the computer, either writing code or working in hotkey-heavy applications like Adobe Fireworks or [...]]]></description>
			<content:encoded><![CDATA[<p>As we all wait with bated breath for the <a href="http://www.macrumors.com/2009/08/31/apple-issues-invitations-for-september-9th-media-event/">latest announcement of awesome from Cupertino</a>, I thought I&#8217;d mention something that I&#8217;d love to see Apple make: a &#8220;soft button&#8221; keypad for configurable hotkeys.</p>

<p>I spend most of my work day at the computer, either writing code or working in hotkey-heavy applications like <a href="http://www.adobe.com/products/fireworks/">Adobe Fireworks</a> or <a href="http://www.omnigroup.com/applications/OmniGraffle/">OmniGraffle</a>.  I also tend to use hotkeys for closing windows, switching applications, creating new tabs in browsers and terminals, switching between windows, and (all the damn time) copy/paste.  The result of all this hotkey action is that I get pain in my fingers, particularly my left index finger &#8212; the go-to digit for most of my hotkeying.  Between that and the constant need to type almost as fast as I can, the pain can sometimes become nearly debilitating, causing me to have to stop using my computer for up to half a workday sometimes, which in turn costs me money.</p>

<p>As has been pointed out quite a bit, <span class="caps">QWERTY </span>sucks and is really just around because of design inertia.  Keyboards don&#8217;t really seem designed to be used by human hands.  As much as I love Apple&#8217;s recent innovation of the peripheral keyboard that feels like a laptop one, I still find myself with major hand fatigue at the end of the week.</p>

<p>If I could just set my hotkeys to be what and where I want them to be, I think I could solve a lot of this.  I&#8217;m envisioning something that looks sort of like a square iPhone, sitting to the left of my keyboard and plugged in via <span class="caps">USB. </span> Spread across the screen of the device would be my hotkeys, customized in function and position, and changing automatically when the active application changes.  Since the keys would be on a &#8220;soft&#8221; screen, I could position and size them how it made sense for my hands and my workflow.  Since they could each have a custom function, I could reduce the claw-making, four-button combos I frequently have to pull off in my editor to just one tap of one button.  This would make my hands happier.  Happy hands, happy dev.</p>

<p>I know there are soft keyboards out there, but I&#8217;m not really looking for that.  What I want would me more versatile &#8212; a &#8220;key palette&#8221; if you will.  I could see this being only one of many possible uses for such a device.</p>

<p>Anyway&#8230; Apple, should you decide to make one, there&#8217;s no need to give me credit.  Just send me a free one.  My over-stretched left index finger will breathe a sigh of relief from inside its ice pack.</p>]]></content:encoded>
			<wfw:commentRss>http://www.catapult-creative.com/2009/09/09/apple-my-fingers-ache/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&#8220;The GOP is going downhill&#8221; &#8212; news meme of the week?</title>
		<link>http://www.catapult-creative.com/2009/08/20/the-gop-is-going-downhill-news-meme-of-the-week/</link>
		<comments>http://www.catapult-creative.com/2009/08/20/the-gop-is-going-downhill-news-meme-of-the-week/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 23:39:08 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.catapult-creative.com/2009/08/20/the-gop-is-going-downhill-news-meme-of-the-week/</guid>
		<description><![CDATA[Some historical perspective

I&#8217;m not usually a huge fan of Joe Klein&#8217;s feelings about how this or that politician ought to act in this or that situation, but he&#8217;s definitely a savvy political observer.  This article gives some great insight into the state that nihilism has left the Republican party in:


	To be sure, there are [...]]]></description>
			<content:encoded><![CDATA[<h3>Some historical perspective</h3>

<p>I&#8217;m not usually a huge fan of Joe Klein&#8217;s feelings about how this or that politician ought to act in this or that situation, but he&#8217;s definitely a savvy political observer.  <a href="http://www.time.com/time/printout/0,8816,1917525,00.html">This article</a> gives some great insight into the state that nihilism has left the Republican party in:</p>

<blockquote>
	<p>To be sure, there are honorable conservatives, trying to do the right thing. There is a legitimate, if wildly improbable, fear that Obama&#8217;s plan will start a process that will end with a health-care system entirely controlled by the government. There are conservatives &mdash; Senator Lamar Alexander, Representative Mike Pence, among many others &mdash; who make their arguments based on facts. But they have been overwhelmed by nihilists and hypocrites more interested in destroying the opposition and gaining power than in the public weal. The philosophically supple party that existed as recently as George <span class="caps">H.W.</span> Bush&#8217;s presidency has been obliterated. The party&#8217;s putative intellectuals &mdash; people like the Weekly Standard&#8217;s William Kristol &mdash; are prosaic tacticians who make precious few substantive arguments but oppose health-care reform mostly because passage would help Barack Obama&#8217;s political prospects. In 1993, when the Clintons tried health-care reform, the Republican John Chafee offered a creative (in fact, superior) alternative &mdash; which Kristol quashed with his famous &#34;Don&#8217;t Help Clinton&#34; fax to the troops. There is no Republican health-care alternative in 2009. The same people who rail against a government takeover of health care tried to enforce a government takeover of Terri Schiavo&#8217;s end-of-life decisions. And when Palin floated the &#34;death panel&#34; canard, the number of prominent Republicans who rose up to call her out could be counted on one hand.</p>
</blockquote>

<h3><span class="caps">GOP </span>as cult</h3>

<p>Someone sent me <a href="http://www.huffingtonpost.com/johann-hari/the-republican-party-is-t_b_262594.html">this piece</a> as well, by <em>Independent</em> (UK) columnist Johann Hari:</p>

<blockquote>
	<p>This trend has reached its apotheosis this summer with the Republican Party claiming en masse that Obama wants to set up &#34;death panels&#34; to euthanize the old and disabled. Yes: Sarah Palin really has claimed &#8212; with a straight face &#8212; that Barack Obama wants to kill her baby.</p>
	<br />
&#8230;

	<p>These claims have become so detached from reality that they often seem like black comedy. The right-wing magazine US Investors&#8217; Daily claimed that if Steven Hawking had been British, he would have been allowed to die at birth by its &#34;socialist&#34; healthcare system. Hawking responded with a polite cough that he is British, and &#34;I wouldn&#8217;t be here without the <span class="caps">NHS.</span>&#34; Frank Laffer, the right-wing economist lauded by David Cameron, claimed on <span class="caps">CNN </span>that it would be a disaster if the government got its hands on Medicare, the program providing healthcare for the elderly, paid for entirely by&#8230; the government.</p>

		<p>This tendency to simply deny inconvenient facts and invent a fantasy-world isn&#8217;t new; it&#8217;s only becoming more heightened. It ran through the Bush years like a dash of bourbon in water. When it became clear Saddam Hussein had no Weapons of Mass Destruction, the US right simply claimed they had been shipped to Syria. When the scientific evidence for man-made global warming became unanswerable, they claimed, as one Republican congressman put it, that it was &#34;the greatest hoax in human history&#34;, and all the world&#8217;s climatologists were &#34;liars&#34;. The American media then presents itself as an umpire between &#34;the rival sides&#34;, as if they both had evidence behind them.</p>
</blockquote>

<p>It&#8217;s fun to think of them as a cult, but the truth is a lot scarier: there&#8217;s no center to this &#8212; not even when Bush and Rove were pulling strings.  These people freaking out are doing so as a result of ingesting tons and tons of multi-flavored nonsense for decades; political, religious, pseudo-relgio-ethical (I&#8217;m looking at you, Ayn Rand, and spitting on the floor), economic.  It&#8217;s been a steady diet of denial and hate made credible by people who trade in statistics and nice-looking logos and websites and 24-7 cable opinionews.  A poison pablum, as engineered for tastiness to the brain as a Big Mac is to the gullet, has turned the <span class="caps">GOP </span>faithful into a legion of zombies.</p>

<p>That can&#8217;t be good for American democracy.</p>]]></content:encoded>
			<wfw:commentRss>http://www.catapult-creative.com/2009/08/20/the-gop-is-going-downhill-news-meme-of-the-week/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Make ruby-debug work better</title>
		<link>http://www.catapult-creative.com/2009/08/12/make-ruby-debug-work-better/</link>
		<comments>http://www.catapult-creative.com/2009/08/12/make-ruby-debug-work-better/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 16:18:50 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CodeDunce]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[remember-tip]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.catapult-creative.com/2009/08/12/end-some-of-the-pain-with-ruby-debug/</guid>
		<description><![CDATA[If you&#8217;ve written Ruby, chances are you&#8217;ve had to use ruby-debug.  You might&#8217;ve thought the experience sucked &#8212; especially the fact that the debugger defaults to a mode in which you have to use a keyword to get it to evaluate a statement.  Lost? Here&#8217;s what I mean:

Say you start the debugger here:

12result [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve written Ruby, chances are you&#8217;ve had to use <a href="http://rubyforge.org/projects/ruby-debug/">ruby-debug</a>.  You might&#8217;ve thought the experience sucked &#8212; especially the fact that the debugger defaults to a mode in which you have to use a keyword to get it to evaluate a statement.  Lost? Here&#8217;s what I mean:</p>

<p>Say you start the debugger here:</p>

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;width:620px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="font-family:Monaco,Lucida Console,monospace">result = resource[xml_obj.api_call_string].get<br />
(rdb:1)</div></td></tr></tbody></table></div>

<p>Then you want to take a look at the &#8220;xml_obj&#8221; variable.  If this were (for instance) <a href="http://docs.python.org/library/pdb.html">Python&#8217;s pdb</a>, we&#8217;d just type &#8220;xml_obj&#8221; and hit return and be done with it.  Not so in ruby-debug:</p>

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;width:620px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="font-family:Monaco,Lucida Console,monospace">(rdb:1) xml_obj.api_call_string<br />
*** Unknown command: &quot;xml_obj.api_call_string&quot;. &nbsp;Try &quot;help&quot;.</div></td></tr></tbody></table></div>

<p>This is because with default settings, the debugger needs a keyword (&#8217;p') to get it to actually evaluate your statement as Ruby and not a command to the debugger itself:</p>

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;width:620px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="font-family:Monaco,Lucida Console,monospace">(rdb:1) p xml_obj.api_call_string<br />
&quot;documentService/documentsByCommunity&quot;</div></td></tr></tbody></table></div>

<p>That gets really tedious, really fast.  The debugger&#8217;s help function (&#8217;help p&#8217;) will helpfully tell you that this is because the &#8220;autoeval&#8221; option is not enabled.  If you&#8217;re thick like me, you won&#8217;t see this and you&#8217;ll just continue doing &#8220;p &lt;whatever&gt;&#8221; until you get so frustrated you drop what you&#8217;re doing one day and go hunt down a fix.</p>

<p>Here is that fix from inside your code:</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;width:620px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br /></div></td><td><div class="ruby codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw3">require</span> <span class="st0">'ruby-debug'</span><br />
Debugger.<span class="me1">settings</span><span class="br0">&#91;</span><span class="re3">:autoeval</span><span class="br0">&#93;</span> = <span class="kw2">true</span></div></td></tr></tbody></table></div>

<p>You can also do this inside the debugger:</p>

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;width:620px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="font-family:Monaco,Lucida Console,monospace">(rdb:1) set autoeval<br />
autoeval is on.</div></td></tr></tbody></table></div>

<h3>Rails already does it via Rack middleware</h3>

<p>You might be wondering why the debugging experience is different in Rails than in Ruby you&#8217;ve written elsewhere.  I did too &#8212; remembering that this &#8216;p&#8217; business isn&#8217;t necessary when I run the debugger as an option when I start up Mongrel in a Rails app.  So I went digging for the code that Rails uses to set this stuff up.  Those settings come from a piece of Rack middleware that lives in <strong>lib/rails/rack/debugger.rb</strong>.  Here&#8217;s the class definition:</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;width:620px;height:300px"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></div></td><td><div class="ruby codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">module</span> Rails<br />
&nbsp; <span class="kw1">module</span> Rack<br />
&nbsp; &nbsp; <span class="kw1">class</span> Debugger<br />
&nbsp; &nbsp; &nbsp; <span class="kw1">def</span> initialize<span class="br0">&#40;</span>app<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">@app</span> = app<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; require_library_or_gem <span class="st0">'ruby-debug'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ::Debugger.<span class="me1">start</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ::Debugger.<span class="me1">settings</span><span class="br0">&#91;</span><span class="re3">:autoeval</span><span class="br0">&#93;</span> = <span class="kw2">true</span> <span class="kw1">if</span> ::Debugger.<span class="me1">respond_to</span>?<span class="br0">&#40;</span><span class="re3">:settings</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">puts</span> <span class="st0">&quot;=&gt; Debugger enabled&quot;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">rescue</span> <span class="kw4">Exception</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">puts</span> <span class="st0">&quot;You need to install ruby-debug to run the server in debugging mode. With gems, use 'gem install ruby-debug'&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">end</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span class="kw1">def</span> call<span class="br0">&#40;</span>env<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">@app</span>.<span class="me1">call</span><span class="br0">&#40;</span>env<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">end</span><br />
&nbsp; &nbsp; <span class="kw1">end</span><br />
&nbsp; <span class="kw1">end</span><br />
<span class="kw1">end</span></div></td></tr></tbody></table></div>

<p>For more info on how Rails uses Rack, this is a pretty <a href="http://guides.rubyonrails.org/rails_on_rack.html">handy page</a> from the Rails guides.</p>]]></content:encoded>
			<wfw:commentRss>http://www.catapult-creative.com/2009/08/12/make-ruby-debug-work-better/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Oh, Exquisite Lord of Toolish Writing!</title>
		<link>http://www.catapult-creative.com/2009/08/10/oh-exquisite-lord-of-toolish-writing/</link>
		<comments>http://www.catapult-creative.com/2009/08/10/oh-exquisite-lord-of-toolish-writing/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 02:30:00 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[geek]]></category>

		<guid isPermaLink="false">http://www.catapult-creative.com/2009/08/10/oh-exquisite-lord-of-toolish-writing/</guid>
		<description><![CDATA[I realize that if you think the internet is like Hollywood, then Scoble is someone you&#8217;re supposed to hate.  But don&#8217;t.  IN FACT, back way the hell off and realize for a second that Scoble isn&#8217;t just someone to be parodied and mocked at the places @ SxSW where the techies do drugs. [...]]]></description>
			<content:encoded><![CDATA[<p>I realize that if you think the internet is like Hollywood, then Scoble is someone you&#8217;re supposed to hate.  But don&#8217;t.  IN <span class="caps">FACT, </span>back way the hell off and realize for a second that Scoble isn&#8217;t just someone to be parodied and mocked at the places @ SxSW where the techies do drugs.  Scoble is a force to be celebrated.  Scoble is a national treasure for <a href="http://scobleizer.com/2009/08/10/facebook-friendfeed/">writing like this</a> :</p>

<blockquote>
  <p>When I heard the news I was walking through San Antonio&rsquo;s Hard Rock Cafe looking at Kurt Cobain&rsquo;s high school photograph. Wow. FriendFeed was purchased by Facebook.</p>

  <p>I quickly wrote a DM to Paul Buchheit and Bret Taylor, co-founders and said &ldquo;call me.&rdquo; They did, and I got one of the first interviews.</p>
</blockquote>

<p>This is poetry.  It&#8217;s charmingly quotidian at the top (he talks about the Hard Rock Cafe like he&#8217;s at Buckingham, and he mentions Cobain&#8217;s picture because it&#8217;s some kind terrible whitebread muse-talisman to him), but then just after this &#8220;oh, me?&#8221; scene setting, Scoble is brief and devastating in his establishment of douchey dominance &#8212; explicit and unquestionable.  </p>

<p>He is the man who will speak about this here internet thing <span class="caps">AND </span>tell you the dudes&#8217; names <span class="caps">AND </span>tell you that he used to hang with them before <em>this</em> cool thing happened, <span class="caps">BACK WHEN THAT OTHER </span>cool thing happened or was happening.  </p>

<p>He&#8217;ll show you wtf is going on in this world.  We should wipe the snot from his camera for the chance to be here.  Luckily he lets us listen in for free:</p>

<blockquote>
  <p>Basically they did not tell me much other than FriendFeed would keep on going on for the indefinite future.</p>
</blockquote>

<p>Scoble, no worries.  I wasn&#8217;t expecting real information and was just glad that you had the opportunity to write this gem.  I stand here, in awe, clapping quietly in my dusty corner of the internet.  Bra-fucking-vo.</p>]]></content:encoded>
			<wfw:commentRss>http://www.catapult-creative.com/2009/08/10/oh-exquisite-lord-of-toolish-writing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
