<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-US">
  <title>Softies on Rails - Home</title>
  <id>tag:www.softiesonrails.com,2009:mephisto/</id>
  <generator version="0.7.3" uri="http://mephistoblog.com">Mephisto Noh-Varr</generator>
  
  <link href="http://www.softiesonrails.com/" rel="alternate" type="text/html" />
  <updated>2009-10-26T15:59:35Z</updated>
  <geo:lat>41.900332</geo:lat><geo:long>-87.669276</geo:long><link rel="self" href="http://feeds.feedburner.com/SoftiesOnRails" type="application/atom+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-10-26:35999</id>
    <published>2009-10-26T15:59:00Z</published>
    <updated>2009-10-26T15:59:35Z</updated>
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/6tp9NlnZDWw/ruby-job-opening" rel="alternate" type="text/html" />
    <title>Ruby Job Opening</title>
<content type="html">
            &lt;p&gt;I’ve got a Ruby Software Engineering position open on my team at Leapfrog Online, in Evanston, IL.&lt;/p&gt;


	&lt;p&gt;The ideal Rails candidate has:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Real-world experience using &lt;span class="caps"&gt;MVC&lt;/span&gt; frameworks to build high-traffic web sites and applications. While we don’t expect any graphic design skills from our developers, candidates should be well-versed in the world of &lt;span class="caps"&gt;HTML&lt;/span&gt;, CSS and Javascript/Ajax.  Knowing how to develop RESTful applications is a big plus.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;A love of testing and test-driven development.  You should know how to write standard Rails unit tests, and/or a popular specification framework like RSpec, shoulda, Cucumber, etc.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Real-world experience with Agile engineering practices (test-driven development, object-oriented design, refactoring, &lt;span class="caps"&gt;DRY&lt;/span&gt;, YAGNI)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Thorough understanding of common web and e-commerce concepts and technologies, such as: &lt;span class="caps"&gt;HTTP&lt;/span&gt;, SSL, &lt;span class="caps"&gt;XML&lt;/span&gt; and associated technologies, background job processing, message queues, content management concepts, public-key cryptography, application and data security and privacy issues, basic &lt;span class="caps"&gt;TCP&lt;/span&gt;/IP networking.  Experience producing and consuming web services (SOAP, &lt;span class="caps"&gt;REST&lt;/span&gt;, XML-RPC) is a big plus.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Interested?  Email me  (cohen.jeff@gmail.com) or find me on twitter (@jeffcohen).&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=6tp9NlnZDWw:EEuX-8kckgU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=6tp9NlnZDWw:EEuX-8kckgU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=6tp9NlnZDWw:EEuX-8kckgU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=6tp9NlnZDWw:EEuX-8kckgU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=6tp9NlnZDWw:EEuX-8kckgU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=6tp9NlnZDWw:EEuX-8kckgU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/6tp9NlnZDWw" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/10/26/ruby-job-opening</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-10-01:35804</id>
    <published>2009-10-01T12:53:00Z</published>
    <updated>2009-10-01T12:53:37Z</updated>
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/gsAAlfDuRPo/last-call-for-rails-for-everyone" rel="alternate" type="text/html" />
    <title>Last Call for Rails for Everyone</title>
<content type="html">
            &lt;p&gt;Technically the registration window has closed, but if you sign up this week we’ll let you in.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://purpleworkshops.com/workshops/rails-for-everyone"&gt;Register now.&lt;/a&gt;&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=gsAAlfDuRPo:XRuJ5xDlb3Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=gsAAlfDuRPo:XRuJ5xDlb3Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=gsAAlfDuRPo:XRuJ5xDlb3Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=gsAAlfDuRPo:XRuJ5xDlb3Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=gsAAlfDuRPo:XRuJ5xDlb3Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=gsAAlfDuRPo:XRuJ5xDlb3Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/gsAAlfDuRPo" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/10/1/last-call-for-rails-for-everyone</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-08-21:35567</id>
    <published>2009-08-21T11:43:00Z</published>
    <updated>2009-08-21T11:44:44Z</updated>
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/-AnHpdmM_R0/registration-now-open-for-essential-javascript" rel="alternate" type="text/html" />
    <title>Registration Now Open for Essential Javascript</title>
