<?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>orbiteleven.net</title>
	<atom:link href="http://orbiteleven.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://orbiteleven.net</link>
	<description>my little corner of the internets</description>
	<lastBuildDate>Wed, 26 Sep 2012 22:59:38 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Mail.app vs Sparrow.app: Gmail client showdown!</title>
		<link>http://orbiteleven.net/2011/11/09/mail-app-vs-sparrow-app-gmail-client-showdown/</link>
		<comments>http://orbiteleven.net/2011/11/09/mail-app-vs-sparrow-app-gmail-client-showdown/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 16:51:22 +0000</pubDate>
		<dc:creator>damon</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://orbiteleven.net/?p=117</guid>
		<description><![CDATA[I&#8217;ve never been too excited about OS X&#8217;s Mail for GMail as I use tags extensively for GTD (based on this) and Mail seemed so&#8230; Outlook. My main reason for this is that Mail uses folders to represent tags, forcing me to choose just one tag instead of a Reference, Project, Context and Action. Overall, Google spends lots [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve never been too excited about OS X&#8217;s Mail for GMail as I use tags extensively for <a href="http://www.davidco.com/about-gtd" target="_blank">GTD</a> (based on <a href="http://lifehacker.com/5321180/turn-gmail-into-your-ultimate-gtd-inbox" target="_blank">this</a>) and Mail seemed so&#8230; Outlook. My main reason for this is that Mail uses folders to represent tags, forcing me to choose just one tag instead of a Reference, Project, Context and Action. Overall, Google spends lots of time fine-tuning their web interface for GMail, and I&#8217;ve been pretty happy.</p>
<p>Then I came across an interesting OS X client for GMail: <a href="http://sparrowmailapp.com/" target="_blank">Sparrow.app</a>.  Sparrow aims to be lightweight but have the &#8220;right&#8221; features, integrates with things like <a href="http://growl.info/" target="_blank">Growl</a> seamlessly, and allows me to monitor and quickly &#8220;do, delegate, delay or delete&#8221; things that hit my inbox. I&#8217;ve liked it so much that I ended up buying it from the App Store.</p>
<p>It&#8217;s not without it&#8217;s faults, and after reading <a href="http://alanhogan.com/lion-mail-vs-sparrow" target="_blank">Alan Hogan&#8217;s article</a> about the improvements to Mail in Lion, I may play around with Mail again. I&#8217;m not sure that I can get over the tags-are-folders nature of Mail, but it&#8217;s good to see there are options.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbiteleven.net/2011/11/09/mail-app-vs-sparrow-app-gmail-client-showdown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Really Easy RESTful Servers Using the Limonade Micro-framework</title>
		<link>http://orbiteleven.net/2011/08/09/really-easy-restful-servers-using-the-limonade-micro-framework/</link>
		<comments>http://orbiteleven.net/2011/08/09/really-easy-restful-servers-using-the-limonade-micro-framework/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 15:37:49 +0000</pubDate>
		<dc:creator>damon</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://orbiteleven.net/?p=112</guid>
		<description><![CDATA[I just wrote a blog article for my company&#8217;s website based on work I did with the Limonade micro-framework. Check it out: http://www.newsignature.com/blog/2011/08/09/easy-rest-servers-with-microframework/]]></description>
			<content:encoded><![CDATA[<h1><span class="Apple-style-span" style="font-size: 13px; font-weight: normal;">I just wrote a blog article for <a href="http://newsignature.com" target="_blank">my company&#8217;s website</a> based on work I did with the Limonade micro-framework. Check it out:</span></h1>
<p><a href="http://www.newsignature.com/blog/2011/08/09/easy-rest-servers-with-microframework/" target="_blank">http://www.newsignature.com/blog/2011/08/09/easy-rest-servers-with-microframework/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://orbiteleven.net/2011/08/09/really-easy-restful-servers-using-the-limonade-micro-framework/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rails 3 &amp; freezing gems</title>
		<link>http://orbiteleven.net/2010/11/23/rails-3-freezing-gems/</link>
		<comments>http://orbiteleven.net/2010/11/23/rails-3-freezing-gems/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 00:22:54 +0000</pubDate>
		<dc:creator>damon</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://orbiteleven.net/?p=99</guid>
		<description><![CDATA[I learned an important lesson today. The quick summary is &#8220;bundler makes freezing gems unnecessary, use &#8216;bundle install &#8211;deployment&#8216;&#8221;. But for those who like a good, geeky story: I&#8217;ve been updating/upgrading/refactoring a Rails 2 project as a Rails 3 project. We&#8217;d used the method described here to ensure that developer, testing &#38; production environments would [...]]]></description>
			<content:encoded><![CDATA[<p>I learned an important lesson today.  The quick summary is &#8220;bundler makes freezing gems unnecessary, use &#8216;<a href="http://gembundler.com/deploying.html" target="_blank">bundle install &#8211;deployment</a>&#8216;&#8221;.  But for those who like a good, geeky story:</p>
<p>I&#8217;ve been updating/upgrading/refactoring a Rails 2 project as a Rails 3 project.  We&#8217;d used the method <a href="http://www.softiesonrails.com/2008/1/3/freezing-your-rails-application" target="_blank">described here</a> to ensure that developer, testing &amp; production environments would be synched with regards to gems, particularly Rails itself.</p>
<p>Rails 3 introduces the use of <a href="http://gembundler.com/" target="_blank">bundler</a>, a sweet gem management tool. In a googling of &#8220;rails 3 freeze gems&#8221; I came across <a href="http://stackoverflow.com/questions/3411522/how-do-i-freeze-gems-into-rails-application-in-rails-3" target="_blank">a post on Stack Overflow</a> describing a bundle option to set the BUNDLE_PATH variable.  I ran it and voila: all my gems were in the vendor/gems folder.  Seemed to do the trick.</p>
<p>When trying in vain to get the app building in <a href="http://hudson-ci.org/" target="_blank">Hudson</a>, I came to realize that the &#8211;path option had not worked.  Instead, using &#8216;bundle install &#8211;deployment&#8217; on the hudson machine (vs sending it all the gems as part of a Git checkout) was the REAL trick.</p>
<p>The moral of the story: don&#8217;t believe everything you read on the internet and RTFM.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbiteleven.net/2010/11/23/rails-3-freezing-gems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ActiveResource, FakeWeb &amp; Regex Mojo (authenticated edition)</title>
		<link>http://orbiteleven.net/2010/11/23/activeresource-fakeweb-regex-mojo-authenticated-edition/</link>
		<comments>http://orbiteleven.net/2010/11/23/activeresource-fakeweb-regex-mojo-authenticated-edition/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 18:35:27 +0000</pubDate>
		<dc:creator>damon</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[fakeweb]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://orbiteleven.net/?p=93</guid>
		<description><![CDATA[Have a web service which needs requires authentication, but you&#8217;re testing a completely different part of the application?  Again, FakeWeb &#38; Regex help you out here.  If you&#8217;re testing a model extended from ActiveResource by using FakeWeb, the url will look something like this:  1http://user:pass@example.com/someService To mock the request, use a regular expression like so: [...]]]></description>
			<content:encoded><![CDATA[<p>Have a web service which needs requires authentication, but you&#8217;re testing a completely different part of the application?  Again, FakeWeb &amp; Regex help you out here.  If you&#8217;re testing a model extended from ActiveResource by using FakeWeb, the url will look something like this: </p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http://user:pass@example.com/someService</div></td></tr></tbody></table></div>
<p>To mock the request, use a regular expression like so:</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">FakeWeb.register_uri :get, %r|http:(.*)example.com/someService|, :body =&amp;gt; 'foo'</div></td></tr></tbody></table></div>
<p>Now you don&#8217;t have to worry about how you are authenticated. Of course you could use a more advanced regular expression, but we&#8217;re not testing that ActiveResource knows how to authenticate with a source, right?</p>
]]></content:encoded>
			<wfw:commentRss>http://orbiteleven.net/2010/11/23/activeresource-fakeweb-regex-mojo-authenticated-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More FakeWeb &amp; RegExp mojo (anchors edition)</title>
		<link>http://orbiteleven.net/2010/11/10/more-fakeweb-regexp-mojo-anchors-edition/</link>
		<comments>http://orbiteleven.net/2010/11/10/more-fakeweb-regexp-mojo-anchors-edition/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 18:26:38 +0000</pubDate>
		<dc:creator>damon</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[fakeweb]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://orbiteleven.net/?p=80</guid>
		<description><![CDATA[I&#8217;ve been using a lot of FakeWeb + Rspec for creating ActiveResource models BDD-style without hitting my RESTful source.  I keep on figuring out little things with FakeWeb that I feel like I should share. When you register uri&#8217;s with FakeWeb, and you&#8217;re using regular expressions, you might be building layers of access like this: [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using a lot of FakeWeb + Rspec for creating ActiveResource models BDD-style without hitting my RESTful source.  I keep on figuring out little things with FakeWeb that I feel like I should share.</p>
<p>When you register uri&#8217;s with FakeWeb, and you&#8217;re using regular expressions, you might be building layers of access like this:</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">FakeWeb.register_uri(:get, %r|http://example.com/posts|, :body =&gt; {:post =&gt; {:id =&gt; 1, :tile =&gt; 'foo'}})<br />
FakeWeb.register_uri(:get, %r|http://example.com/posts/1/comments|, :body =&gt; {:comment =&gt; {:id =&gt; 1, :post_id =&gt; 1, :tile =&gt; 'bar'}})</div></td></tr></tbody></table></div>
<p>All good, right? No. When you try to get comments, FakeWeb will give you an error:</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">More than one registered URI matched this request: GET http://example.com/posts/1/comments</div></td></tr></tbody></table></div>
<p>Fear not, fair citizen. Regular Expressions Anchors to the rescue. See, FakeWeb is using the first registered uri regexp to match all calls past</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http://example.com/posts</div></td></tr></tbody></table></div>
<p>so your comments url is already matched. By using the ^ (pattern start) and $ (pattern stop) anchors, you can be a little more precise in your matching. Observe:</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">FakeWeb.register_uri(:get, %r|^http://example.com/posts$|, :body =&gt; {:post =&gt; {:id =&gt; 1, :tile =&gt; 'foo'}})<br />
FakeWeb.register_uri(:get, %r|^http://example.com/posts/1/comments$|, :body =&gt; {:comment =&gt; {:id =&gt; 1, :post_id =&gt; 1, :tile =&gt; 'bar'}})</div></td></tr></tbody></table></div>
<p>Tune in later for more: authentication edition.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbiteleven.net/2010/11/10/more-fakeweb-regexp-mojo-anchors-edition/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HAML/SASS and the Holy Grail</title>
		<link>http://orbiteleven.net/2010/11/04/hamlsass-and-the-holy-grail/</link>
		<comments>http://orbiteleven.net/2010/11/04/hamlsass-and-the-holy-grail/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 23:47:07 +0000</pubDate>
		<dc:creator>damon</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[haml]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[sass]]></category>

		<guid isPermaLink="false">http://orbiteleven.net/?p=73</guid>
		<description><![CDATA[I&#8217;ve been using HAML and SASS a lot lately because it&#8217;s kind of the best thing since sliced bread and ZenCode.  I&#8217;ve also been using Mathew James Taylor&#8216;s no-quirks-mode 3 column holy grail layout because: why re-invent the wheel (or in this case the Rube Goldberg Machine that is column layout in CSS). Matthew&#8217;s code [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://haml-lang.com/" target="_blank">HAML</a> and <a href="http://sass-lang.com/">SASS</a> a lot lately because it&#8217;s kind of the best thing since sliced bread and <a href="http://code.google.com/p/zen-coding/" target="_blank">ZenCode</a>.  I&#8217;ve also been using <a href="http://matthewjamestaylor.com/" target="_blank">Mathew James Taylor</a>&#8216;s <a href="http://matthewjamestaylor.com/blog/holy-grail-no-quirks-mode.htm" target="_blank">no-quirks-mode 3 column holy grail layout</a> because: why re-invent the wheel (or in this case the <a href="http://en.wikipedia.org/wiki/Rube_Goldberg_machine" target="_blank">Rube Goldberg Machine</a> that is column layout in CSS).</p>
<p>Matthew&#8217;s code says it&#8217;s free to use (thanks, Matthew!), so I&#8217;m doing my <a href="http://en.wikipedia.org/wiki/Open-source_software" target="_blank">OSS</a>-part by providing you HAML/SASS versions of the layout:</p>
<p><strong>3 Column HAML:</strong></p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><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 /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">!!! 5<br />
%html<br />
&nbsp; %head<br />
&nbsp; %body<br />
&nbsp; &nbsp; #header<br />
&nbsp; &nbsp; #colmask.three-column<br />
&nbsp; &nbsp; &nbsp; #colmid<br />
&nbsp; &nbsp; &nbsp; &nbsp; #colright<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #col1wrap<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #col1pad<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #col1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -# Main content goes here<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #col2<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -# Left column here<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #col3<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -# Right column here<br />
&nbsp; &nbsp; &nbsp; #footer</div></td></tr></tbody></table></div>
<p><strong>3 Column SASS</strong></p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><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 />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$left_col_width: 170px<br />
$right_col_width: 170px<br />
<br />
$padding: 15px<br />
<br />
#colmask.three-column<br />
&nbsp; position: relative<br />
&nbsp; clear: both<br />
&nbsp; float: left<br />
&nbsp; width: 100%<br />
&nbsp; overflow: hidden<br />
&nbsp; #colmid<br />
&nbsp; &nbsp; float: left<br />
&nbsp; &nbsp; width: 200%<br />
&nbsp; &nbsp; position: relative<br />
&nbsp; &nbsp; left: ($left_col_width + $padding + $padding)<br />
&nbsp; #colright<br />
&nbsp; &nbsp; float: left<br />
&nbsp; &nbsp; width: 100%<br />
&nbsp; &nbsp; position: relative<br />
&nbsp; &nbsp; left: 50%<br />
&nbsp; &nbsp; margin-left: -1 * ($left_col_width + $padding + $padding + $right_col_width + $padding + $padding)<br />
&nbsp; #col1wrap<br />
&nbsp; &nbsp; float: right<br />
&nbsp; &nbsp; width: 50%<br />
&nbsp; &nbsp; position: relative<br />
&nbsp; &nbsp; right: 100%<br />
&nbsp; #col1pad<br />
&nbsp; &nbsp; margin: 0 $padding 0 ($left_col_width + $padding + $padding + $right_col_width + $padding + $padding)<br />
&nbsp; &nbsp; overflow: hidden<br />
&nbsp; #col1<br />
&nbsp; &nbsp; width: 100%<br />
&nbsp; &nbsp; overflow: hidden<br />
&nbsp; #col2<br />
&nbsp; &nbsp; float: left<br />
&nbsp; &nbsp; width: $left_col_width<br />
&nbsp; &nbsp; position: relative<br />
&nbsp; &nbsp; margin-left: -50%<br />
&nbsp; &nbsp; left: 215px<br />
&nbsp; &nbsp; overflow: hidden<br />
&nbsp; #col3<br />
&nbsp; &nbsp; float: left<br />
&nbsp; &nbsp; width: $right_col_width<br />
&nbsp; &nbsp; position: relative<br />
&nbsp; &nbsp; left: 15px<br />
&nbsp; &nbsp; overflow: hidden</div></td></tr></tbody></table></div>
<p>As a bonus: his <a href="http://matthewjamestaylor.com/blog/perfect-2-column-left-menu.htm" target="_blank">2 column layout</a></p>
<p><strong>2-column HAML:</strong></p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><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 /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">!!! 5<br />
%html<br />
&nbsp; %head<br />
&nbsp; %body<br />
&nbsp; &nbsp; #header<br />
&nbsp; &nbsp; .colmask.leftmenu<br />
&nbsp; &nbsp; &nbsp; .colright<br />
&nbsp; &nbsp; &nbsp; &nbsp; .col1wrap<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .col1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -# Main body goes here<br />
&nbsp; &nbsp; &nbsp; &nbsp; .col2<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -# Left Column goes here<br />
&nbsp; &nbsp; &nbsp; #footer</div></td></tr></tbody></table></div>
<p><strong>2-column SASS:</strong></p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><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 />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&gt;$left_col_width: 10em<br />
$padding: 1em<br />
<br />
$left_col_top_padding: $padding<br />
$left_col_left_padding: $padding<br />
$left_col_right_padding: $padding<br />
<br />
$right_col_top_padding: $padding<br />
$right_col_left_padding: $padding<br />
$right_col_right_padding: $padding<br />
<br />
// Header styles<br />
#header<br />
&nbsp; clear: both<br />
&nbsp; float: left<br />
&nbsp; width: 100%<br />
<br />
.colmask<br />
&nbsp; position: relative<br />
&nbsp; clear: both<br />
&nbsp; float: left<br />
&nbsp; width: 100%<br />
&nbsp; overflow: hidden<br />
<br />
&nbsp; // 2 column left menu settings<br />
.leftmenu<br />
&nbsp; .colright<br />
&nbsp; &nbsp; float: left<br />
&nbsp; &nbsp; width: 200%<br />
&nbsp; &nbsp; position: relative<br />
&nbsp; &nbsp; left: $left_col_width+$left_col_left_padding+$right_col_left_padding<br />
&nbsp; .col1wrap<br />
&nbsp; &nbsp; float: right<br />
&nbsp; &nbsp; width: 50%<br />
&nbsp; &nbsp; position: relative<br />
&nbsp; &nbsp; right: $left_col_width+$left_col_right_padding+$right_col_right_padding<br />
&nbsp; &nbsp; padding-bottom: 1em<br />
&nbsp; .col1<br />
&nbsp; &nbsp; margin: $right_col_top_padding $right_col_right_padding 0 $left_col_width+$left_col_left_padding+$left_col_right_padding+$right_col_left_padding<br />
&nbsp; &nbsp; position: relative<br />
&nbsp; &nbsp; right: 100%<br />
&nbsp; &nbsp; overflow: hidden<br />
&nbsp; .col2<br />
&nbsp; &nbsp; float: left<br />
&nbsp; &nbsp; width: $left_col_width<br />
&nbsp; &nbsp; position: relative<br />
&nbsp; &nbsp; right: $left_col_width+$left_col_left_padding<br />
<br />
&nbsp; // Footer styles<br />
#footer<br />
&nbsp; clear: both<br />
&nbsp; float: left<br />
&nbsp; width: 100%</div></td></tr></tbody></table></div>
<p>Enjoy</p>
]]></content:encoded>
			<wfw:commentRss>http://orbiteleven.net/2010/11/04/hamlsass-and-the-holy-grail/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MVC &amp; BDD or &#8220;How I learned to stop worrying and love the test&#8221;</title>
		<link>http://orbiteleven.net/2010/07/13/mvc-bdd-or-how-i-learned-to-stop-worrying-and-love-the-test/</link>
		<comments>http://orbiteleven.net/2010/07/13/mvc-bdd-or-how-i-learned-to-stop-worrying-and-love-the-test/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 00:38:41 +0000</pubDate>
		<dc:creator>damon</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://orbiteleven.net/?p=50</guid>
		<description><![CDATA[For a long time now, I&#8217;ve known I needed to get better at testing. Not smoke testing, but real unit testing, test driven development (TDD), or better yet behavior driven development (BDD).  I&#8217;d read papers, API&#8217;s and even wrote some after-the-fact unit tests for a CakePHP project.  It always seamed overly laborious and time consuming. [...]]]></description>
			<content:encoded><![CDATA[<p>For a long time now, I&#8217;ve known I needed to get better at testing. Not smoke testing, but real unit testing, <a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">test driven development</a> (TDD), or better yet <a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development" target="_blank">behavior driven development</a> (BDD).  I&#8217;d read papers, API&#8217;s and even wrote some after-the-fact unit tests for a <a href="http://cakephp.org/" target="_blank">CakePHP</a> project.  It always seamed overly laborious and time consuming.</p>
<p>My second-most recent project at work is a fairly complex/robust <a href="http://rubyonrails.org/" target="_blank">Ruby on Rails</a> application which consumes and provides a front-end for our REST services.  Under the gun to get features out quickly, we skipped over BDD and went right for a system of &#8220;live prototyping&#8221;. Devoid of tests, this app quickly became a game of Jenga where fixing one thing jeopardized the functionality of another. Implementing <a href="http://cukes.info/" target="_blank">Cucumber</a> tests after the fact stopped some of the bleeding, but I was finally starting to see the light.</p>
<p>Which brings me to my most current project. Also a Ruby on Rails application, I had the chance to do ground-up development so I decided to do it right.  At the suggestion of a co-worker who knows better, I replaced Rails&#8217; default testing framework with RSpec for true BDD. The going has been slow, but here&#8217;s what I&#8217;ve found:</p>
<ol>
<li>By starting with behavior I&#8217;ve stuck to the &#8220;fat model, skinny controller&#8221; model where most of my functionality is in the model. It&#8217;s easier to test functionality on a model and then string the resulting data together in the controller.</li>
<li>After the initial delays from learning rspec and getting the initial models and model tests written, the views come together really quickly</li>
<li>I often re-factor my methods several times durring my initial writing. Using Autotest not only checks that I update all affected code, but I start anticipating where I need to update much faster than if I were doing it solo.</li>
</ol>
<p>I hope someone comes across this article and it provides the final push to get on board with BDD. I truly believe that in the last month of development I&#8217;ve improved my MVC development skills as much as I have over the past 3 years. It&#8217;s provided a lot of &#8220;a ha&#8221; moments, and I&#8217;m writing better code.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbiteleven.net/2010/07/13/mvc-bdd-or-how-i-learned-to-stop-worrying-and-love-the-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSpec, FakeWeb, Regexp; a gotcha</title>
		<link>http://orbiteleven.net/2010/07/06/rspec-fakeweb-regexp-gotcha/</link>
		<comments>http://orbiteleven.net/2010/07/06/rspec-fakeweb-regexp-gotcha/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 00:04:25 +0000</pubDate>
		<dc:creator>damon</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[fakeweb]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://orbiteleven.net/?p=58</guid>
		<description><![CDATA[In my effort to be a better BDD/TDD (Behavior-Driven and Test-Driven Development) Developer, I&#8217;ve been diving into writing apps using RSpec for testing.  The nature of my work has me writing test where, in a non-automated-test environment, I would be using web services (SOAP and/or REST) to get and post data.  Now, obviously I don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>In my effort to be a better BDD/TDD (Behavior-Driven and Test-Driven Development) Developer, I&#8217;ve been diving into writing apps using <a href="http://rspec.info/" target="_blank">RSpec</a> for testing.  The nature of my work has me writing test where, in a non-automated-test environment, I would be using web services (SOAP and/or REST) to get and post data.  Now, obviously I don&#8217;t want to use a live web services to do this, so enter <a href="http://github.com/chrisk/fakeweb" target="_blank">FakeWeb</a>. I won&#8217;t go into the details of what FakeWeb is other than it allows me to fake responses to a given HTTP call.</p>
<p>So, I think I&#8217;m pretty slick, having found this nifty tool, but I keep getting schooled when I try to use a regular expression to register an HTTP query string like such:</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">FakeWeb.register_uri(<br />
:get, %r|http:\/\/example\.com\/search\.html\?query=.*&amp;amp;collection=.*|,<br />
:body =&amp;gt; file )<br />
<br />
My thought is that this will return 'file' every time I request something like:[cc]http://example.com/search.html?query=foo&amp;amp;collection=bar</div></td></tr></tbody></table></div>
<p>. I&#8217;d be wrong.</p>
<p>After much monkey-patching-as-debugging of FakeWeb, I find out that when Ruby parses an incoming URI, it&#8217;s broken into parts such as protocol, host, path and query (there are more, but you get my point). When FakeWeb tries to match the incoming URI against my regular expression above, it key-sorts the query, so</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http://example.com/search.html?query=foo&amp;amp;collection=bar</div></td></tr></tbody></table></div>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">becomes http://example.com/search.html?collection=bar&amp;amp;query=foo</div></td></tr></tbody></table></div>
<p>and FakeWeb throws it out as an unregistered URI. Fun!</p>
<p>Simply re-arranging the regular expression in the register call makes it all happy.</p>
<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">FakeWeb.register_uri(<br />
:get,<br />
%r|http:\/\/example\.com\/search\.html\?collection=.*&amp;amp;query=.*|,<br />
:body =&amp;gt; file )</div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://orbiteleven.net/2010/07/06/rspec-fakeweb-regexp-gotcha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Open Letter to Vibram Regarding Five Fingers</title>
		<link>http://orbiteleven.net/2010/06/17/an-open-letter-to-vibram-regarding-five-fingers/</link>
		<comments>http://orbiteleven.net/2010/06/17/an-open-letter-to-vibram-regarding-five-fingers/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 15:02:20 +0000</pubDate>
		<dc:creator>damon</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[vibram fivefingers]]></category>

		<guid isPermaLink="false">http://orbiteleven.net/?p=52</guid>
		<description><![CDATA[I&#8217;m sorry it&#8217;s come to this. I sent this email to Vibram 2 weeks ago, but have not heard a response. I suppose they don&#8217;t have to care because of the popularity of their FiveFingers product.  Well, I&#8217;d be curious to hear from others about durability issues. Here was my letter: Hello, I&#8217;ve been wearing [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sorry it&#8217;s come to this. I sent this email to Vibram 2 weeks ago, but have not heard a response. I suppose they don&#8217;t have to care because of the popularity of their FiveFingers product.  Well, I&#8217;d be curious to hear from others about durability issues.</p>
<p>Here was my letter:</p>
<p>Hello,</p>
<div>I&#8217;ve been wearing Vibram FiveFingers for about a year now. I love *almost* everything about them. They&#8217;re comfortable. I enjoy barefoot movement without having to develop pads on my feet. I even met my girlfriend because of them.</div>
<div>However, they just don&#8217;t hold up. I now own 4 pairs: 1 Sprint, 1 KSO Trek, and 2 KSO&#8217;s. I exchanged my first pair of KSO&#8217;s within 30 days of use because of a hole &amp; stitching coming apart on the big toes, and the pinky toes were separating from the rubber. The replacement KSO&#8217;s (8 months) and the Treks (6 months) are both falling apart: the KSO&#8217;s have the same big toe issues (holes &amp; stitching). Both big toes on the Treks have separated from the rubber and one has a hole on the outside.  I wear my shoes every day (though I do rotate for smell reasons), but don&#8217;t do anything that&#8217;s not pictured in your promotional materials.  Though some people have had their VFF&#8217;s for years, others I speak to have had similar problems.</div>
<div>It is very hard to support and evangelize Vibram FiveFingers when they fall apart so quickly. I tell up to 10 people a day and blog regularly about them. I say that I love the product but durability has been an issue. It&#8217;s hard to take the &#8220;ripoff&#8221; arguments Vibram uses about durability seriously. If my shoes are going to last &lt; 6 months, $30 is much better than $85.</div>
<div>In addition to feeling that some sort of warranty is in order, I would be happy to act as a &#8220;wear &amp; durability&#8221; consultant for your company in exchange for shoes. I lead a relatively active lifestyle that includes trail running, hiking, backpacking and hanging out in public in the FiveFingers. I practically AM the guy in your brochure.  I&#8217;m sure Vibram does a fair amount of testing, but this would give you an opportunity to see how the shoes wear in the real world and improve an already great&#8211;if fragile&#8211;product.</div>
<div>Let me know if Vibram is interested, or at least whether you&#8217;re willing to warrantee my used shoes.</div>
<div>Damon Toal-Rossi</div>
]]></content:encoded>
			<wfw:commentRss>http://orbiteleven.net/2010/06/17/an-open-letter-to-vibram-regarding-five-fingers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Breakfast Burrito Review: Tia Sophia</title>
		<link>http://orbiteleven.net/2009/10/07/breakfast-burrito-review-tia-sophia/</link>
		<comments>http://orbiteleven.net/2009/10/07/breakfast-burrito-review-tia-sophia/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 15:04:18 +0000</pubDate>
		<dc:creator>damon</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Breakfast Burrito]]></category>

		<guid isPermaLink="false">http://orbiteleven.net/?p=44</guid>
		<description><![CDATA[As I drove in to work in Santa Fe this rainy October morning, I was craving a breakfast burrito.  I pulled out my BlackBerry and a quick Google search rendered some site called BooRah with a page about breakfast burritos in Santa Fe. If you&#8217;ve ever tried using your BlackBerry web browser for any site [...]]]></description>
			<content:encoded><![CDATA[<p>As I drove in to work in Santa Fe this rainy October morning, I was craving a breakfast burrito.  I pulled out my BlackBerry and a quick Google search rendered some site called <a href="http://www.boorah.com/restaurants/NM/santa-fe/tia-sophias/065F5F1061.html">BooRah</a> with a page about breakfast burritos in Santa Fe. If you&#8217;ve ever tried using your BlackBerry web browser for any site not designed for 1st generation cell phone browsers, you&#8217;ll understand that I really couldn&#8217;t figure out what it was saying.</p>
<p>So I texted my friend who lives in &#8220;the city different&#8221; who recommended Tia Sophia, Santa Fe Baking Company and some other place. Having gotten food poisoning from a (very tasty) burrito from Santa Fe Baking Co, I opted for Tia Sophia.</p>
<p>Located off the plaza, I was lucky to find parking right in front.  I owe the rare rainstorm and 8 AM arrival.  The ambiance is cozy New Mexican; not over done, but clean and authentic.  I was surprised that their breakfast burrito does not come with eggs by default.  I joked that a breakfast burrito without an egg was just a burrito.  The woman&#8211;who I gather is the owner&#8211;replied that they <strong>invented the breakfast burrito in 1975</strong> (a &#8220;fact&#8221; reported by the <a href="http://www.nytimes.com/1998/05/24/travel/what-s-doing-in-santa-fe.html?sec=travel&amp;pagewanted=print">NY Times</a>), and lots of people ask for it without an egg.  Still, it&#8217;s just a burrito without the egg.  I&#8217;m also a bit fan of <a href="http://www.blue-kitchen.com/2008/08/13/taste-of-new-mexico-carne-adovada/">carne adovada</a> breakfast burritos, but have learned to not discount a place that sticks to more gringo meats.</p>
<p>Anyway, my order was a bacon breakfast burrito <em>with an egg</em>, smothered <a href="http://www.newmexico.org/cuisine/chile_lexicon/index.php">Christmas</a>.  With a coffee, it ended up being ~$11.  The burrito was by no means large, but I wasn&#8217;t worried about starving.  The green was tasty and relatively mild.  The red was a little too flour-y but not bad.  The potatoes were the shredded hash-brown style, and well cooked. The bacon was thick, cooked just right (well cooked but a bit chewy).</p>
<p>Overall, I&#8217;d go back to this place and sit down. Though expensive by Albuquerque standards, it was reasonable for a place spitting distance from the Santa Fe Plaza.  The atmosphere and staff were great and the burrito was good.</p>
]]></content:encoded>
			<wfw:commentRss>http://orbiteleven.net/2009/10/07/breakfast-burrito-review-tia-sophia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
