<?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>andHapp &#187; ruby</title>
	<atom:link href="http://www.andhapp.com/blog/tag/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andhapp.com/blog</link>
	<description>Failure is yours</description>
	<lastBuildDate>Sun, 03 Mar 2013 19:46:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>What I learnt by presenting at SRUG</title>
		<link>http://www.andhapp.com/blog/2011/04/10/what-i-learnt-by-presenting-at-srug/</link>
		<comments>http://www.andhapp.com/blog/2011/04/10/what-i-learnt-by-presenting-at-srug/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 19:24:40 +0000</pubDate>
		<dc:creator>andhapp</dc:creator>
				<category><![CDATA[Presentation]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Srug]]></category>

		<guid isPermaLink="false">http://www.andhapp.com/blog/?p=480</guid>
		<description><![CDATA[I always wanted to do a technical presentation and it finally happened on 29th March 2011 at Woking. I just think putting yourself in front of 20-30 people and to respond to their queries is a courageous task and I am quite pleased to have experienced it now. Well, it all started off with a [...]]]></description>
			<content:encoded><![CDATA[<p>I always wanted to do a technical presentation and it finally happened on 29th March 2011 at Woking. I just think putting yourself in front of 20-30 people and to respond to their queries is a courageous task and I am quite pleased to have experienced it now. Well, it all started off with a simple email from the SRUG organiser and I dived head first. Since it was my first ever presentation, I was more inclined to pick an easy topic. I am thankful there that there is a <a href="http://surreyrubyists.uservoice.com/forums/100459-what-do-you-want-to-see-at-srug-">Surrey Ruby User Group&#8217;s Uservoice page</a> with several preferred topics and I decided to go for &#8220;Creating Gems&#8221;. You can find my presentation <a href="https://github.com/andhapp/srug-presentation">&#8220;Creating Gems&#8221;</a> on github. I used <a href="https://github.com/schacon/showoff">showoff</a> gem along with a simple screencast. </p>
<p>So, now here&#8217;s what I learnt from the whole experience. This is my personal feedback on my performance:</p>
<ul>
<li>Always, always and always carry all the equipment you might need on the day. For example: I did not have a Mini DV to VGA adapter to hook up with the projector which meant I had to go second.
</li>
<li>Check your presentation on different resolutions. Projector&#8217;s resolution can spoil the whole presentation. It works on my machine would just not cut it.
</li>
<li>I am still quite new to showoff gem and I should have spent more time exploring it. It&#8217;s quite amazing and you can do a ton of stuff with it but I still need to delve into it a bit more.
</li>
<li>Use an iPad to do your presentations. Jon (the fellow presenter on the night) was using an iPad and the whole experience was just amazing. </li>
</ul>
<p>and now on the funny side:</p>
<p>There&#8217;s a twitter user called <a href="http://twitter.com/killallclients">killallclients</a>. Hilarious stories in that stream and ofcourse you know that such presentations are amazing for networking and meeting people who could offer you work in the future. I was quite disappointed by my presentation and I am working on improving it next time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andhapp.com/blog/2011/04/10/what-i-learnt-by-presenting-at-srug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Designer code meet</title>
		<link>http://www.andhapp.com/blog/2011/01/07/designer-code-meet/</link>
		<comments>http://www.andhapp.com/blog/2011/01/07/designer-code-meet/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 06:47:41 +0000</pubDate>
		<dc:creator>andhapp</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Kata]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.andhapp.com/blog/?p=465</guid>
		<description><![CDATA[Do you write Designer code? Well, this was the topic of Chris Parsons&#8217;s (eden developments) talk on Thursday evening. The presentation was top-notch and so was the exercise afterwards. I was lucky enough to pair up with James Adams (from Go Free Range) and a ruby stalwart. We ended up refactoring some nasty piece of [...]]]></description>
			<content:encoded><![CDATA[<p>Do you write Designer code? </p>
<p>Well, this was the topic of <a href="https://github.com/chrismdp">Chris Parsons&#8217;s</a> (<a href="http://edendevelopment.co.uk/">eden developments</a>) talk on Thursday evening. The presentation was top-notch and so was the exercise afterwards. I was lucky enough to pair up with <a href="https://github.com/lazyatom">James Adams</a> (from <a href="http://gofreerange.com/">Go Free Range</a>) and a ruby stalwart. We ended up refactoring some nasty piece of code into designer code pretty quickly. It was a really nice experience after all. If you would like to have a go then, it lives in Chris&#8217;s <a href="https://github.com/chrismdp/checkout-kata">checkout-kata repository</a> under <a href="https://github.com/chrismdp/checkout-kata/tree/obfuscated">obfuscated branch</a>. </p>
<p>The problem is our own <a href="http://codekata.pragprog.com/2007/01/kata_nine_back_.html">checkout problem</a>, which I am sure you have come across before.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andhapp.com/blog/2011/01/07/designer-code-meet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails mentoring</title>
		<link>http://www.andhapp.com/blog/2010/11/12/rails-mentoring/</link>
		<comments>http://www.andhapp.com/blog/2010/11/12/rails-mentoring/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 00:58:19 +0000</pubDate>
		<dc:creator>andhapp</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[mentor]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.andhapp.com/blog/?p=431</guid>
		<description><![CDATA[A great way to learn is by teaching others. Why? Because explaining solutions to others gives you a greater understanding of the problem and the solution itself. I have never had any opportunities to really mentor anyone before. Recently, I signed up to RailsMentors site as a mentor and few weeks after that I actually [...]]]></description>
			<content:encoded><![CDATA[<p>A great way to learn is by teaching others. Why? Because explaining solutions to others gives you a greater understanding of the problem and the solution itself. I have never had any opportunities to really mentor anyone before. Recently, I signed up to <a href="http://www.railsmentors.org/">RailsMentors</a> site as a mentor and few weeks after that I actually got a chance to help someone with their Rails issues. It has given me a good understanding of someone else&#8217;s approach to Rails and the places where they usually get stuck. It&#8217;s not just mentoring, you always find some nice tricks someone has used. </p>
<p>For instance, I helped him set up <a href="https://github.com/ryanb/cancan">CanCan</a> in the app and advised about using TDD (with Rspec and Cucumber). In addition, I suggested using faker along with factory_girl to seed the database and helped them with routing issues.</p>
<p>Learning is not just one way. I found this cool way in javascript to load and use a font from his code and it was fun and satisfying helping someone out with their issues. Here&#8217;s a <a href="http://www.railsmentors.org/users/918/testimonials">proof</a> of my performance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andhapp.com/blog/2010/11/12/rails-mentoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reading Open Source Code</title>
		<link>http://www.andhapp.com/blog/2010/08/22/reading-open-source-code/</link>
		<comments>http://www.andhapp.com/blog/2010/08/22/reading-open-source-code/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 08:08:11 +0000</pubDate>
		<dc:creator>andhapp</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.andhapp.com/blog/?p=411</guid>
		<description><![CDATA[I was very confused the first time I heard this phrase &#8211; &#8220;Read Open source code&#8221;. I could not really grasp the concept of reading someone else&#8217;s code. How can that improve your own programming skills? But, I can safely say that it does help. Two things that I found out recently, both reading some [...]]]></description>
			<content:encoded><![CDATA[<p>I was very confused the first time I heard this phrase &#8211; &#8220;Read Open source code&#8221;. I could not really grasp the concept of reading someone else&#8217;s code. How can that improve your own programming skills? But, I can safely say that it does help. Two things that I found out recently, both reading some open source code. Here they are:</p>
<p>1. I found this trick used in Paperclip&#8217;s code. <strong>rescue</strong> is basically to catch the exceptions and do the needful but one can use them inline. Let us look at an example:</p>
<pre>
# Usual Way
begin
  1/0
rescue => e
  puts "Exception"
end

# Cool way
1/0 rescue "exception"
</pre>
<p>We all know what the first approach does. The second one is quite simple as well. Execute the code followed by rescue if there is an exception in the code before rescue. Now, I will agree that both approach has it merits but still the second one is much cooler and neater.</p>
<p>2. Passenger is an amazing, cutting-edge library that I usually read through and there is something very interesting I found in the <a href="http://github.com/FooBarWidget/passenger/blob/master/lib/phusion_passenger/utils.rb#L426">code</a>. There is a library in ruby called <a href="http://ruby-doc.org/stdlib/libdoc/etc/rdoc/index.html">Etc</a> that allows one to query stuff like the current user and so on. I had no idea one could do it.</p>
<p>Well, every programmer should read other&#8217;s code and his own code from time to time to see what he could improve and where we went wrong.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andhapp.com/blog/2010/08/22/reading-open-source-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extend Paperclip 2.3.1.1 to retrieve attachment&#8217;s dimensions in Rails 2.3.8</title>
		<link>http://www.andhapp.com/blog/2010/07/07/extend-paperclip-to-retrieve-images-dimensions/</link>
		<comments>http://www.andhapp.com/blog/2010/07/07/extend-paperclip-to-retrieve-images-dimensions/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 13:41:45 +0000</pubDate>
		<dc:creator>andhapp</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[paperclip]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.andhapp.com/blog/?p=395</guid>
		<description><![CDATA[In my previous post, I mentioned a way of validating the size of the attachment and I did warn readers that it is a monkey-patch and it needs serious refactoring. Big refactoring is a result of several small ones and that&#8217;s exactly what I have done here. I have extracted the code out and it [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://www.andhapp.com/blog/2010/07/07/paperclip-and-validate-the-attachment-dimension/">previous</a> post, I mentioned a way of validating the size of the attachment and I did <strong>warn</strong> readers that it is a monkey-patch and it needs serious refactoring.</p>
<p>Big refactoring is a result of several small ones and that&#8217;s exactly what I have done here. I have extracted the code out and it looks much neater now. As a result, I have reduced my technical debt and in the process gained a better understanding of Paperclip. </p>
<p><strong>Objective:</strong><br />
1. Make code reusable, probably extract it out and then use Ruby&#8217;s magic to add it straight to Paperclip. So, that next time I can just use it without doing all the extra work.<br />
2. Make the existing code neat.<br />
3. To retrieve the width and height of the attachment.</p>
<p>This is where we left the code last time:</p>
<pre>
class Dummy < ActiveRecord::Base
   has_attached_file :photo
   def validate
     temp_file = photo.queued_for_write[:original] #get the file that is being uploaded
     dimensions = Paperclip::Geometry.from_file(temp_file)
     if (dimensions.width > desired_width) || (dimensions.height > desired_height)
        errors.add("photo_size", "must be image size #{desired_width}x#{desired_height}.")
     end
   end
   def desired_height
      # retrieve it from a different model
   end
   def desired_width
     # retrieve it from a different model
   end
</pre>
<p>Above, I have used @queued_for_write to retrieve the attachment object but if this code changes in Paperclip and I am using it in, let us say 5 different places, I will have to fix it in all those places. I just don&#8217;t want to come back and change the code every time Paperclip changes anything. Therefore, this is plain wrong. Similarly, if the Paperclip::Geometry&#8217;s API changes, I will have to endure the same painful process yet again. Therefore, it becomes essential to extract this code out into its own module and then it&#8217;s all in one place. Right, so I created a module, as below:</p>
<pre>
module Paperclip
  module Dimension

    # calculates width using processor
    def width_of name
      return 0 unless path(name)
      Geometry.from_file(path(name)).width.to_i
    end

    # calculates height using processor
    def height_of name
      return 0 unless path(name)
      Geometry.from_file(path(name)).height.to_i
    end

    #path to the attachment
    def path name
      attachment_for(name).queued_for_write[:original]
    end

  end
end
</pre>
<p>I am instead using a method <a href="http://github.com/thoughtbot/paperclip/blob/master/lib/paperclip.rb#L372">attachment_for</a> within Paperclip. For example, if you have code like:</p>
<pre>
has_attached_file :photo
</pre>
<p>then, you can do something like:</p>
<pre>
attachment_for :photo
</pre>
<p>to get hold of the attachment object. But bear in mind, has_attached_file is a class method where as attachment_for is an instance method (I can&#8217;t really explain the difference here but the fact is they can&#8217;t be used in a similar way). This allows me to change the code in my model to something like this:</p>
<pre>
class Dummy < ActiveRecord::Base
   has_attached_file :photo
   def validate
     if width_of(:photo) > desired_width || height_of(:photo) > desired_height
        errors.add("photo_size", "must be image size #{desired_width}x#{desired_height}.")
     end
   end
   def desired_height
      # retrieve it from a different model
   end
   def desired_width
     # retrieve it from a different model
   end
</pre>
<p>Wow! That is clean and has the same syntax as has_attached_file. I don&#8217;t need to indulge in Paperclip&#8217;s nitty gritty. It&#8217;s in a different module. But you can&#8217;t run this code just yet. Because, it&#8217;s not hooked into my application yet. If you do run it, you should see NoMethodError on width_of. In order to hook this code up into our application, add the module to a file, let us name it, paperclip.rb and put it inside app_root/config/initializers/. </p>
<p>So, when the app starts up it will load this file but this module is nothing without the support of actual Paperclip. Therefore, to hook it into Paperclip, we will add the following line at the bottom and the module in it&#8217;s final state would look something like this:</p>
<pre>
module Paperclip
  module Dimension

    # calculates width using processor
    def width_of name
      return 0 unless path(name)
      Geometry.from_file(path(name)).width.to_i
    end

    # calculates height using processor
    def height_of name
      return 0 unless path(name)
      Geometry.from_file(path(name)).height.to_i
    end

    #path to the attachment
    def path name
      attachment_for(name).queued_for_write[:original]
    end

  end
end

Paperclip::InstanceMethods.send(:include, Paperclip::Dimension)
</pre>
<p>I am including our custom module inside Paperclip::InstanceMethods, which gets called when has_attached_file is <a href="http://github.com/thoughtbot/paperclip/blob/master/lib/paperclip.rb#L259">invoked</a> from within the model class and ensures all the instance methods are available to our model class.</p>
<p>Now, if you run it. It will work like a charm. By just adding this code to your initializers you can simply retrieve the width and height of the attachment. Here&#8217;s the <a href="http://gist.github.com/466691">gist</a> of the file, if you need it.</p>
<p>I hope it helps and for anyone interested, please go ahead and create a validator for dimensions just like we have one for size. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.andhapp.com/blog/2010/07/07/extend-paperclip-to-retrieve-images-dimensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gemcutter</title>
		<link>http://www.andhapp.com/blog/2009/12/31/gemcutter/</link>
		<comments>http://www.andhapp.com/blog/2009/12/31/gemcutter/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 23:26:52 +0000</pubDate>
		<dc:creator>andhapp</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[gemcutter]]></category>
		<category><![CDATA[gitHub]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.andhapp.com/blog/?p=342</guid>
		<description><![CDATA[Well, if you work with ruby and rails and you do not know what Gemcutter is then its time for you to come out of the rock you have been living under. It is the awesome gem hosting service that has in time replaced rubyforge for good. And, now I am an official contributor to [...]]]></description>
			<content:encoded><![CDATA[<p>Well, if you work with ruby and rails and you do not know what <a href="http://gemcutter.org">Gemcutter</a> is then its time for you to come out of the rock you have been living under. It is the awesome gem hosting service that has in time replaced rubyforge for good. </p>
<p>And, now I am an official contributor to such a incredible application. Yes, I added a <a href="http://github.com/andhapp/gemcutter/tree/feature-116">feature</a> in and it has been merged into the main production branch due for release very soon. And, I am now sitting along the likes of <a href="http://onestepback.org/">Jim Weirich</a> in the contributors <a href="http://twitter.com/rubygemcutter/contributors">list</a>. Awesome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andhapp.com/blog/2009/12/31/gemcutter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IRB on roids</title>
		<link>http://www.andhapp.com/blog/2009/11/24/irb-on-roids/</link>
		<comments>http://www.andhapp.com/blog/2009/11/24/irb-on-roids/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 04:56:50 +0000</pubDate>
		<dc:creator>andhapp</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.andhapp.com/blog/?p=333</guid>
		<description><![CDATA[Any ruby developer knows about the interactive ruby shell or in short irb and I am quite sure they use it everyday for quickly testing little scripts out. And Rails offers its own console which is basically irb with rails framework loaded with a valid database connection for performing quick tests. Now, in order to [...]]]></description>
			<content:encoded><![CDATA[<p>Any ruby developer knows about the interactive ruby shell or in short irb and I am quite sure they use it everyday for quickly testing little scripts out. And Rails offers its own console which is basically irb with rails framework loaded with a valid database connection for performing quick tests. Now, in order to make it easy on your eyes one can change the default output of activerecords in console. But the question remains how? Well, I found a gem called <a href="http://tagaholic.me/2009/03/13/hirb-irb-on-the-good-stuff.html">hirb</a> which simply does that for you. It is quite easy to install and configure and it improves the overall formatting by leaps and bounds. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.andhapp.com/blog/2009/11/24/irb-on-roids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby 1.9</title>
		<link>http://www.andhapp.com/blog/2009/09/30/ruby-19/</link>
		<comments>http://www.andhapp.com/blog/2009/09/30/ruby-19/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 19:35:27 +0000</pubDate>
		<dc:creator>andhapp</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.andhapp.com/blog/?p=291</guid>
		<description><![CDATA[I was looking for the hash syntax in Ruby 1.9 as I could recollect that it has changed but did not remember it exactly and discovered this site that has all the changes in Ruby 1.9 in one place and in order. I know you can read &#8220;Programming Ruby 1.9&#8221; by Dave Thomas but then [...]]]></description>
			<content:encoded><![CDATA[<p>I was looking for the hash syntax in Ruby 1.9 as I could recollect that it has changed but did not remember it exactly and discovered <a href="http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9">this site</a> that has all the changes in Ruby 1.9 in one place and in order. I know you can read &#8220;<a href="http://www.amazon.com/Programming-Ruby-1-9-Pragmatic-Programmers/dp/1934356085">Programming Ruby 1.9</a>&#8221; by <a href="http://en.wikipedia.org/wiki/Dave_Thomas_%28programmer%29">Dave Thomas</a> but then again this site would be extremely handy when you are upgrading your gems to Ruby 1.9. I wonder how many people have actually started using ruby 1.9. I do have it installed as a different <a href="http://wonko.com/post/how-to-compile-ruby-191">binary</a> (ruby19) but I have not been using it really. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.andhapp.com/blog/2009/09/30/ruby-19/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I love metaprogramming</title>
		<link>http://www.andhapp.com/blog/2009/09/28/i-love-metaprogramming/</link>
		<comments>http://www.andhapp.com/blog/2009/09/28/i-love-metaprogramming/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 13:54:59 +0000</pubDate>
		<dc:creator>andhapp</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[metaprogramming]]></category>

		<guid isPermaLink="false">http://www.andhapp.com/blog/?p=289</guid>
		<description><![CDATA[I have almost finished the 80% of ruby metaprogramming course and I am loving it. Really, writing a complete class without writing the code below. This is so old way of writing code&#8230;nah just kidding. class People end Also, declaring the instance methods and using class_eval just obfuscates the code. Awesome. I will share the [...]]]></description>
			<content:encoded><![CDATA[<p>I have almost finished the 80% of ruby metaprogramming course and I am loving it. Really, writing a complete class without writing the code below. This is so old way of writing code&#8230;nah just kidding.</p>
<pre>
class People
end
</pre>
<p>Also, declaring the instance methods and using class_eval just obfuscates the code. Awesome. I will share the code here once I have finished it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andhapp.com/blog/2009/09/28/i-love-metaprogramming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby software debt</title>
		<link>http://www.andhapp.com/blog/2009/09/25/ruby-software-debt/</link>
		<comments>http://www.andhapp.com/blog/2009/09/25/ruby-software-debt/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 20:10:35 +0000</pubDate>
		<dc:creator>andhapp</dc:creator>
				<category><![CDATA[app]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[software debt]]></category>

		<guid isPermaLink="false">http://www.andhapp.com/blog/?p=287</guid>
		<description><![CDATA[Found ruby code smell detector, called Reek. Here&#8217;s a report for thughtbot&#8217;s clearance. Powerful stuff. Time to run it through my code.]]></description>
			<content:encoded><![CDATA[<p>Found ruby code smell detector, called <a href="http://wiki.github.com/kevinrutherford/reek">Reek</a>. Here&#8217;s a report for thughtbot&#8217;s <a href="http://metrics.thoughtbot.com/clearance/output/reek.html">clearance</a>. Powerful stuff. Time to run it through my code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andhapp.com/blog/2009/09/25/ruby-software-debt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