<content type="html">
            &lt;p&gt;Registration is now open for &lt;a href="http://www.purpleworkshops.com/workshops/essential-javascript"&gt;Essential Javascript with jQuery&lt;/a&gt;, a one-day, action-packed, fun-filled workshop for everyone that wants to learn how to integrate Javascript into their .NET, Rails, &lt;span class="caps"&gt;PHP&lt;/span&gt;, or straight-HTML web applications.&lt;/p&gt;


	&lt;p&gt;We’ve secured a great location right in the heart of Chicago’s downtown (right across the street from the Sears Tower, in fact).&lt;/p&gt;


	&lt;p&gt;If you’ve been wanting to learn Javascript, our friendly, inclusive workshop is the place for you.&lt;/p&gt;


	&lt;p&gt;Seats are limited, so register today.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=-AnHpdmM_R0:_VMkt6prEDo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=-AnHpdmM_R0:_VMkt6prEDo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=-AnHpdmM_R0:_VMkt6prEDo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=-AnHpdmM_R0:_VMkt6prEDo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=-AnHpdmM_R0:_VMkt6prEDo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=-AnHpdmM_R0:_VMkt6prEDo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/-AnHpdmM_R0" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/8/21/registration-now-open-for-essential-javascript</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-08-16:35540</id>
    <published>2009-08-16T19:38:00Z</published>
    <updated>2009-08-16T19:39:06Z</updated>
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/8uh5NaysiZ4/rt-the-learnometer" rel="alternate" type="text/html" />
    <title>RT The Learnometer</title>
<content type="html">
            &lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2411/2473030335_7c5a099034.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/bbqjunkie/2473030335/"&gt;Photo credit&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;New article posted on the &lt;a href="http://www.purpleworkshops.com/blog"&gt;Purple blog&lt;/a&gt; called &lt;a href="http://www.purpleworkshops.com/articles/learnometer"&gt;The Learnometer&lt;/a&gt;.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=8uh5NaysiZ4:Hdin-Uc-1YM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=8uh5NaysiZ4:Hdin-Uc-1YM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=8uh5NaysiZ4:Hdin-Uc-1YM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=8uh5NaysiZ4:Hdin-Uc-1YM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=8uh5NaysiZ4:Hdin-Uc-1YM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=8uh5NaysiZ4:Hdin-Uc-1YM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/8uh5NaysiZ4" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/8/16/rt-the-learnometer</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-08-04:35428</id>
    <published>2009-08-04T20:48:00Z</published>
    <updated>2009-08-04T20:49:37Z</updated>
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/0ZbihPdlbBA/survey-for-windycityrails-tutorial-attendees" rel="alternate" type="text/html" />
    <title>Survey For WindyCityRails Tutorial Attendees</title>
<content type="html">
            &lt;p&gt;For those of you coming to the morning tutorial at &lt;a href="http://www.windycityrails.org/sessions"&gt;WindyCityRails&lt;/a&gt;, I’d like to customize the session to make it even better for those who are coming.&lt;/p&gt;


	&lt;p&gt;This 3-question survey will take no more than 24 seconds of your time:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://surveys.polldaddy.com/s/09DFC83876BE7FDA/"&gt;Click here to take the survey here.&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;For those of you still on the fence, what are you waiting for?  It’s coming right up on September 12, 2009, so &lt;a href="http://www.windycityrails.org/register"&gt;sign up today.&lt;/a&gt;&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=0ZbihPdlbBA:LrMuHlei_38:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=0ZbihPdlbBA:LrMuHlei_38:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=0ZbihPdlbBA:LrMuHlei_38:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=0ZbihPdlbBA:LrMuHlei_38:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=0ZbihPdlbBA:LrMuHlei_38:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=0ZbihPdlbBA:LrMuHlei_38:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/0ZbihPdlbBA" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/8/4/survey-for-windycityrails-tutorial-attendees</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-07-27:35390</id>
    <published>2009-07-27T18:34:00Z</published>
    <updated>2009-07-27T18:34:38Z</updated>
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/CvuUMy1pH50/purple-blog" rel="alternate" type="text/html" />
    <title>Introducing the Purple Blog</title>
