<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns: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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>CodedLite</title>
	
	<link>http://codedlite.com/blog</link>
	<description>Blog of Nathan</description>
	<lastBuildDate>Tue, 13 Jul 2010 04:13:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Codedlite" /><feedburner:info uri="codedlite" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>2 Things I like most about changes to Safari 5</title>
		<link>http://feedproxy.google.com/~r/Codedlite/~3/-VCedqjDyjw/</link>
		<comments>http://codedlite.com/blog/?p=240#comments</comments>
		<pubDate>Tue, 08 Jun 2010 13:35:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://codedlite.com/blog/?p=240</guid>
		<description><![CDATA[Reader
The Browser will detect when the article you are reading, can be viewed using the reader. Notice this new icon taking the place of the rss button.

After clicking the reader icon:

You should see the Reader appear:

My first reaction to this, is that advertisers will hate this. But maybe that&#8217;s an over reaction. The ads are [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Reader</strong></p>
<p>The Browser will detect when the article you are reading, can be viewed using the reader. Notice this new icon taking the place of the rss button.</p>
<p><a href="http://codedlite.com/blog/wp-content/uploads/2010/06/How-to-re-enable-Netflix-in-Safari-5-Engadget.jpg"><img class="size-medium wp-image-241 alignnone" title="reader icon" src="http://codedlite.com/blog/wp-content/uploads/2010/06/How-to-re-enable-Netflix-in-Safari-5-Engadget-300x209.jpg" alt="reader icon" width="300" height="209" /></a></p>
<p>After clicking the reader icon:<br />
<a href="http://codedlite.com/blog/wp-content/uploads/2010/06/reader.jpg"><img class="size-full wp-image-243 alignnone" title="reader" src="http://codedlite.com/blog/wp-content/uploads/2010/06/reader.jpg" alt="reader" width="49" height="18" /></a></p>
<p>You should see the Reader appear:</p>
<p><a href="http://codedlite.com/blog/wp-content/uploads/2010/06/Safari.jpg"><img class="size-medium wp-image-249 alignnone" title="Safari" src="http://codedlite.com/blog/wp-content/uploads/2010/06/Safari-300x208.jpg" alt="Safari" width="300" height="208" /></a></p>
<p>My first reaction to this, is that advertisers will hate this. But maybe that&#8217;s an over reaction. The ads are not blocked. When the user arrives at the page, they will see the ads. Also, the user cannot browse in &#8220;Reader&#8221; mode, thus always seeing the dimmed ads. The take way for advertisers might be, to say what you want to say sooner in the animated ads. You have about 5 seconds to capture my eye before I click on the reader icon.</p>
<p><strong>IPad User Agent</strong></p>
<p>As a developer, I want to see how a page might look on the IPad. We can do this with Safari 5 now:</p>
<p><a href="http://codedlite.com/blog/wp-content/uploads/2010/06/sf.jpg"><img class="alignnone size-medium wp-image-250" title="sf" src="http://codedlite.com/blog/wp-content/uploads/2010/06/sf-300x216.jpg" alt="sf" width="300" height="216" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://codedlite.com/blog/?feed=rss2&amp;p=240</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codedlite.com/blog/?p=240</feedburner:origLink></item>
		<item>
		<title>Remember the “Free” version of Windows 7?</title>
		<link>http://feedproxy.google.com/~r/Codedlite/~3/ZyqYP-3XcrY/</link>
		<comments>http://codedlite.com/blog/?p=230#comments</comments>
		<pubDate>Tue, 16 Feb 2010 13:23:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://codedlite.com/blog/?p=230</guid>
		<description><![CDATA[I received this email from Microsoft this morning. Not that I totally disagree with it. However, It does serve as a reminder that nothing in life is free.

]]></description>
			<content:encoded><![CDATA[<p>I received this email from Microsoft this morning. Not that I totally disagree with it. However, It does serve as a reminder that nothing in life is free.</p>
<p><img class="alignnone size-full wp-image-231" title="Gmail - Microsoft Windows 7 RC Upgrade Information - nathanclark80@gmail.com" src="http://codedlite.com/blog/wp-content/uploads/2010/02/Gmail-Microsoft-Windows-7-RC-Upgrade-Information-nathanclark80@gmail.com.png" alt="Gmail - Microsoft Windows 7 RC Upgrade Information - nathanclark80@gmail.com" width="572" height="547" /></p>
]]></content:encoded>
			<wfw:commentRss>http://codedlite.com/blog/?feed=rss2&amp;p=230</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codedlite.com/blog/?p=230</feedburner:origLink></item>
		<item>
		<title>5 tips to mitigating development distractions</title>
		<link>http://feedproxy.google.com/~r/Codedlite/~3/bbsPXHjO4XM/</link>
		<comments>http://codedlite.com/blog/?p=218#comments</comments>
		<pubDate>Wed, 10 Feb 2010 14:00:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://codedlite.com/blog/?p=218</guid>
		<description><![CDATA[Metaphor time! Writing code is much like writing poetry. In order to write a good piece of code, it take knowledge, inspiration and focus. But how can you focus in a busy office?

Unless you remove yourself from the office, you cannot eliminate distractions, but you can reduce them with these 5 steps.
1. Encourage people to [...]]]></description>
			<content:encoded><![CDATA[<p>Metaphor time! Writing code is much like writing poetry. In order to write a good piece of code, it take knowledge, inspiration and focus. But how can you focus in a busy office?<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/balhgjEQ9sY&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/balhgjEQ9sY&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Unless you remove yourself from the office, you cannot eliminate distractions, but you can reduce them with these 5 steps.</p>
<h2>1. Encourage people to contact you over instant message or email</h2>
<p>IM and email can be moved out of the way while you are focusing on something. So it&#8217;s not the same as someone asking you &#8220;Did you see the email I sent 2 seconds ago?&#8221;. I call this the &#8220;Personal Attachment&#8221;, were they practically send themselves as an attachment to the email.</p>
<h2>2. Always respond to emails and IM message</h2>
<p>Even if you are going to be busy all/most of the day, or don&#8217;t have an answer to the question posed in the message. Saying something like <em>&#8220;I&#8217;m not sure about this question. let me dig into this and get back to you.&#8221;</em> or<em> &#8220;I&#8217;m really slammed with this X project, please let me get back to you.&#8221;</em>. Ignoring people, encourages them to follow up personally. It&#8217;s their job to get and have answers. I myself am not aways good at this, but when I am, I notice I have less interruptions.</p>
<h2>3. Do not distract others</h2>
<p>Don&#8217;t be a hypocrite, and complain when other need your attention while you feel busy. If everyone did this, there would be no reason for a post like this.</p>
<h2>4. Explain your decisions on matters</h2>
<p>The more you explain why, the more others can anticipate what your answer might be on a reoccurring matter.</p>
<h2>5. Documentation</h2>
<p>If you can direct people to a wiki or document server for common answers and templates, you will save your time and others as well. But, be kind about it. No one likes a &#8220;Document Nazi&#8221;. Just because some topic has a wiki page on it, doesn&#8217;t mean that it was written in an understandable fashion.</p>
<p><a href="http://37signals.com" onclick="javascript:pageTracker._trackPageview ('/outbound/37signals.com');">Jason Fried</a> said, &#8220;We don&#8217;t have a work day anymore. We have work moments&#8221;. I could not agree more.</p>
]]></content:encoded>
			<wfw:commentRss>http://codedlite.com/blog/?feed=rss2&amp;p=218</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codedlite.com/blog/?p=218</feedburner:origLink></item>
		<item>
		<title>Autotest doesn’t work, for me. Hello Watchr</title>
		<link>http://feedproxy.google.com/~r/Codedlite/~3/pO60mfm7y34/</link>
		<comments>http://codedlite.com/blog/?p=185#comments</comments>
		<pubDate>Tue, 09 Feb 2010 15:40:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[autotest]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[watchr]]></category>

		<guid isPermaLink="false">http://codedlite.com/blog/?p=185</guid>
		<description><![CDATA[I wanted to use Autotest for testing. So many Podcast, screencast and even conference talks have shared that if you are not using AutoTest, you should be.
It&#8217;s understandable that so many love Autotest. 4 out of 5 dentist even recommend using it. It so much easier and faster to know if the code/scripture you are [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-188" title="iStock_000004453604XSmall" src="http://codedlite.com/blog/wp-content/uploads/2010/02/iStock_000004453604XSmall-300x199.jpg" alt="iStock_000004453604XSmall" width="300" height="199" />I wanted to use Autotest for testing. So many <a href="http://railsenvy.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/railsenvy.com');">Podcast</a>, <a href="http://peepcode.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/peepcode.com');">screencast</a> and even conference <a href="http://mtnwestrubyconf2008.confreaks.com/12saleh.html" onclick="javascript:pageTracker._trackPageview ('/outbound/mtnwestrubyconf2008.confreaks.com');">talks</a> have shared that if you are not using AutoTest, you should be.</p>
<p>It&#8217;s understandable that so many love Autotest. 4 out of 5 dentist even recommend using it. It so much easier and faster to know if the code/scripture you are writing, is FAIL coded.  But I cannot use Autotest. Here is why.</p>
<p>IT SUCKS! No, just kidding. This is not going be a ghetto rants. No really, heres why I can&#8217;t use AutoAwesome.</p>
<p>When I start working on a new Rails project, I start from a foundation. Rails templates allows me pull in all the plugins, initializers and configurations. One of the plugins pulled in, is a custom in-house CMS. I separate project specific additions out into new plugins/engines. So as you might can see, most of my work is not done within the main &#8220;app&#8221; folder, and most of my tests are not in the project&#8217;s main &#8220;test&#8221; folder. With any projects that uses this in-house CMS, the goal really is to not have any code in the main &#8220;app&#8221; folder. everything should be separated and self contained within its engine.</p>
<p>Reuse. That&#8217;s the key. I don&#8217;t care for reinventing the wheel. I would much rather drag and drop a plugin, then have to pull and untangle some functionality into a new project.</p>
<p>Back to Autotest. Please note that when I speak of Autotest, I&#8217;m including Autotest-rails. By default AT ignores the  /vendor folder. This make sense. When running your test you wouldn&#8217;t want to also run the plugin tests. There&#8217;s a level of trust that we have for many plugins. That these plugins have their own tests. Also, should we want to test the plugins, it would be purposed.<br />
<code><br />
rake plugins:test<br />
</code><br />
<strong> Autotest is configurable</strong>. Should you want, you can tell AT which file matching patterns it should watch.<br />
<code><br />
Autotest.add_mapping<br />
</code><br />
The add_mapping method is a lot of what makes up the Autotest-rails plugin. Seeing this, EURIKA! I have a plan, use add_mapping. Setting up for the simplest trial, of getting Autotest to work with my Rails Engine, I added this to .autotest:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">Autotest.<span style="color:#9900CC;">add_hook</span> <span style="color:#ff3333; font-weight:bold;">:initialize</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>at<span style="color:#006600; font-weight:bold;">|</span>
at.<span style="color:#9900CC;">add_mapping</span> <span style="color:#006600; font-weight:bold;">%</span>r<span style="color:#006600; font-weight:bold;">%</span>^vendor<span style="color:#006600; font-weight:bold;">/</span>plugins<span style="color:#006600; font-weight:bold;">/</span>case_studies<span style="color:#006600; font-weight:bold;">/</span>app<span style="color:#006600; font-weight:bold;">/</span>controllers<span style="color:#006600; font-weight:bold;">/</span>admin<span style="color:#006600; font-weight:bold;">/</span>case_studies_controller.<span style="color:#9900CC;">rb</span>$<span style="color:#006600; font-weight:bold;">%</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>_, m<span style="color:#006600; font-weight:bold;">|</span>
<span style="color:#996600;">&quot;test/functional/admin/case_studies_controller_test.rb&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>Oh, I can&#8217;t wait, I&#8217;m about to OWN this issue. Yep, testing paradise HERE I COME! I run to the command line, change directories into my project, and fire up Autotest. After making a simple edit to my admin controller, I receive this annoying little message.<br />
<code><br />
Unable to map class Admin::CaseStudiesControllerTest to a file<br />
</code><br />
<img class="alignright size-thumbnail wp-image-197" title="broken stop sign" src="http://codedlite.com/blog/wp-content/uploads/2010/02/iStock_000010402104XSmall1-150x150.jpg" alt="broken stop sign" width="150" height="150" />What do you mean &#8220;Unable to map&#8221;. I told you(Autotest) were to map. Thus my new quest has been discovered. Yes, much like some of our greatest explores of times past, Columbus, Lewis and Clark, I have no &#8220;X&#8221; on a map, only an &#8220;X&#8221;.<br />
I must know what causes this &#8220;Unable to map&#8221;.</p>
<p>I started by digging around in the Autotest code. After a while, I finally learned that Autotest doesn&#8217;t understand namespacing. If I were to move the test down a folder and remove the &#8220;Admin&#8221; namespace, Autotest is happy. But for my needs this will not work. I must have the test live in the admin folder with the admin namspacing.</p>
<p>I set out to asked the IRC channels, all I go was silents. I asked the <a href="http://railsforum.com/viewtopic.php?id=37105" onclick="javascript:pageTracker._trackPageview ('/outbound/railsforum.com');">forums</a> and <a href="http://stackoverflow.com/questions/2210741/autotest-not-understanding-namespacing" onclick="javascript:pageTracker._trackPageview ('/outbound/stackoverflow.com');">stackoverflow</a> and as of today 0 replies. I am left with out a solution. But then, I see a little flash in the distance, as I get closer, I see that its another file change detection and testing tool called watchr.</p>
<p><strong><a href="http://github.com/mynyml/watchr" onclick="javascript:pageTracker._trackPageview ('/outbound/github.com');">Watchr</a>.</strong> Is the answer I have been looking for. Its simple. It doesn&#8217;t cared about mappings. It cares about patterns. Patterns you give it to detect, and patterns it should act on. Here is how I installed and use watchr.</p>
<p><strong>Installing Watchr</strong><br />
<code><br />
gem install watchr --source http://gemcutter.org<br />
</code><br />
you might consider installing &#8216;redgreen&#8217; as well.<br />
<code><br />
gem install mynyml-redgreen --source http://gemcutter.org<br />
</code><br />
<strong> Configuration</strong><br />
Add an ruby config file to your project root. The follow was based upon an watchr included test:</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># --------------------------------------------------</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> run<span style="color:#006600; font-weight:bold;">&#40;</span>cmd<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">puts</span><span style="color:#006600; font-weight:bold;">&#40;</span>cmd<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#CC0066; font-weight:bold;">system</span><span style="color:#006600; font-weight:bold;">&#40;</span>cmd<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">def</span> run_all_tests
<span style="color:#008000; font-style:italic;"># see Rakefile for the definition of the test:all task</span>
<span style="color:#CC0066; font-weight:bold;">system</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">&quot;rake -s test:all VERBOSE=true&quot;</span> <span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
watch<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">'^vendor/plugins/(.*)/app/controllers/admin/(.*)<span style="color:#000099;">\.</span>rb'</span><span style="color:#006600; font-weight:bold;">&#41;</span>   <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>m<span style="color:#006600; font-weight:bold;">|</span> run<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">&quot;ruby -Ilib vendor/plugins/#{m[1]}/test/test_helper .rb -Itest vendor/plugins/#{m[1]}/test/functional/admin/%s_test.rb&quot;</span>  <span style="color:#006600; font-weight:bold;">%</span> m<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
watch<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">'^vendor/plugins/(.*)/test/functional/admin/(.*)_test<span style="color:#000099;">\.</span>rb'</span><span style="color:#006600; font-weight:bold;">&#41;</span>   <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>m<span style="color:#006600; font-weight:bold;">|</span> run<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">&quot;ruby -Itest %s&quot;</span>                                                  <span style="color:#006600; font-weight:bold;">%</span> m<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
watch<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">'^vendor/plugins/(.*)/app/models/admin/(.*)<span style="color:#000099;">\.</span>rb'</span><span style="color:#006600; font-weight:bold;">&#41;</span>   <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>m<span style="color:#006600; font-weight:bold;">|</span> run<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">&quot;ruby -Ilib vendor/plugins/#{m[1]}/test/test_helper -Itest vendor/plugins/#{m[1]}/test/unit/admin/%s_test.rb&quot;</span>             <span style="color:#006600; font-weight:bold;">%</span> m<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
watch<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">'^vendor/plugins/(.*)/test/unit/admin/(.*)_test<span style="color:#000099;">\.</span>rb'</span><span style="color:#006600; font-weight:bold;">&#41;</span>   <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>m<span style="color:#006600; font-weight:bold;">|</span> run<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">&quot;ruby -Itest %s&quot;</span>                                                        <span style="color:#006600; font-weight:bold;">%</span> m<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
watch<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">'^vendor/plugins/(.*)/app/controllers/(.*)<span style="color:#000099;">\.</span>rb'</span><span style="color:#006600; font-weight:bold;">&#41;</span>         <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>m<span style="color:#006600; font-weight:bold;">|</span> run<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">&quot;ruby -Ilib vendor/plugins/#{m[1]}/test/test_helper -Itest vendor/plugins/#{m[1]}/test/functional/%s_test.rb&quot;</span>        <span style="color:#006600; font-weight:bold;">%</span> m<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
watch<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">'^vendor/plugins/(.*)/test/functional/(.*)_test<span style="color:#000099;">\.</span>rb'</span><span style="color:#006600; font-weight:bold;">&#41;</span>   <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>m<span style="color:#006600; font-weight:bold;">|</span> run<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">&quot;ruby -Itest %s&quot;</span>                                                        <span style="color:#006600; font-weight:bold;">%</span> m<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
watch<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">'^vendor/plugins/(.*)/app/models/(.*)<span style="color:#000099;">\.</span>rb'</span><span style="color:#006600; font-weight:bold;">&#41;</span>   <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>m<span style="color:#006600; font-weight:bold;">|</span> run<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">&quot;ruby -Ilib vendor/plugins/#{m[1]}/test/test_helper -Itest vendor/plugins/#{m[1]}/test/unit/%s_test.rb&quot;</span>                         <span style="color:#006600; font-weight:bold;">%</span> m<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
watch<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">'^vendor/plugins/(.*)/test/unit/(.*)_test<span style="color:#000099;">\.</span>rb'</span><span style="color:#006600; font-weight:bold;">&#41;</span>   <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>m<span style="color:#006600; font-weight:bold;">|</span> run<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#996600;">&quot;ruby -Itest %s&quot;</span>                                                              <span style="color:#006600; font-weight:bold;">%</span> m<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># --------------------------------------------------</span>
<span style="color:#008000; font-style:italic;"># Signal Handling</span>
<span style="color:#008000; font-style:italic;"># --------------------------------------------------</span>
<span style="color:#008000; font-style:italic;"># Ctrl-\</span>
<span style="color:#CC00FF; font-weight:bold;">Signal</span>.<span style="color:#CC0066; font-weight:bold;">trap</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'QUIT'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot; --- Running all tests ---<span style="color:#000099;">\n</span><span style="color:#000099;">\n</span>&quot;</span>
run_all_tests
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Ctrl-C</span>
<span style="color:#CC00FF; font-weight:bold;">Signal</span>.<span style="color:#CC0066; font-weight:bold;">trap</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'INT'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> abort<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span></pre></div></div>

<p><strong> Running Watchr</strong><br />
The project page says that watchr should have installed in your path after installation, but that didn&#8217;t happen for me. I added a symbolic link to the executable watchr.rb<br />
<code><br />
ln -s /Library/Ruby/Gems/1.8/gems/watchr-0.5.9/bin/watchr /usr/local/bin<br />
</code><br />
From your project root run:<br />
<code><br />
watchr project.rb<br />
</code><img class="alignleft size-thumbnail wp-image-199" title="iStock_000008970603XSmall" src="http://codedlite.com/blog/wp-content/uploads/2010/02/iStock_000008970603XSmall-150x150.jpg" alt="iStock_000008970603XSmall" width="150" height="150" />This works pretty well for me. At some point I would like to get growl working with watchr. I started out hoping to get Autotest to work for my situation, but ended up just glad there was a solution.</p>
<p>Thanks <a href=" http://mynyml.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/mynyml.com');">Martin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://codedlite.com/blog/?feed=rss2&amp;p=185</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://codedlite.com/blog/?p=185</feedburner:origLink></item>
		<item>
		<title>Testers are not human</title>
		<link>http://feedproxy.google.com/~r/Codedlite/~3/CWJepSCS3VU/</link>
		<comments>http://codedlite.com/blog/?p=166#comments</comments>
		<pubDate>Mon, 08 Feb 2010 14:24:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://codedlite.com/blog/?p=166</guid>
		<description><![CDATA[My work is about writing software. My software, my code must be tested. This company employs Quality Control specialists. Their job is to make me weep, so that i don&#8217;t make the client/user cry after using my software. They are well trained at their craft.
The interesting and crazy things they do in order to cause [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">My work is about writing software. My software, my code must be tested. This company employs Quality Control specialists. Their job is to make me weep, so that i don&#8217;t make the client/user cry after using my software. They are well trained at their craft.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">The interesting and crazy things they do in order to cause an error, borders on the lines of witchcraft and sorcery. My favorite issue belongs to the time, I was working on an Augmented reality project. QC determined that wear a shirt with a lot of strips caused the application to slow down. He was right. The pattern matching portion went into overdrive, when the web cam had a striped shirt in view. Having QC people goes a very long way towards pushing out high quality code. For this I believe that I am fortunate. For every bug/issue I resolve, they must go through the entire application on all &#8220;supported&#8221; browsers and Operating Systems. I&#8217;m left to believe some of the crazy things they find, no human will actually do. Tester are not human.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">It&#8217;s unreasonable to have the expectation that your application will pass a full quality control test the first round. Though a lofty goal, I would agree. A better goal would be, not to allow previously resolved bugs to creep back into the application. This is were unit test can be helpful. Fix a bug, build a supporting test, move on.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Working on applications built with a Ruby on Rails foundation, there are many testing libraries to start from. TestUnit, Shoulda, RSpec, Cucumber plus more, makes for an interesting selection. Theses testers are not human. More like the Borg in my mind. Always growing in numbers and adapting to their environment. No emotion, you either passed or failed.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">But no matter which library you choose, as your application grows in size, so does number of tests. Running the full suite of tests could take several minutes.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Tools like Autotest help make this less painful. Autotest is all about mappings. It maps unit tests to their appointed piece of the application. When a file is saved which has an Autotest mapping, Autotest will run the mapped test. For example, BlogController belongs to the BlogControllerTest functional test. If I were to edit the BlogController, Autotest would run my BlogControllerTest. I would know with in seconds if my edit has caused testing errors. There is a problem with Autotest though. Autotest doesn&#8217;t understand namespacing. In my next article, I will discuss what that means, and what my solution was.</div>
<p><img class="alignleft size-medium wp-image-169" title="Google Reader (242)" src="http://codedlite.com/blog/wp-content/uploads/2010/02/Google-Reader-242-300x207.png" alt="Google Reader (242)" width="300" height="207" /> My work is about writing software. My software, my code must be tested. This company employs Quality Control specialists. Their job is to make me weep, so that i don&#8217;t make the client/user cry after using my software. They are well trained at their craft.</p>
<p>The interesting and crazy things they do in order to cause an error, borders on the lines of witchcraft and sorcery. My favorite issue belongs to the time, I was working on an Augmented reality project. QC determined that wear a shirt with a lot of strips caused the application to slow down. He was right. The pattern matching portion went into overdrive, when the web cam had a striped shirt in view.</p>
<p>Having QC people goes a very long way towards pushing out high quality code. For this I believe that I am fortunate. Every bug/issue I resolve, they must go through the entire application on all &#8220;supported&#8221; browsers and Operating Systems. I&#8217;m left to believe some of the crazy things they find, no human will actually do. Tester are not human.</p>
<p>It&#8217;s unreasonable to have the expectation that your application will pass a full quality control test the first round. Though a lofty goal, I would agree. A better goal would be, not to allow previously resolved bugs to creep back into the application. This is were unit test can be helpful. Fix a bug, build a supporting test, move on.</p>
<p><a href="http://en.wikipedia.org/wiki/Borg" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');"><img class="alignright size-medium wp-image-172" title="borg3.jpg 480×388 pixels" src="http://codedlite.com/blog/wp-content/uploads/2010/02/borg3.jpg-480×388-pixels-269x300.png" alt="borg3.jpg 480×388 pixels" width="113" height="126" /></a>Working on applications built with a Ruby on Rails foundation, there are many testing libraries to start from. TestUnit, <a href="http://thoughtbot.com/community/" onclick="javascript:pageTracker._trackPageview ('/outbound/thoughtbot.com');">Shoulda</a>, <a href="http://rspec.info/" onclick="javascript:pageTracker._trackPageview ('/outbound/rspec.info');">RSpec</a>, <a href="http://cukes.info/" onclick="javascript:pageTracker._trackPageview ('/outbound/cukes.info');">Cucumber</a> plus more, makes for an interesting selection. Theses testers are not human. More like the <a href="http://en.wikipedia.org/wiki/Borg" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikipedia.org');">Borg</a> in my mind. Always growing in numbers and adapting to their environment. No emotion, you either passed or failed.</p>
<p>But no matter which library you choose, as your application grows in size, so does number of tests. Running the full suite of tests could take several minutes.</p>
<p><a href="http://www.zenspider.com/ZSS/Products/ZenTest/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.zenspider.com');"><img class="alignleft size-thumbnail wp-image-178" title="ZenTest_ Automated test scaffolding for Ruby" src="http://codedlite.com/blog/wp-content/uploads/2010/02/ZenTest_-Automated-test-scaffolding-for-Ruby-150x150.png" alt="ZenTest_ Automated test scaffolding for Ruby" width="150" height="150" /></a>Tools like <a href="http://www.zenspider.com/ZSS/Products/ZenTest/" onclick="javascript:pageTracker._trackPageview ('/outbound/www.zenspider.com');">Autotest</a> help make this less painful. Mappings is what Autotest is all about. It maps unit tests to their appointed piece of the application. When a file is saved which has an Autotest mapping, Autotest will run the mapped test. For example, BlogController belongs to the BlogControllerTest functional test. If I were to edit the BlogController, Autotest would run my BlogControllerTest. I would know with in seconds if my edit has caused testing errors. There is a problem with Autotest though. Autotest doesn&#8217;t understand namespacing. In my next article, I will discuss what that means, and what my solution was.</p>
]]></content:encoded>
			<wfw:commentRss>http://codedlite.com/blog/?feed=rss2&amp;p=166</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codedlite.com/blog/?p=166</feedburner:origLink></item>
		<item>
		<title>Converting an XML file to a CSV file</title>
		<link>http://feedproxy.google.com/~r/Codedlite/~3/y3o-UV_TMYw/</link>
		<comments>http://codedlite.com/blog/?p=158#comments</comments>
		<pubDate>Fri, 20 Nov 2009 18:14:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://codedlite.com/blog/?p=158</guid>
		<description><![CDATA[Sometime I have the task, of converting a file from one format to the next. Here is my template for converting from XML to CSV using ruby.

require 'rexml/document'
 
xml_file = File.open("input.xml", "r")
csv_file = File.new("output.txt", "w")
 
# Header
csv_file.puts "field1, field2, field3\n"
 
xml = REXML::Document.new(xml_file)
xml.elements.each("array") do &#124;e&#124;
e.elements.each("node") do &#124;f&#124;
field1  = f.elements['field1'].text ? f.elements['field1'].text : ""
field2  [...]]]></description>
			<content:encoded><![CDATA[<p>Sometime I have the task, of converting a file from one format to the next. Here is my template for converting from XML to CSV using ruby.<br />
<code><br />
require 'rexml/document'</code></p>
<p><code> </code></p>
<p><code>xml_file = File.open("input.xml", "r")<br />
csv_file = File.new("output.txt", "w")</code></p>
<p><code> </code></p>
<p><code># Header<br />
csv_file.puts "field1, field2, field3\n"</code></p>
<p><code> </code></p>
<p><code>xml = REXML::Document.new(xml_file)</p>
<p>xml.elements.each("array") do |e|<br />
e.elements.each("node") do |f|</p>
<p>field1  = f.elements['field1'].text ? f.elements['field1'].text : ""<br />
field2  = f.elements['field2'].text  ? f.elements['field2'].text : ""<br />
field3  = f.elements['field3'].text ? f.elements['field3'].text : ""</p>
<p>csv_file.puts "#{field1}, #{field2}, #{field3}\n"</p>
<p></code></p>
<p><code> end<br />
end<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://codedlite.com/blog/?feed=rss2&amp;p=158</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codedlite.com/blog/?p=158</feedburner:origLink></item>
		<item>
		<title>Hacking the Canon point and shoot</title>
		<link>http://feedproxy.google.com/~r/Codedlite/~3/DwAOkcohwAA/</link>
		<comments>http://codedlite.com/blog/?p=138#comments</comments>
		<pubDate>Mon, 28 Sep 2009 02:04:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://codedlite.com/blog/?p=138</guid>
		<description><![CDATA[Computers and game consoles are not the only thing which can be hacked. Open source firmware can be loaded on to your camera. With the new firmware you can take RAW images, load automation scripts, use  a curve settings file, have an on screen histogram, and many other tweaks and settings. Here is my [...]]]></description>
			<content:encoded><![CDATA[<p>Computers and game consoles are not the only thing which can be hacked. Open source firmware can be loaded on to your camera. With the new firmware you can take RAW images, load automation scripts, use  a curve settings file, have an on screen histogram, and many other tweaks and settings. Here is my experience.</p>
<p><strong>Before</strong></p>
<p><strong><img class="alignnone size-medium wp-image-148" title="Cam-3" src="http://codedlite.com/blog/wp-content/uploads/2009/09/Cam-3-300x225.jpg" alt="Cam-3" width="300" height="225" /></strong></p>
<p><strong>After</strong></p>
<p><strong><img class="alignnone size-medium wp-image-149" title="Cam-4" src="http://codedlite.com/blog/wp-content/uploads/2009/09/Cam-4-300x225.jpg" alt="Cam-4" width="300" height="225" /></strong></p>
<h2><strong>Requirement:</strong></h2>
<ul>
<li>Canon Power Shot</li>
<li>SD Card reader</li>
<li>Firmware update <a href="http://mighty-hoernsche.de/" onclick="javascript:pageTracker._trackPageview ('/outbound/mighty-hoernsche.de');">FILES</a></li>
<li>Computer</li>
</ul>
<h2><strong>Directions:</strong></h2>
<p><strong>Step 1:</strong></p>
<p><strong> </strong>Download load the firmware which matches your Canon camera from <a href="http://mighty-hoernsche.de/" onclick="javascript:pageTracker._trackPageview ('/outbound/mighty-hoernsche.de');">here</a>. In my case I have a Canon SD600 so I used the <a href="http://mighty-hoernsche.de/bins/ixus60_sd600-100d-0.9.8-809-full.zip" onclick="javascript:pageTracker._trackPageview ('/outbound/mighty-hoernsche.de');">ixus60_sd600-100d</a> . Once you have the appropriate firmware move onto step 2.</p>
<p><img class="size-medium wp-image-141 alignnone" title="CHDK Download - build 0.9.8, revision #809" src="http://codedlite.com/blog/wp-content/uploads/2009/09/CHDK-Download-build-0.9.8-revision-809-300x226.jpg" alt="CHDK Download - build 0.9.8, revision #809" width="300" height="226" /></p>
<p><strong>Step 2:</strong></p>
<p><strong> </strong>On your computer,<strong> </strong>mount the SD card. Copy the contents of the firmware update onto the SD card.</p>
<p><img class="size-medium wp-image-139 alignnone" title="ixus60_sd600-100d-0" src="http://codedlite.com/blog/wp-content/uploads/2009/09/ixus60_sd600-100d-0-300x138.jpg" alt="ixus60_sd600-100d-0" width="300" height="138" /></p>
<p><strong>Step 3:</strong></p>
<p><strong> </strong>Load the SD card back in the camera. With the power off, set the camera to playback mode.</p>
<p><img class="alignnone size-medium wp-image-144" title="Screen shot 2009-09-27 at 9.14.09 PM" src="http://codedlite.com/blog/wp-content/uploads/2009/09/Screen-shot-2009-09-27-at-9.14.09-PM-300x203.jpg" alt="Screen shot 2009-09-27 at 9.14.09 PM" width="300" height="203" /></p>
<p><strong>Step 4:</strong></p>
<p><strong> </strong>Turn on the camera. Press the &#8220;Menu&#8221; button. On the first tab of the menu select the firmware update function. It will be the bottom most option.</p>
<p><img class="alignnone size-medium wp-image-145" title="Cam" src="http://codedlite.com/blog/wp-content/uploads/2009/09/Cam-300x225.jpg" alt="Cam" width="300" height="225" /></p>
<p><img class="alignnone size-medium wp-image-146" title="Cam-1" src="http://codedlite.com/blog/wp-content/uploads/2009/09/Cam-1-300x225.jpg" alt="Cam-1" width="300" height="225" /></p>
<p><strong>Finally:</strong></p>
<p><strong> </strong>You will know it worked if you see the camera reboot with the new firmware logo for a couple seconds.</p>
<p><img class="alignnone size-medium wp-image-147" title="Cam-2" src="http://codedlite.com/blog/wp-content/uploads/2009/09/Cam-2-300x225.jpg" alt="Cam-2" width="300" height="225" /></p>
]]></content:encoded>
			<wfw:commentRss>http://codedlite.com/blog/?feed=rss2&amp;p=138</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codedlite.com/blog/?p=138</feedburner:origLink></item>
		<item>
		<title>Personal Encryption</title>
		<link>http://feedproxy.google.com/~r/Codedlite/~3/01s7G9abEw8/</link>
		<comments>http://codedlite.com/blog/?p=117#comments</comments>
		<pubDate>Mon, 10 Aug 2009 05:43:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://codedlite.com/blog/?p=117</guid>
		<description><![CDATA[How do you decide on your passwords? Here are a few ways I have seen others done:
* Memorable one word e.g. *&#8221;Niiiiiiice&#8221;
* Memorable one word including pseudo randomness e.g. &#8220;7pumkin33&#8243;
* Merabable phrase e.g. &#8220;TwoCatsInTheGarden&#8221;
For many, it can be a challenge to dream up a &#8220;good&#8221; password. Thinking since it shouldn&#8217;t be written down, that it [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://codedlite.com/blog/wp-content/uploads/2009/08/Safe-Place-color.jpg-298×299-pixels-2.png" border="0" alt="Safe Place color.jpg 298×299 pixels-2.png" width="296" height="320" align="left" />How do you decide on your passwords? Here are a few ways I have seen others done:</p>
<p>* Memorable one word <em>e.g. *&#8221;Niiiiiiice&#8221;</em><br />
* Memorable one word including pseudo randomness <em>e.g. &#8220;7pumkin33&#8243;</em><br />
* Merabable phrase <em>e.g. &#8220;TwoCatsInTheGarden&#8221;</em></p>
<p>For many, it can be a challenge to dream up a &#8220;good&#8221; password. Thinking since it shouldn&#8217;t be written down, that it must be memorable.<br />
What I have seen happen and have been guilty of this myself is that, we didn&#8217;t always know about what makes a good password and the inevitable need for more then one. When we signed up for that AOL account back in the 90s, the password we used then still comes to mind.</p>
<p>The first example I gave of &#8220;Niiiiiiice&#8221;, that was a <strong>root password</strong> of noted Security researcher Dan Kaminsky. He was recently shamed by a group of BlackHat hackers which owned one of his server.</p>
<p>When you are responsible for more then a few machines,<strong> password management</strong> becomes critical. I&#8217;ve seen spreadsheets and text files used for this. When an admin needs access to a machine, he will reference his document.</p>
<p>Rather then the memorable types noted above, Systems Admins typically use strong passwords. There was nothing memorable about the passwords I&#8217;ve seen from them. Documents that contain these passwords are only as safe as the location the user keeps them. If the admins system is compromised, so are all them system he manages.</p>
<p>One possible solution is to also password protect and encrypt the document right? Not really. Most likely that password is short and memorable. So what is the solution?</p>
<p>I would suggest that <strong>personal encryption</strong> might be the key. The name is something I have made up, however the method is not. Here is the concept. Let&#8217;s say you have this passwords &#8220;1T8Ft8\P-X#9le&#8221;. This password is written down on your document. Before using it on a system, add your<strong> memorable unwritten key</strong> &#8220;peerless&#8221; someplace in the middle of the password. In practice the password would be used like this &#8220;1T8Ft<strong>peerless</strong>8\P-X#9le&#8221;. Peerless is your personal encryption key. No one should know this, and the password should never be written down with the key included.</p>
<p><strong>Personal encryption</strong> in practice does not give us an excuse to write passwords on the walls. We should still take every precaution as usual.</p>
]]></content:encoded>
			<wfw:commentRss>http://codedlite.com/blog/?feed=rss2&amp;p=117</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codedlite.com/blog/?p=117</feedburner:origLink></item>
		<item>
		<title>Ruby Toolbox</title>
		<link>http://feedproxy.google.com/~r/Codedlite/~3/JGspNpStQR4/</link>
		<comments>http://codedlite.com/blog/?p=96#comments</comments>
		<pubDate>Thu, 09 Jul 2009 14:58:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://codedlite.com/blog/?p=96</guid>
		<description><![CDATA[I just wanted to quickly share a recent find.  Ruby Toolbox is a community driven site, were people can vote on their plugin/gem of choice. It doesn&#8217;t always make since to build functionality from scratch. However knowing which gem to uses for your business problem is not always obvious. Also, when you are not happy [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-97" title="The Ruby Toolbox_ Know your options!" src="http://codedlite.com/blog/wp-content/uploads/2009/07/The-Ruby-Toolbox_-Know-your-options.png" alt="The Ruby Toolbox_ Know your options!" width="237" height="216" />I just wanted to quickly share a recent find.  <a href="http://ruby-toolbox.com/" onclick="javascript:pageTracker._trackPageview ('/outbound/ruby-toolbox.com');">Ruby Toolbox </a>is a community driven site, were people can vote on their plugin/gem of choice. It doesn&#8217;t always make since to build functionality from scratch. However knowing which gem to uses for your business problem is not always obvious. Also, when you are not happy with the most popular plugin or gem, its good to know that you are not <em>pidgon holed</em>. You have options, and at a glace you can see what those options are.</p>
]]></content:encoded>
			<wfw:commentRss>http://codedlite.com/blog/?feed=rss2&amp;p=96</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://codedlite.com/blog/?p=96</feedburner:origLink></item>
		<item>
		<title>Grilling Tips from Nathan’s Kitchen</title>
		<link>http://feedproxy.google.com/~r/Codedlite/~3/Bp-bzNGbefc/</link>
		<comments>http://codedlite.com/blog/?p=93#comments</comments>
		<pubDate>Thu, 02 Jul 2009 18:51:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Off Topic]]></category>

		<guid isPermaLink="false">http://codedlite.com/blog/?p=93</guid>
		<description><![CDATA[Here&#8217;s tips on the road to the perfectly grilled hamburger.

Make sure the grill is hot before adding the patties.
Only flip the burger once.
The burger is ready for flipping when the juices start to come out the top.
Do not press the down while it&#8217;s being grilled.

]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s tips on the road to the perfectly grilled hamburger.</p>
<ul>
<li>Make sure the grill is hot before adding the patties.</li>
<li>Only flip the burger once.</li>
<li>The burger is ready for flipping when the juices start to come out the top.</li>
<li>Do not press the down while it&#8217;s being grilled.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://codedlite.com/blog/?feed=rss2&amp;p=93</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://codedlite.com/blog/?p=93</feedburner:origLink></item>
	</channel>
</rss>