<content type="html">
            &lt;p&gt;&lt;img src="http://farm1.static.flickr.com/173/459546074_9e1edd03e0.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;i&gt;&lt;a href="http://www.flickr.com/photos/piet_musterd/"&gt;Photo credit&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;


	&lt;p&gt;Readers of this blog may also be interested in the series of articles I post at &lt;a href="http://www.purpleworkshops.com/articles"&gt;the PurpleBlog&lt;/a&gt;.  The latest entry is called &lt;a href="http://www.purpleworkshops.com/articles/how-to-spot-a-good-instructor"&gt;How to Spot a Good Instructor&lt;/a&gt; and, if you read between the lines a bit, offers insight into why I started Purple Workshops in the first place.  Longtime readers already know that from time to time, Brian and I offered public 1- or 2-day workshops.  Like this blog, the workshops reflected our intent on empowering those new to Ruby and to Rails.  I hope you’ll peruse the &lt;a href="http://www.purpleworkshops.com/public"&gt;public workshops we have coming this fall&lt;/a&gt; and join us for one of them!&lt;/p&gt;


	&lt;p&gt;We’ll continue to post here on Softies all of the same kinds of articles, tips, and opinions that we’ve always written here.  The PurpleBlog is for topics that wouldn’t necessarily fit here, and reflects the work I’m doing over there.&lt;/p&gt;


	&lt;p&gt;By the way, comments are not enabled on the PurpleBlog; use twitter to ask questions or provide feedback instead.  It’s another one of my experiments as I try to find better ways to answer questions and receive constructive feedback.&lt;/p&gt;


&lt;hr /&gt;
&lt;i&gt;Upcoming workshops:&lt;/i&gt;

&lt;ul&gt;
&lt;li&gt;September 12: &lt;a href="http://www.windycityrails.org/sessions"&gt;&lt;span class="caps"&gt;REST 101&lt;/span&gt; and Best Practices&lt;/a&gt; (part of the WindyCityRails conference)&lt;/li&gt;
&lt;li&gt;October 17: &lt;a href="http://www.purpleworkshops.com/workshops/essential-javascript"&gt;Essential Javascript with jQuery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;October 24: &lt;a href="http://www.purpleworkshops.com/workshops/rails-for-everyone"&gt;Rails for Everyone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=CvuUMy1pH50:Viea1eRGreE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=CvuUMy1pH50:Viea1eRGreE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=CvuUMy1pH50:Viea1eRGreE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=CvuUMy1pH50:Viea1eRGreE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=CvuUMy1pH50:Viea1eRGreE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=CvuUMy1pH50:Viea1eRGreE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/CvuUMy1pH50" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/7/27/purple-blog</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-07-13:35285</id>
    <published>2009-07-13T17:56:00Z</published>
    <updated>2009-07-13T17:57:41Z</updated>
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/-knGS7XcYgo/windy-city-rails-deadline-approaching-fast" rel="alternate" type="text/html" />
    <title>Windy City Rails Deadline Approaching Fast</title>
<content type="html">
            &lt;p&gt;Many of us in the Midwest are looking forward to the &lt;a href="http://windycityrails.org"&gt;Windy City Rails Conference&lt;/a&gt; on September 12, 2009.&lt;/p&gt;


	&lt;p&gt;The deadline is very rapidly approaching for the early bird rates ($99 conference only, or $199 for the conference plus a complete 3-hour tutorial session).&lt;/p&gt;


	&lt;p&gt;I’m doing the morning tutorial called &lt;a href="http://windycityrails.org/sessions"&gt;&lt;span class="caps"&gt;REST 101&lt;/span&gt;: Best Practices for Rails Developers&lt;/a&gt; for those of you who are relatively new to Rails or trying to get a handle on what the whole &lt;span class="caps"&gt;REST&lt;/span&gt; thing is all about.&lt;/p&gt;


	&lt;p&gt;So &lt;a href="http://windycityrails.org/register"&gt;register now&lt;/a&gt; for the conference and/or tutorial.  Profits from the tutorials/conference go to charity.  So we’ll learn a lot, have fun, and support a good cause all in one day.&lt;/p&gt;


	&lt;p&gt;Questions?  Leave a comment below and I’ll try to respond quickly.&lt;/p&gt;


	&lt;p&gt;Thanks!  See you there!&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=-knGS7XcYgo:MqZCdQnbOfg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=-knGS7XcYgo:MqZCdQnbOfg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=-knGS7XcYgo:MqZCdQnbOfg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=-knGS7XcYgo:MqZCdQnbOfg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=-knGS7XcYgo:MqZCdQnbOfg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=-knGS7XcYgo:MqZCdQnbOfg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/-knGS7XcYgo" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/7/13/windy-city-rails-deadline-approaching-fast</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-06-17:34912</id>
    <published>2009-06-17T03:27:00Z</published>
    <updated>2009-06-17T03:28:23Z</updated>
    <category term="rails" />
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/WbxQ84v_kgY/join-us-at-windy-city-rails" rel="alternate" type="text/html" />
    <title>Join Us at Windy City Rails 2009</title>
<content type="html">
            &lt;p&gt;I’m glad to announce that I’ll be conducting the morning tutorial session at the upcoming &lt;a href="http://windycityrails.org"&gt;Windy City Rails Conference&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;It’s a 3-hour tutorial called &lt;a href="http://windycityrails.org/sessions"&gt;&lt;span class="caps"&gt;REST 101&lt;/span&gt;: Best Practices for Rails Developers&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;If you’re relatively new to Rails, especially if you’re currently a .NET or Java developer who’s trying to figure out how to really get started with Rails, this tutorial is for you. If you’re a more seasoned developer, then you should still attend the conference.  There’s a great lineup of speakers, all-day coding sessions, and more.&lt;/p&gt;


	&lt;p&gt;The conference will be held on September 12, 2009 in downtown Chicago. If you register now, you can get the early bird rate of $99 for conference admission or &lt;a href="http://windycityrails.org/register"&gt;just $199 for the conference with one tutorial session&lt;/a&gt;.  For those who might not have heard of the annual Windy City Rails conference before, the conference donates all profits to local charities, like the &lt;a href="http://www.chicagosfoodbank.org"&gt;Greater Chicago Food Depository&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;So &lt;a href="http://windycityrails.org/register"&gt;register now&lt;/a&gt; for the conference and/or tutorial.  We’ll learn a lot, have fun, and support a good cause all in one day.&lt;/p&gt;


	&lt;p&gt;Questions?  Leave a comment below and I’ll try to respond quickly.&lt;/p&gt;


	&lt;p&gt;Thanks!  See you there!&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=WbxQ84v_kgY:3RsFYthHB1Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=WbxQ84v_kgY:3RsFYthHB1Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=WbxQ84v_kgY:3RsFYthHB1Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=WbxQ84v_kgY:3RsFYthHB1Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=WbxQ84v_kgY:3RsFYthHB1Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=WbxQ84v_kgY:3RsFYthHB1Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/WbxQ84v_kgY" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/6/17/join-us-at-windy-city-rails</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-06-11:34847</id>
    <published>2009-06-11T00:13:00Z</published>
    <updated>2009-06-11T00:14:51Z</updated>
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/ZLfENfmCWGs/making-git-commands-a-little-shorter" rel="alternate" type="text/html" />
    <title>Making Git Commands A Little Shorter</title>
<content type="html">
            &lt;p&gt;Most of you git geeks probably already knew this, but recently I learned how to make git a little more usable for me.&lt;/p&gt;


	&lt;p&gt;One of the things I appreciate about Subversion’s command line interface is that, usually, you don’t have to type the entire command name.  As long as you enter enough of the command so it can’t be confused with another subversion command, it will work.&lt;/p&gt;


	&lt;p&gt;For example, instead of doing:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;svn status&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;I always do&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;svn st&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;(i know, I know, you can go even further and create shell aliases that are even further, or shell scripts, or whatever…)&lt;/p&gt;


	&lt;p&gt;Anyway, now that I’m using git for my personal projects, I end up doing this a lot:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;But recently I learned that I can make this shorter by creating a &lt;em&gt;git alias&lt;/em&gt; for the status command (or any other command I want).&lt;/p&gt;


	&lt;p&gt;So I did this:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;git config alias.st status&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now I can do this instead:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;git st&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;You can do the same for git commit:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;git config alias.ci commit&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;For more information about how to create aliases in git, well… just Google for it.  You’ll be glad you did.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=ZLfENfmCWGs:NoQsFT1EzjU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=ZLfENfmCWGs:NoQsFT1EzjU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=ZLfENfmCWGs:NoQsFT1EzjU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=ZLfENfmCWGs:NoQsFT1EzjU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=ZLfENfmCWGs:NoQsFT1EzjU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=ZLfENfmCWGs:NoQsFT1EzjU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/ZLfENfmCWGs" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/6/11/making-git-commands-a-little-shorter</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-05-28:34552</id>
    <published>2009-05-28T13:47:00Z</published>
    <updated>2009-05-28T13:48:07Z</updated>
    <category term="rails" />
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/wbjtrGw7aSM/i-don-t-use-rspec" rel="alternate" type="text/html" />
    <title>I Don't Use RSpec</title>
<content type="html">
            &lt;p&gt;It seems I’m in a super-minority among Rails developers.&lt;/p&gt;


	&lt;p&gt;First of all, I write tests.  My unscientific guess is that less than half of people who call themselves Rails developers actually write tests.&lt;/p&gt;


	&lt;p&gt;Second, I write tests first.  Of those that write tests, I would guess that less than half write them before writing the implementation code.&lt;/p&gt;


	&lt;p&gt;So already I’m in the group of “those crazy &lt;span class="caps"&gt;TDD&lt;/span&gt; developers”.  But you know what’s even worse?&lt;/p&gt;


	&lt;p&gt;In that very group of “crazy &lt;span class="caps"&gt;TDD&lt;/span&gt; developers”, I bet more than half use &lt;a href="http://rspec.info/"&gt;RSpec&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;But I don’t.  Instead, I use a combination of &lt;a href="http://www.thoughtbot.com/projects/shoulda/"&gt;shoulda&lt;/a&gt;, &lt;a href="http://github.com/brynary/webrat/tree/master"&gt;webrat&lt;/a&gt;, and &lt;a href="http://mocha.rubyforge.org/"&gt;mocha&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Honestly I don’t know why I’ve never liked RSpec.  Lots of smart people use it, and maybe I just don’t understand it.  But I don’t think business users will write tests with the story runner.  The most they’ll ever do is &lt;em&gt;read&lt;/em&gt; them, which is still valuable.  But they can read my webrat tests well enough.&lt;/p&gt;


	&lt;p&gt;Also, RSpec just feels… heavy.  There are spaces between words when I expect ruby-like underscores instead:&lt;/p&gt;


&lt;pre&gt;&lt;code class="ruby"&gt;Model.should have(1).record
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This just looks weird to me.&lt;/p&gt;


	&lt;p&gt;Unfortunately learning Mocha hasn’t been like falling off a log, either.  There’s an excellent &lt;a href="http://groups.google.com/group/mocha-developer"&gt;Google Group&lt;/a&gt;, but I don’t really know of a simple “Getting Started with Mocha” guide anywhere, so it’s taken me a while to get up to speed.  Maybe I should take the time to write one?  If enough people are interested I’d be willing to give it a shot.&lt;/p&gt;


	&lt;p&gt;So, there it is.  &lt;strong&gt;I don’t use RSpec&lt;/strong&gt;.  So flame away and tell me know if I’m a genius or a moron.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=wbjtrGw7aSM:eAdfFW8Y8aI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=wbjtrGw7aSM:eAdfFW8Y8aI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=wbjtrGw7aSM:eAdfFW8Y8aI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=wbjtrGw7aSM:eAdfFW8Y8aI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=wbjtrGw7aSM:eAdfFW8Y8aI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=wbjtrGw7aSM:eAdfFW8Y8aI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/wbjtrGw7aSM" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/5/28/i-don-t-use-rspec</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-05-04:33157</id>
    <published>2009-05-04T21:18:00Z</published>
    <updated>2009-05-04T21:18:29Z</updated>
    <category term="rails" />
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/FDShV6NCzGU/railsbridge" rel="alternate" type="text/html" />
    <title>RailsBridge</title>
<content type="html">
            &lt;p&gt;&lt;img src="http://railsbridge.org/images/logo.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;I’m glad to help announce &lt;a href="http://railsbridge.org"&gt;RailsBridge&lt;/a&gt;, a great idea put forth by &lt;a href="http://www.afreshcup.com"&gt;Mike Gunderloy&lt;/a&gt;.  Mike invited me (and many others) last week to join his concept for a positive approach inside the Rails community, and so far things look promising.&lt;/p&gt;


	&lt;p&gt;I hope to help out by donating time and energy toward any public workshops the group may choose to host, as well do any writing and mentoring that may be needed.  The group will do many other things, but for now those are the two that I feel most qualified to do (see &lt;a href="http://www.purpleworkshops.com"&gt;here&lt;/a&gt; and &lt;a href="http://pragprog.com/titles/cerailn"&gt;here&lt;/a&gt; if you’re a new reader and don’t know what I’m talking about).&lt;/p&gt;


	&lt;p&gt;I wasn’t able to make it to RailsConf, but some other RailsBridge members are there, so find them, learn more about it, and join us if you’re so inclined.&lt;/p&gt;


	&lt;p&gt;A couple weeks ago I was pretty depressed about the state of the Rails community.  But now, I’m more optimistic that ever.&lt;/p&gt;


	&lt;p&gt;Thanks, Mike.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=FDShV6NCzGU:9qURLq8kukA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=FDShV6NCzGU:9qURLq8kukA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=FDShV6NCzGU:9qURLq8kukA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=FDShV6NCzGU:9qURLq8kukA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=FDShV6NCzGU:9qURLq8kukA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=FDShV6NCzGU:9qURLq8kukA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/FDShV6NCzGU" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/5/4/railsbridge</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>brian</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-03-03:31337</id>
    <published>2009-03-03T15:38:00Z</published>
    <updated>2009-03-03T15:38:45Z</updated>
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/OXJ6lSXyatY/an-essential-rails-success-story-and-win-a-free-book" rel="alternate" type="text/html" />
    <title>An Essential Rails success story (and win a free book)</title>
<content type="html">
            &lt;p&gt;&lt;a href="http://tzetzefly.com/"&gt;Dan Woolley&lt;/a&gt; writes:&lt;/p&gt;

&lt;blockquote&gt;
I took your course in Chicago a couple of years ago &amp;ndash; I think it was your first one.  I finally left my comfy corporate job and went full time on Rails in July 2008.  I recently released my first Rails app &amp;ndash; Dwellicious (http://dwellicious.com).  That is our free site for consumers that helps you organize, share, and discuss the search for homes for sale on the internet.
&lt;/blockquote&gt;

&lt;p&gt;Congrats, Dan.  &lt;a href="http://dwellicious.com"&gt;Dwellicious&lt;/a&gt; is beautifully designed, well executed, and yes, has a &lt;em&gt;real&lt;/em&gt; business model.&lt;/p&gt;

&lt;p&gt;Are you a .NET developer who's turned to Rails?  What's your success story?  Link it up in the comments or e-mail us.  We'll take the best ones, post them here, and send you a free copy of &lt;a href="http://www.pragprog.com/titles/cerailn/rails-for-net-developers"&gt;Rails for .NET Developers&lt;/a&gt;.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=OXJ6lSXyatY:BH0XdPnKXDA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=OXJ6lSXyatY:BH0XdPnKXDA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=OXJ6lSXyatY:BH0XdPnKXDA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?i=OXJ6lSXyatY:BH0XdPnKXDA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=OXJ6lSXyatY:BH0XdPnKXDA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/SoftiesOnRails?a=OXJ6lSXyatY:BH0XdPnKXDA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/SoftiesOnRails?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/OXJ6lSXyatY" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/3/3/an-essential-rails-success-story-and-win-a-free-book</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-02-12:31216</id>
    <published>2009-02-12T18:12:00Z</published>
    <updated>2009-02-16T13:46:34Z</updated>
    <category term="Ruby" />
    <category term="ruby" />
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/I4Wv--k0e5w/another-ruby-tip" rel="alternate" type="text/html" />
    <title>Simplifying Your Ruby Code</title>
<content type="html">
            &lt;p&gt;I used to write Ruby code like this a lot when I my brain was still half .NET.&lt;/p&gt;


&lt;pre&gt;&lt;code class="ruby"&gt;def is_ready?
  if self.status &amp;gt; 3
    return true
  else
    return false
  end
end&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;I see this all the time on the Rails mailing list.  Would you be surprised to know that you can write the same method this way:&lt;/p&gt;


&lt;pre&gt;&lt;code class="ruby"&gt;def ready?
  self.status &amp;gt; 3
end
&lt;/code&gt;
&lt;/pre&gt;

	&lt;p&gt;(I’d do away the the magic number “3” in favor of a constant, but I digress…)&lt;/p&gt;


	&lt;p&gt;Notice two things:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Methods that return a true/false indicator should end with a question mark.  For more on this topic, see &lt;a href="http://www.softiesonrails.com/2007/10/18/ruby-101-naming-conventions"&gt;my other post&lt;/a&gt; on the topic of naming conventions in Ruby.&lt;/li&gt;
		&lt;li&gt;Ruby uses the last-evaluated expression as the return value.  No need to wrap it with a useless if/else block.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Questions?  Got another example of code patterns you’ve seen that could be simpler?  Use Textile formatting in the comments.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=TXh2q2UZ"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?i=TXh2q2UZ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=MfluXz3X"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?i=MfluXz3X" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=SjU4Sn7Z"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=0wTOhsz3"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/I4Wv--k0e5w" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/2/12/another-ruby-tip</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>jeff</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-01-23:31040</id>
    <published>2009-01-23T01:45:00Z</published>
    <updated>2009-01-23T01:46:17Z</updated>
    <category term="rails" />
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/-kGe2TFpKJM/do-you-test-your-views" rel="alternate" type="text/html" />
    <title>Do You Test Your Views?</title>
<content type="html">
            &lt;p&gt;Those of you &lt;a href="http://www.twitter.com/jeffcohen"&gt;following me on twitter&lt;/a&gt; already know that I’m learning &lt;a href="http://wiki.github.com/aslakhellesoy/cucumber"&gt;Cucumber&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Traditionally I don’t test my views or controllers all that much.  I know, I know, it’s heresy.  But I’ve just never gotten much value from writing Rails functional tests nor integration tests.&lt;/p&gt;


	&lt;p&gt;Yet those of you who have been reading my articles or &lt;a href="http://www.amazon.com/Rails-NET-Developers-Jeff-Cohen/dp/1934356204/"&gt;new book&lt;/a&gt; know that I’ve been immersed in &lt;span class="caps"&gt;TDD&lt;/span&gt; for a long time and can’t imagine writing any application without a decent test suite to go with it.&lt;/p&gt;


	&lt;p&gt;So what do I test?  I test the models like no one’s business.  I use test/unit or shoulda to drive the design of all the models I write, and I write a lot of tests covering every possible edge case I can think of.&lt;/p&gt;


	&lt;p&gt;But the controllers and views?  Up until now it’s seemed like a waste of time, for several reasons.&lt;/p&gt;


	&lt;p&gt;First, &lt;strong&gt;most of my controllers are stupid-simple RESTful controllers&lt;/strong&gt;.  They’re as skinny as possible, because I move almost all of the real logic into the models.  That way I can test my models with unit tests without trying to simulate a browser, and I find it easier to use script/console to play with models than with controllers.&lt;/p&gt;


	&lt;p&gt;Secondly, once the application gets to its first stabilization point, I find that &lt;strong&gt;&lt;span class="caps"&gt;HTML&lt;/span&gt; and &lt;span class="caps"&gt;CSS&lt;/span&gt; change way more often than 80% of the core application logic ever will&lt;/strong&gt;.  Writing tests for the views just means they’ll break after inconsequential layout changes.  After all, views are just supposed to be a representation of your models (generally speaking), and other stuff (navigation, ajax effects, etc.) just aren’t worth my time writing a regression suite for.&lt;/p&gt;


	&lt;p&gt;As much as I’m digging Cucumber’s syntax, I’m desparately close to just going back to test/unit and forgetting about the controllers again.&lt;/p&gt;


	&lt;p&gt;Convince me otherwise.  Do you test your controllers and views?  If so, with what – Rails functional tests in test/unit?  RSpec? Cucumber?  What are you trying to verify in your tests, and why?&lt;/p&gt;


&lt;hr /&gt;

	&lt;p&gt;&lt;i&gt;Is your team switching to Rails?  Sign up for a fun-filled, one-day class in your own office: &lt;a href="http://www.switchingtorails.com"&gt;SwitchingToRails.com&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=klWnMdoJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?i=klWnMdoJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=LT0POMm0"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?i=LT0POMm0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=eg5IazR4"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=hg84dxsy"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/-kGe2TFpKJM" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/1/23/do-you-test-your-views</feedburner:origLink></entry>
  <entry xml:base="http://www.softiesonrails.com/">
    <author>
      <name>brian</name>
    </author>
    <id>tag:www.softiesonrails.com,2009-01-13:30259</id>
    <published>2009-01-13T15:09:00Z</published>
    <updated>2009-01-13T15:12:50Z</updated>
    <link href="http://feedproxy.google.com/~r/SoftiesOnRails/~3/G9aLzSCkPJQ/interviewed-on-infoq" rel="alternate" type="text/html" />
    <title>Interviewed on InfoQ</title>
<content type="html">
            &lt;p&gt;We were recently &lt;a href="http://www.infoq.com/articles/rails-for-net-developers"&gt;interviewed by Rob Bazinet over at InfoQ&lt;/a&gt; about our book and how we got started with our careers working with Rails.&lt;/p&gt;

&lt;blockquote&gt;
I was learning Rails and using it for side-projects while working at my 9-to-5 .NET job for almost 2 years. I was shocked at how much of an immediate impact it had on how I thought about my .NET code. It definitely made me a better developer, and that in itself is reason enough to learn Ruby. Plus, as techies, we're easily distracted by new, shiny things.
&lt;/blockquote&gt;

&lt;p&gt;Also included is a complete sample chapter from our book (Chapter 2: Switching to Ruby), exclusive to InfoQ.  Thanks to Rob for the interview and for posting it.&lt;/p&gt;
          &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=YU2miHYB"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?i=YU2miHYB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=2Lne6P8n"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?i=2Lne6P8n" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=8GzN8Gdo"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/SoftiesOnRails?a=ueecLoAQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/SoftiesOnRails?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SoftiesOnRails/~4/G9aLzSCkPJQ" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://www.softiesonrails.com/2009/1/13/interviewed-on-infoq</feedburner:origLink></entry>
</feed>
