<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Robby on Rails</title>
    <link>http://www.robbyonrails.com</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>thoughts.sort_by{|t| t[:topic]}.collect </description>
    <item>
      <title>Ruby 1.8.7 on MacPorts causing some problems</title>
      <description>&lt;p&gt;It appears that MacPorts has upgraded to Ruby 1.8.7, which is good news if you&amp;#8217;re running Rails 2.1&amp;#8230; but if you have an older Rails application&amp;#8230; it&amp;#8217;s not going to work too well.&lt;/p&gt;


	&lt;p&gt;In order to get Ruby 1.8.6 installed with the latest MacPorts, you&amp;#8217;ll need to do the following.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  $ mkdir /Users/Shared/dports
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code&gt;
$ svn checkout -r 36429 \ 
    http://svn.macports.org/repository/macports/trunk/dports/lang/ruby/ \ 
    /Users/Shared/dports/lang/ruby/
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Then you&amp;#8217;ll need to modify your macports to use this new local source. You&amp;#8217;ll need to edit &lt;code&gt;/opt/local/etc/macports/sources.conf&lt;/code&gt;  and add the following line above the existing rsync record.&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;file:///Users/Shared/dports and create that directory&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;Next, you&amp;#8217;ll want to index this new local source with the following command:&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;portindex /Users/Shared/dports&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;After that, you can do the following.&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;sudo port uninstall rb-rubygems ruby&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;sudo port clean rb-rubygems ruby&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;sudo rm -r /opt/local/lib/ruby/gems/1.8/doc/rubygems-1.1.1/&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;sudo port deactivate autoconf&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;sudo port install ruby rb-rubygems&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;..and hopefully you&amp;#8217;ll have Ruby 1.8.6 installed and be able to retain the rubygems you installed already.&lt;/p&gt;
</description>
      <pubDate>Fri, 20 Jun 2008 16:11:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d949213f-ee18-44ed-a39f-a644f33289ca</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/06/20/ruby-1-8-7-on-macports-causing-some-problems</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>macports</category>
      <category>ruby</category>
      <category>rubygems</category>
    </item>
    <item>
      <title>Basecamp...</title>
      <description>&lt;p&gt;Kudos to the 37signals team for launching what looks like a nice way to get the word out about their products.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve been using Basecamp for three years and it&amp;#8217;s been a great tool for collaborating with our clients.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.basecampHQ.com?referrer=ROBBYRUSSELL"&gt;&lt;img alt="Basecamp" border="0" height="250" src="https://affiliate.37signals.com/images/products/basecamp/banner-300x250.png" width="300" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Disclaimer: This is my get-rich-quick scheme for the day.&lt;/p&gt;
</description>
      <pubDate>Wed, 04 Jun 2008 12:13:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:56c1393e-7174-428c-9fc1-04cb3bac8f5c</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/06/04/basecamp</link>
      <category>37signals</category>
      <category>basecamp</category>
      <category>projects</category>
      <category>agile</category>
      <category>team</category>
      <category>collaborate</category>
      <category>dialogue</category>
    </item>
    <item>
      <title>New Boxcar plans announced!</title>
      <description>&lt;p&gt;Yesterday we announced our new suite of plans for Rails Boxcar. You can now get started with a pre-configured &lt;span class="caps"&gt;VPS&lt;/span&gt; designed by Rails developers like you for as low as $59/month.&lt;/p&gt;


	&lt;p&gt;You can check out our new rates here:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://railsboxcar.com"&gt;http://railsboxcar.com&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;If you&amp;#8217;re at RailsConf, be sure to introduce yourself and ask for details. :-)&lt;/p&gt;
</description>
      <pubDate>Fri, 30 May 2008 14:30:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:09b31bcf-a1b8-4699-b262-13cbc23ae63f</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/05/30/new-boxcar-plans-announced</link>
      <category>Ruby on Rails</category>
      <category>PLANET ARGON</category>
      <category>hosting</category>
      <category>rails</category>
      <category>vps</category>
      <category>boxcar</category>
      <category>planetargon</category>
    </item>
    <item>
      <title>Meet us at RailsConf</title>
      <description>&lt;p&gt;If you&amp;#8217;re coming to Portland for RailsConf or CabooseConf, be sure to introduce yourself (and we&amp;#8217;ll try to do the same). A few of us from &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt; will be attending the conference. I thought that I&amp;#8217;d make it easy to spot us by putting some faces to our names.&lt;/p&gt;


	&lt;p&gt;In corner #1 we have &lt;strong&gt;Alex Malinovich&lt;/strong&gt; who is our Director of Deployment Services. If you have any questions about hosting options, deployment tips, and scaling your Ruby on Rails application.. be sure to tug on his shoulder. I also overheard that he&amp;#8217;ll be giving people discounts on our Boxcar products to those he meets in person.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/2419611753/" title="Alex by Robby Russell, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2236/2419611753_d829f271d1.jpg" width="500" height="333" alt="Alex" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;&lt;strong&gt;Alex Malinovich&lt;/strong&gt;, Director of Deployment Services&lt;/small&gt;&lt;/p&gt;


	&lt;p&gt;In corner #2, we have &lt;strong&gt;Andy Delcambre&lt;/strong&gt; who is on our development team. You might remember Andy from his series of &lt;a href="http://andy.delcambre.com/tags/git"&gt;blog posts/tutorials on using Git&lt;/a&gt; and getting &lt;a href="http://andy.delcambre.com/2007/8/17/authenticated-rss-proxy"&gt;Basecamp &lt;span class="caps"&gt;RSS&lt;/span&gt; feeds working in Google Reader&lt;/a&gt; via a Mongrel-based proxy (our team is still using this approach using this after ten months!).&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/2432834995/" title="Andy by Robby Russell, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2096/2432834995_eb937af274.jpg" width="333" height="500" alt="Andy" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;&lt;strong&gt;Andy Delcambre&lt;/strong&gt;, Software Developer&lt;/small&gt;&lt;/p&gt;


	&lt;p&gt;In corner #3, we have &lt;strong&gt;Gary Blessington&lt;/strong&gt; who has been leading our design and development team. If you&amp;#8217;re looking for a job working with Ruby on Rails, be sure to introduce yourself to Gary as he&amp;#8217;s hoping to meet up with several applicants who will be in Portland this week.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/1430587811/" title="IMG_9286 copy.jpg by Robby Russell, on Flickr"&gt;&lt;img src="http://farm2.static.flickr.com/1167/1430587811_36d525cbf8.jpg" width="500" height="333" alt="IMG_9286 copy.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;&lt;strong&gt;Gary Blessington&lt;/strong&gt;, Director of Design and Development&lt;/small&gt;&lt;/p&gt;


	&lt;p&gt;In corner #4&amp;#8230; is me. I&amp;#8217;m not doing any talks this year so I plan to do wander around stress-free as I&amp;#8217;m not finishing my slides at the last minute or preparing for panel talks. I&amp;#8217;m happy to field questions and exchange stories with you. :-)&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/518770652/" title="me... by Robby Russell, on Flickr"&gt;&lt;img src="http://farm1.static.flickr.com/250/518770652_61c87e940f.jpg" width="500" height="333" alt="me..." /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;&lt;strong&gt;Robby Russell&lt;/strong&gt;&lt;/small&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://jobs.rubynow.com/jobs/show/2238"&gt;We are hiring&lt;/a&gt;... so feel free to introduce yourself to any of the faces above.&lt;/p&gt;


	&lt;p&gt;...and most importantly, I hope you have a great time in Portland!&lt;/p&gt;
</description>
      <pubDate>Wed, 28 May 2008 08:46:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:b8ddcb74-ffad-4495-974a-d0eeaeffd9d6</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/05/28/meet-us-at-railsconf</link>
      <category>Business</category>
      <category>Ruby on Rails</category>
      <category>PLANET ARGON</category>
      <category>jobs</category>
      <category>rubyonrails</category>
      <category>planetargon</category>
      <category>portland</category>
      <category>railsconf</category>
    </item>
    <item>
      <title>Coming to Portland for RailsConf or CabooseConf</title>
      <description>&lt;p&gt;If you&amp;#8217;re coming to Portland, Oregon for RailsConf 2008 or CabooseConf&amp;#8230; I&amp;#8217;d like to invite you all to check out our collection of articles that we wrote to highlight some stuff to do in town. We&amp;#8217;ll be posting a few more before the conference, but wanted to help you all plan out your visit in our wonderful little city.
&lt;a href="http://www.flickr.com/photos/robbyrussell/1010616106/" title="Portland by Robby Russell, on Flickr"&gt;&lt;img src="http://farm2.static.flickr.com/1437/1010616106_1a36e1605c.jpg" width="500" height="333" alt="Portland" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;h2&gt;Portland Revealed series&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://blog.planetargon.com/2007/5/10/portland-revealed-episode-2-beertown"&gt;Episode 2: Beertown&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://blog.planetargon.com/2007/5/11/portland-revealed-episode-3-get-outdoors"&gt;Episode 3: Get outdoors&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://blog.planetargon.com/2007/5/16/portland-revealed-episode-4-stay-awake-during-railsconf"&gt;Episode 4: Stay Awake During RailsConf&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://blog.planetargon.com/2007/5/16/portland-revealed-episode-5-places-to-work"&gt;Episode 5: Places to Work&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://blog.planetargon.com/portland-revealed"&gt;Read them all&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/cb9j/beertown"&gt;&lt;img src="http://img.skitch.com/20080523-d2fgmx2ia54xg7xx2rttm7rfmq.preview.jpg" alt="beertown" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;Stay tuned as we&amp;#8217;ll be posting more over the next week.&lt;/p&gt;
</description>
      <pubDate>Fri, 23 May 2008 07:45:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4fa63a75-ac66-4ebf-b5b5-63e9961562f5</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/05/23/coming-to-portland-for-railsconf-or-cabooseconf</link>
      <category>PLANET ARGON</category>
      <category>portland</category>
      <category>blog</category>
      <category>railsconf</category>
      <category>cabooseconf</category>
      <category>conference</category>
    </item>
    <item>
      <title>Boxcar Conductor plugin moved</title>
      <description>&lt;p&gt;Update. We&amp;#8217;ve moved the &lt;a href="http://www.robbyonrails.com/articles/2008/04/15/boxcar-conductor-rails-deployment-made-easy"&gt;Boxcar Conductor plugin&lt;/a&gt; for deploying Ruby on Rails applications to a new location on &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/planetargon/boxcar-conductor"&gt;http://github.com/planetargon/boxcar-conductor&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;You can still submit bugs/feature requests on Lighthouse here:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://planetargon.lighthouseapp.com/projects/9962-boxcar-conductor/overview"&gt;Boxcar on Lighthouse&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Enjoy!&lt;/p&gt;
</description>
      <pubDate>Fri, 23 May 2008 04:23:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:59197be4-0139-4950-9281-4d3fee8b4af3</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/05/23/boxcar-conductor-plugin-moved</link>
      <category>Ruby on Rails</category>
      <category>PLANET ARGON</category>
      <category>boxcar</category>
      <category>hosting</category>
      <category>rails</category>
      <category>plugin</category>
      <category>vps</category>
      <category>capistrano</category>
    </item>
    <item>
      <title>Boxcar on Twitter</title>
      <description>&lt;p&gt;We&amp;#8217;re about to roll out some announcements for &lt;a href="http://railsboxcar.com"&gt;Boxcar&lt;/a&gt;, our professional &lt;span class="caps"&gt;VPS&lt;/span&gt; hosting solution for Ruby on Rails applications. As we roll out these new updates, we&amp;#8217;re going to offer some extra special deals to those who are following us on twitter. :-)&lt;/p&gt;


	&lt;p&gt;If you want in on the action&amp;#8230;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://twitter.com/boxcar"&gt;Follow @boxcar&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://twitter.com/planetargon"&gt;Follow @planetargon&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;As usual, we&amp;#8217;ll be posting some announcements on &lt;a href="http://blog.planetargon.com"&gt;our blog&lt;/a&gt; as well&amp;#8230; so be sure to &lt;a href="http://feeds.feedburner.com/planetargon"&gt;subscribe to our feed&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Thu, 22 May 2008 22:00:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:267bd0cf-1120-4a35-996c-7a4590b6c2b7</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/05/22/boxcar-on-twitter</link>
      <category>Business</category>
      <category>Ruby on Rails</category>
      <category>PLANET ARGON</category>
      <category>hosting</category>
      <category>vps</category>
      <category>rails</category>
      <category>boxcar</category>
      <category>rubyonrails</category>
      <category>railsboxcar</category>
      <category>twitter</category>
    </item>
    <item>
      <title>The Art of Delivery, part 2</title>
      <description>&lt;p&gt;Two years ago, I wrote an article titled, &lt;a href="http://www.robbyonrails.com/articles/2006/05/31/the-art-of-delivery-part-1"&gt;The Art of Delivery&lt;/a&gt;. I wanted to post a few updates based on how our process has evolved since then (and continues to).&lt;/p&gt;


	&lt;p&gt;Over the past few years, we&amp;#8217;ve been fortunate enough to work on quite a diverse collection of projects. This has enabled us to work with many different clients and solicit feedback on our process. This has given us an opportunity to evolve a set of best practices that fulfills the long-term project goals/budgets of our client while making sure that we&amp;#8217;re able to maintain a design and development process that is agile.&lt;/p&gt;


	&lt;p&gt;As I&amp;#8217;ve mentioned in previous posts, our team typically bills work per-iteration on projects rather than per-hour or a flat-bid per-project. Since iterations are bite-sized pieces of the entire project and limited to 1-2 weeks, our teams estimates are much more accurate and we&amp;#8217;re able to keep things rolling and on track.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/2275337814/" title="stay on track by Robby Russell, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2129/2275337814_6774d562ee.jpg" width="500" height="333" alt="stay on track" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;The basic structure of our project looks like this.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;A &lt;strong&gt;Project&lt;/strong&gt; has many releases&lt;/li&gt;
		&lt;li&gt;A &lt;strong&gt;Release&lt;/strong&gt; has many iterations&lt;/li&gt;
		&lt;li&gt;An &lt;strong&gt;Iteration&lt;/strong&gt; has many deliverables&lt;/li&gt;
		&lt;li&gt;A &lt;strong&gt;Deliverable&lt;/strong&gt; has many tasks&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Before we begin working on an iteration, we outline a set of goals that we want to create solutions for. This process comes out of discussions between our client and us until we agree on what is the highest value/most critical to the success of the project, based on our shared understanding of where we are today. These goals translate into Deliverables, which in a typical iteration might require Interaction Design, Interface Design, or Development. We tend to break our process up into stages so that Interaction Design on Module &lt;span class="caps"&gt;XYZ&lt;/span&gt; would be implemented in a following iteration. This is because it&amp;#8217;s unrealistic to expect someone to provide an accurate estimate on how long it&amp;#8217;ll take to implement something before you know how people will interact with it.&lt;/p&gt;


	&lt;p&gt;Within any given iteration, our team is spread across several sets of deliverables. As a team, we breakdown these deliverables into smaller sets of tasks. It&amp;#8217;s our aim to keep tasks smaller than a full days worth of work as it&amp;#8217;s much easier to measure progress across the iteration when we can track tasks at a granular level.&lt;/p&gt;


	&lt;p&gt;Essentially, tasks are the individual steps needed to achieve these goals. We don&amp;#8217;t go out of our way to list each one of those during an estimate process as some tasks take less time than it takes to generate an estimate for them. Each person providing estimates should avoid getting too granular and aim to find a good balance that compliments their workflow.&lt;/p&gt;


	&lt;p&gt;Like most things&amp;#8230; mileage may vary.&lt;/p&gt;


	&lt;p&gt;Through this process, we can get calculate the estimated costs for each deliverable, which then provides us an cost for the entire iteration. In addition to deliverables, we also budget a set of hours/days so that we can be compensated for handling small requests, bug fixes, and project management. It&amp;#8217;s important to factor these things into your process.&lt;/p&gt;


	&lt;p&gt;In future posts, I&amp;#8217;ll discuss how we&amp;#8217;re handling this process while working on multiple projects&amp;#8230; as that&amp;#8217;s where it can chaos can start if you&amp;#8217;re not careful. ;-)&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/2274544107/" title="oops by Robby Russell, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2123/2274544107_0d427f84a7.jpg" width="500" height="333" alt="oops" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;How does your team work? As we&amp;#8217;re always evolving our process in an effort so that we can be more efficient and speed up our delivery cycle, I&amp;#8217;d love to learn from those in the community.&lt;/p&gt;
</description>
      <pubDate>Thu, 22 May 2008 13:42:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:268b4aaa-a86f-443e-8365-039ef5c747aa</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/05/22/the-art-of-delivery-part-2</link>
      <category>Business</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>agile</category>
      <category>development</category>
      <category>iterations</category>
      <category>projects</category>
      <category>deliverables</category>
      <category>team</category>
      <category>estimates</category>
      <category>budgets</category>
      <category>process</category>
    </item>
    <item>
      <title>Was away on vacation</title>
      <description>&lt;p&gt;It&amp;#8217;s been quiet here the past several weeks and that&amp;#8217;s because for the first time since I started &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt;, I was able to take an extended vacation.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/2476085538/" title="IMG_8957 by Robby Russell, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2399/2476085538_4c8e01ed1a.jpg" width="500" height="333" alt="IMG_8957" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;My partner and I headed to France (Paris, Nice, Lascaux II, and Bordeaux) for a few weeks. It was a first time for both of us. I&amp;#8217;ve posted some photos on &lt;a href="http://www.flickr.com/photos/robbyrussell/"&gt;my flickr&lt;/a&gt; (&lt;a href="http://www.flickr.com/photos/robbyrussell/sets/72157604714698814/"&gt;vacation set&lt;/a&gt;).&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/2475271101/" title="Lascaux II by Robby Russell, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2191/2475271101_9dc8d5aef7.jpg" width="500" height="333" alt="Lascaux II" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;d like to thank my amazing team for helping make it easy for me to take off for that much time. :-)&lt;/p&gt;


	&lt;p&gt;In any event, I wanted to post a few non-technical links&amp;#8230;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://veggie.tumblr.com/"&gt;Veggie Tastespotting&lt;/a&gt; (&lt;a href="http://tastespotting.com"&gt;tastespotting&lt;/a&gt; without the meat)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://robbyrussell.muxtape.com/"&gt;Robby&amp;#8217;s Muxtape&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://grabb.it/users/robbyrussell"&gt;Robby&amp;#8217;s Grabb.it&lt;/a&gt; &lt;/li&gt;
		&lt;li&gt;&lt;a href="http://twitter.com/robbyrussell"&gt;Robby on twitter&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://feedflix.com/robbyrussell"&gt;Robby&amp;#8217;s feedflix&lt;/a&gt; (netflix queue/stats)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Link yours up!&lt;/p&gt;


	&lt;p&gt;In the coming weeks&amp;#8230; I&amp;#8217;ll be posting some more thoughts on Project Management, time management, and anything else that seems to come up. If there is anything you&amp;#8217;d like me to write about, feel free to &lt;a href="mailto:robbyrussell+blog@gmail.com"&gt;drop me a line&lt;/a&gt; with a request.&lt;/p&gt;
</description>
      <pubDate>Sun, 11 May 2008 17:33:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:2a062746-541a-499f-ab41-6fb4f89b940d</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/05/11/was-away-on-vacation</link>
      <category>Off-Topic</category>
      <category>PLANET ARGON</category>
      <category>vacation</category>
      <category>personal</category>
      <category>france</category>
    </item>
    <item>
      <title>RubyURL meets Zombies!</title>
      <description>&lt;p&gt;Last Friday, Greg Borenstein sent me a link to &lt;a href="http://zombieurl.com"&gt;ZombieURL&lt;/a&gt; after it got launched. The folks at &lt;a href="http://bottlecaplabs.net/"&gt;Bottlecap Labs&lt;/a&gt; took &lt;a href="http://rubyurl.com"&gt;RubyURL&lt;/a&gt; and threw in Zombies&amp;#8230; the rest you&amp;#8217;ll have to see for yourself.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://zombieurl.com/Ssfl"&gt;don&amp;#8217;t click this link&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;There&amp;#8230; I warned you.&lt;/p&gt;


	&lt;p&gt;You can check out the source code for ZombieURL on GitHub&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/bottlecaplabs/zombieurl/tree"&gt;http://github.com/bottlecaplabs/zombieurl/tree&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;You can also grab the underlying source code for RubyURL on GitHub.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/robbyrussell/rubyurl/tree/master"&gt;http://github.com/robbyrussell/rubyurl/tree/master&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I&amp;#8217;d love to see what other fun things people come up with to do with RubyURL.&lt;/p&gt;
</description>
      <pubDate>Tue, 22 Apr 2008 11:43:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:70c2e909-d2f1-4ecc-8c28-7edcfef5784e</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/22/rubyurl-meets-zombies</link>
      <category>RubyURL</category>
      <category>ruby</category>
      <category>development</category>
      <category>zombies</category>
      <category>rubyurl</category>
      <category>github</category>
    </item>
    <item>
      <title>Review: Braintree </title>
      <description>&lt;p&gt;&lt;a href="http://depixelate.com/"&gt;Zack Chandler&lt;/a&gt; (author of the TrustCommerce gem) writes..&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&amp;#8220;How do you like Braintree? I’ve haven’t used them yet but may in the future…&amp;#8221;&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;Good question. I was actually planning to write up a quick review of their exceptional service because not many people know about them yet. Now is as good of a time as any.&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;ve been using &lt;a href="http://authorize.net/"&gt;Authorize.NET&lt;/a&gt; for over four years as it&amp;#8217;s what our primary &lt;a href="http://wellsfargo.com"&gt;banking institution&lt;/a&gt; hooked us up with when we began researching merchant services. However, they didn&amp;#8217;t provide us with some of the subscription-based management features that we found with some other payment gateways and we began referring our customers to &lt;a href="http://trustcommerce"&gt;TrustCommerce&lt;/a&gt;. We planned to switch over to TrustCommerce with the development of Cobalt (our new billing and hosting support platform).&lt;/p&gt;


	&lt;p&gt;After we began to set milestones for going live with &lt;a href="http://cobalt.planetargon.com"&gt;Cobalt&lt;/a&gt;, I tried to get in touch with TrustCommerce. I was provided a demo account and really wanted to get in touch with their sales department to get an application.&lt;/p&gt;


	&lt;p&gt;...a week goes by. No response. So, I tried to contact them again. No response. tried again&amp;#8230; and (yet) again&amp;#8230; no response. To date, I have yet to hear back from them.&lt;/p&gt;


	&lt;p&gt;This was echoed by one of our consulting clients that said, &amp;#8220;their support staff seems real responsive, but I can&amp;#8217;t get ahold of anyone to actually get an account.&amp;#8221; So, I planned to start looking at other options or stick with Authorize.NET.&lt;/p&gt;


	&lt;p&gt;..and then (as if they were listening to my thoughts)... I receive an email from Bryan Johnson, founder of &lt;a href="http://getbraintree.com"&gt;Braintree&lt;/a&gt;, a &lt;em&gt;payment processing company&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;(snip)&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&amp;#8220;I am the founder of Braintree, a payment processing company. We provide credit card and electronic check processing, simplified &lt;span class="caps"&gt;PCI DSS&lt;/span&gt; Compliance through remote storage of credit card data, payment gateway/virtual terminal, etc. We&amp;#8217;re a one stop shop.&amp;#8221;&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;He goes on to introduce himself and explain that they&amp;#8217;re really focused on subscription-based services, which is exactly what our new centralized billing app is handling.&lt;/p&gt;


	&lt;p&gt;So, since I hadn&amp;#8217;t heard from TrustCommerce, I requested a demo with Braintree. We were able to take advantage of the hard work that has put into the &lt;a href="http://www.activemerchant.org"&gt;ActiveMerchant&lt;/a&gt; project, which already works with Braintree. So, our application that we&amp;#8217;d been focusing on integrating with TrustCommerce was just a few lines of code away from working with Braintree.&lt;/p&gt;


	&lt;p&gt;While I&amp;#8217;m sure that many people have had great experiences with TrustCommerce (as I did when I worked with their support team while working client projects)... not being able to order an account isn&amp;#8217;t doing them any favors.&lt;/p&gt;


	&lt;p&gt;So, we just launched and now running Cobalt with Braintree as our backend for managing recurring credit card processing. Their customer support has been great so far. In one case, I messed up some security settings and locked myself out and after they saw that I had failed to login a few times, I received a call from one of their support people. I didn&amp;#8217;t prompt it&amp;#8230; they took the initiative to call me. She said she&amp;#8217;d look into it and called me back when she figured out what I had done wrong. :-)&lt;/p&gt;


	&lt;p&gt;On Monday afternoon, after I announced that we launched Cobalt on my blog, I got a congratulations from another of their developers who congratulated us and wished us the best of success.&lt;/p&gt;


	&lt;p&gt;So&amp;#8230; Zack. To answer your question, &amp;#8220;How do you like Braintree?&amp;#8221;&lt;/p&gt;


	&lt;p&gt;My answer is&amp;#8230; I think they&amp;#8217;re fantastic so far. Their web interface for managing your account could use a few IxD eyes, but we like that it&amp;#8217;s minimal and most importantly&amp;#8230; the core functions of their product appear to be working great. Our team has now talked to roughly 5-6 different team members at Braintree and have nothing but great things to say about those interactions. Great customer service that definitely seems to echo that they want their customers to be successful and are here to do what they can to provide us with the tools we need to fulfill our goals.&lt;/p&gt;


	&lt;p&gt;I only wish that we had the same service from all of our vendors.&lt;/p&gt;


	&lt;p&gt;Bryan, thanks for introducing yourself. You have a great team.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;For more information, visit &lt;a href="http://getbraintree.com/"&gt;http://getbraintree.com/&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Related Posts&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/02/13/be-careful-that-you-dont-stub-your-big-toe"&gt;Be Careful that you don&amp;#8217;t Stub your Big Toe&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
</description>
      <pubDate>Wed, 16 Apr 2008 15:58:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:17210511-2725-4773-b4d4-c5b914e7de00</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/16/review-braintree</link>
      <category>Business</category>
      <category>PLANET ARGON</category>
      <category>business</category>
      <category>trustcommerce</category>
      <category>braintree</category>
      <category>subscriptions</category>
      <category>payment</category>
    </item>
    <item>
      <title>Boxcar Conductor: Rails deployment made easy</title>
      <description>&lt;p&gt;In a &lt;a href="http://www.robbyonrails.com/articles/2008/02/28/deploying-rails-with-an-interactive-capistrano-recipe-to-your-boxcar"&gt;previous post&lt;/a&gt;, I showed how we&amp;#8217;ve been working on an interactive deployment process for Rails applications to reduce the time it takes to deploy to a &lt;a href="http://railsboxcar.com"&gt;Boxcar&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;We began to move our Boxcar deployment recipes into it&amp;#8217;s own Rails plugin and just made it available on &lt;a href="http://github.coms"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;Introducing Boxcar Conductor&lt;/h2&gt;


	&lt;p&gt;The &lt;strong&gt;Boxcar Conductor plugin&lt;/strong&gt; aims to automate the entire process for deploying to your Boxcar. We&amp;#8217;re down to just a few simple commands to run to get your application up and running. While mileage may vary with other hosting providers, we did want to open up this work to the community and centralize our work with the community of Boxcar customers who have helped us build and test these tools.&lt;/p&gt;


	&lt;h3&gt;Install Boxcar Conductor&lt;/h3&gt;


	&lt;p&gt;If you&amp;#8217;re running on Edge Rails&amp;#8230; you can take advantage of the new support for installing plugins in git repositories.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  $ ./script/plugin install git://github.com/planetargon/boxcar-conductor.git
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;&lt;small&gt;note: If you&amp;#8217;re not using edge rails, you can download a tarball and install the plugin manually.&lt;/small&gt;&lt;/p&gt;


	&lt;p&gt;Installing the plugin will add a custom &lt;code&gt;Capfile&lt;/code&gt; and &lt;code&gt;config/deploy.rb&lt;/code&gt;, which has a few things for you to define based on your &lt;a href="http://railsboxcar.com"&gt;Boxcar subscription&lt;/a&gt;.&lt;/p&gt;


	&lt;h3&gt;Configure Your Boxcar&lt;/h3&gt;


	&lt;p&gt;Once the plugin is installed, you can run the following task:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  $ cap boxcar:config
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This will ask you a few questions about your deployment needs.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/bsx8/default"&gt;&lt;img src="http://img.skitch.com/20080415-x5rksmf1b7dkx1x57spsr9rwr9.preview.jpg" alt="Default" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;ul&gt;
	&lt;li&gt;Which database server will you be using? (along with db user/pass info)&lt;/li&gt;
		&lt;li&gt;How many mongrels should run in your cluster?&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;After a few quick multiple choice answers, you&amp;#8217;re application is ready to be deployed and you can run an Boxcar-specific deployment task.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  $ cap deploy
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;We&amp;#8217;ve also created a new public project on Lighthouse so that you can submit tickets and ideas to us. With Boxcar, we&amp;#8217;re really aiming to remove as many steps from the deployment process that aren&amp;#8217;t necessary.&lt;/p&gt;


	&lt;p&gt;To follow along, visit the project on &lt;a href="http://planetargon.lighthouseapp.com/projects/9962-boxcar-conductor"&gt;lighthouse&lt;/a&gt; or &lt;a href="http://github.com/planetargon/boxcar-conductor/"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re interested in learning more about &lt;a href="http://railsboxcar.com"&gt;Rails Boxcar&lt;/a&gt;, feel free to &lt;a href="http://planetargon.com/contact.html"&gt;drop us a line&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;Related Posts&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2008/02/28/deploying-rails-with-an-interactive-capistrano-recipe-to-your-boxcar"&gt;Deploying Rails with an interactive Capistrano recipe to your Boxcar&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2008/04/14/announcing-cobalt-and-monthly-subscriptions-for-boxcar"&gt;Announcing Cobalt and monthly subscriptions for Boxcar&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
</description>
      <pubDate>Tue, 15 Apr 2008 12:16:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:6f009771-e806-48fd-9d6f-a236f85accbc</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/15/boxcar-conductor-rails-deployment-made-easy</link>
      <category>Business</category>
      <category>Ruby on Rails</category>
      <category>PLANET ARGON</category>
      <category>deployment</category>
      <category>rails</category>
      <category>rubyonrails</category>
      <category>boxcar</category>
      <category>planetargon</category>
      <category>capistrano</category>
      <category>git</category>
    </item>
    <item>
      <title>Announcing Cobalt and monthly subscriptions for Boxcar</title>
      <description>&lt;p&gt;We&amp;#8217;ve been designing and developing a new centralized billing platform over the past few months and late last week, we launched it! Along with this new billing platform, we launched another new application, &lt;a href="http://cobalt.planetargon.com"&gt;Cobalt&lt;/a&gt;, which is a new account management and support tool for our hosting customers.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/jxi8/cobalt-account-management"&gt;&lt;img src="http://img.skitch.com/20080414-fifqwjjm6cw5h8da13enma17tb.preview.jpg" alt="Cobalt - account management" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;We&amp;#8217;ll be migrating all of our past customers over to this new system in time, but are initially using it for new &lt;a href="http://railsboxcar.com"&gt;Boxcar&lt;/a&gt; customers.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://www.railsboxcar.com/img/boxcar_logo_wide.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;ve been building the new system to use &lt;a href="http://www.braintreepaymentsolutions.com/"&gt;Braintree&lt;/a&gt; as our new credit card payment gateway. With this switch, we&amp;#8217;re also &lt;a href="http://blog.planetargon.com/2008/4/10/monthly-pricing-plan-for-rails-boxcar"&gt;introducing monthly subscription rates for Boxcar&lt;/a&gt;, which means that you can try it out month-to-month now.&lt;/p&gt;


	&lt;p&gt;Over the next few weeks/months, we&amp;#8217;ll be announcing several features to Cobalt that will ease your Rails deployment experience.&lt;/p&gt;


	&lt;p&gt;I want to thank all those on my team that helped get these new applications up and running.&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re looking for professional &lt;span class="caps"&gt;VPS&lt;/span&gt;-based Rails hosting, hop on our train by &lt;a href="http://cobalt.planetargon.com/signup"&gt;ordering a Boxcar today&lt;/a&gt; for &lt;strong&gt;$99/month&lt;/strong&gt;!&lt;/p&gt;


	&lt;p&gt;For more information, visit &lt;a href="http://railsboxcar.com"&gt;railsboxcar.com&lt;/a&gt; or &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Also, be sure to &lt;a href="http://twitter.com/boxcar"&gt;follow Boxcar&lt;/a&gt; on twitter.&lt;/p&gt;
</description>
      <pubDate>Mon, 14 Apr 2008 10:24:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:583d093a-df18-4580-b288-97d7a7d9e203</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/14/announcing-cobalt-and-monthly-subscriptions-for-boxcar</link>
      <category>Business</category>
      <category>Ruby on Rails</category>
      <category>PLANET ARGON</category>
      <category>boxcar</category>
      <category>rubyonrails</category>
      <category>rails</category>
      <category>hosting</category>
      <category>cobalt</category>
      <category>vps</category>
    </item>
    <item>
      <title>Interviewed by Hanselminutes</title>
      <description>&lt;p&gt;Earlier this week, Scott Hanselman from &lt;a href="http://www.hanselminutes.com/"&gt;Hanselminutes&lt;/a&gt; came down to the &lt;a href="http://planetargon.com/"&gt;Planet Argon&lt;/a&gt; studio to interview Andy, Gary, and myself about adoption of &lt;a href="http://www.hanselminutes.com/"&gt;Git&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.hanselminutes.com/default.aspx?showID=126"&gt;&lt;img src="http://img.skitch.com/20080411-ty71fcsin2d59x32csn5hk1w.preview.jpg" alt="Hanselminutes" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;The &lt;a href="http://www.hanselminutes.com/default.aspx?showID=126"&gt;podcast interview is available online now&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Thanks for stopping by Scott!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;update&lt;/strong&gt;: I&amp;#8217;d recommend that you also check out &lt;a href="http://www.hanselminutes.com/default.aspx?showID=82"&gt;another episode&lt;/a&gt; of Hanselminutes when he sat down to speak with David Heinemeier Hansson and Martin Fowler.&lt;/p&gt;
</description>
      <pubDate>Fri, 11 Apr 2008 08:31:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4ce4ff81-3b48-4c19-83ef-2278f8ec5c56</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/11/interviewed-by-hanselminutes</link>
      <category>PLANET ARGON</category>
      <category>git</category>
      <category>subversion</category>
      <category>interview</category>
      <category>gary</category>
      <category>andy</category>
    </item>
    <item>
      <title>Portland is calling... (you)</title>
      <description>&lt;p&gt;We&amp;#8217;re &lt;em&gt;not&lt;/em&gt; looking for &lt;strong&gt;rock stars&lt;/strong&gt; or &lt;strong&gt;ninjas&lt;/strong&gt; at &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt;. ;-)&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;re looking for individuals that share our core values.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;&lt;span class="caps"&gt;COLLABORATION&lt;/span&gt;&lt;/strong&gt; &amp;#8211; We believe that an open dialogue between all members of a group helps to produce more reasoned and intelligent decisions.&lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;&lt;span class="caps"&gt;ENTHUSIASM&lt;/span&gt;&lt;/strong&gt; &amp;#8211; We recognize the unique power of people who are passionate about their craft. We believe that fun is an essential ingredient in a collaborative and vibrant company culture. We think happy people make better software.&lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;&lt;span class="caps"&gt;COMMUNITY&lt;/span&gt;&lt;/strong&gt; &amp;#8211; We are part of many communities. Our neighborhoods, our cities, our workplace, and our professional communities. We give back to our communities by implementing socially responsible business practices and sharing our knowledge and tools with our peers.&lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;&lt;span class="caps"&gt;VERSATILITY&lt;/span&gt;&lt;/strong&gt; &amp;#8211; We believe that it is important for our team to be open and flexible, as well as the work that we do. This allows us to adapt to change and encourage innovation.&lt;/li&gt;
		&lt;li&gt;&lt;strong&gt;&lt;span class="caps"&gt;EXECUTION&lt;/span&gt;&lt;/strong&gt; &amp;#8211; We value action and when people make things happen. It is important that we follow through on our commitments, plans, and ideas.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;..maybe you&amp;#8217;re a .NET/Java/PHP/Python developer (who secretly plays with Ruby on Rails at night/weekends). We&amp;#8217;re looking for an intermediate-level Rails developer to join our team. Ideal candidates would be in the Portland, Oregon area or willing to relocate.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/1010617384/" title="PLANET ARGON by Robby Russell, on Flickr"&gt;&lt;img src="http://farm2.static.flickr.com/1081/1010617384_662ad8ed7d.jpg" width="500" height="333" alt="PLANET ARGON" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re interested, take a moment and &lt;a href="mailto:jobs@planetargon.com"&gt;introduce yourself&lt;/a&gt;.&lt;/p&gt;
</description>
      <pubDate>Fri, 11 Apr 2008 01:30:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:e45eab8f-d9f9-41a6-8c7d-4b0d0a7bb244</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/11/portland-is-calling-you</link>
      <category>Business</category>
      <category>Ruby on Rails</category>
      <category>PLANET ARGON</category>
      <category>jobs</category>
      <category>portland</category>
      <category>planetargon</category>
      <category>oregon</category>
      <category>team</category>
      <category>values</category>
      <category>community</category>
      <category>collaboration</category>
      <category>enthusiasm</category>
      <category>versatility</category>
      <category>execution</category>
    </item>
    <item>
      <title>git-svn is a gateway drug</title>
      <description>&lt;p&gt;As we&amp;#8217;re migrating away from Subversion to Git, I&amp;#8217;m having to learn a lot about &lt;code&gt;git-svn&lt;/code&gt;. Andy has &lt;a href="http://andy.delcambre.com/2008/3/4/git-svn-workflow"&gt;posted a few articles&lt;/a&gt; on this topic, but I wanted to share a quick tip that I find myself forgetting.&lt;/p&gt;


	&lt;h2&gt;Working with Subversion branches&lt;/h2&gt;


	&lt;p&gt;While you&amp;#8217;re hopefully already familiar with how great &lt;strong&gt;local branches&lt;/strong&gt; are with Git, you might not know that you can connect local branches to &lt;strong&gt;remote&lt;/strong&gt; branches in your Subversion repository. This allows those of us who are using Git locally to work against Subversion branches.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m going to assume the following:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Your team is using Subversion&lt;/li&gt;
		&lt;li&gt;Your team already has a branch that you&amp;#8217;re working in&lt;/li&gt;
		&lt;li&gt;Your team is following Subversion directory conventions (&lt;code&gt;branches/&lt;/code&gt;, &lt;code&gt;tags/&lt;/code&gt;, and &lt;code&gt;trunk/&lt;/code&gt;)&lt;/li&gt;
		&lt;li&gt;You have Git installed (&lt;em&gt;with &lt;span class="caps"&gt;SVN&lt;/span&gt; extensions&lt;/em&gt;)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h3&gt;Checkout the Subversion project with Git&lt;/h3&gt;


	&lt;p&gt;Please visit Andy&amp;#8217;s tutorial, &lt;a href="http://andy.delcambre.com/2008/3/4/git-svn-workflow"&gt;Git &lt;span class="caps"&gt;SVN&lt;/span&gt; Workflow&lt;/a&gt;, for a more detailed explanation of the following commands.&lt;/p&gt;


	&lt;p&gt;First, we&amp;#8217;ll initialize your new local Git repository with &lt;code&gt;git-svn&lt;/code&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  git svn init -s http://svn.yourdomain.com/repos/project_name
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, you&amp;#8217;ll change directories to your new Git repository.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  cd project_name
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Let&amp;#8217;s fetch all previous revisions into your local repository&lt;sup&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  git svn fetch
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Great, once this is done&amp;#8230; you&amp;#8217;re &lt;strong&gt;master&lt;/strong&gt; (local) branch is linked to &lt;code&gt;trunk/&lt;/code&gt;.&lt;/p&gt;


	&lt;h3&gt;Mapping a local repository to a remote branch&lt;/h3&gt;


	&lt;p&gt;Assuming that your team is working in a Subversion branch on the current iteration of work. Our team has a naming convention for branches for each iteration. For example, if we&amp;#8217;re in Iteration 18, we&amp;#8217;ll write this as &lt;span class="caps"&gt;ITER&lt;/span&gt;-018 everywhere (Basecamp, Lighthouse, Subversion, etc&amp;#8230;). At the start of each iteration, we create a new branch with this naming convention.&lt;/p&gt;


	&lt;p&gt;For &lt;code&gt;ITER-018&lt;/code&gt;, the Subversion branch would be located at:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;http://svn.yourdomain.com/repos/project_name/branches/ITER-018&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;If you were to do a &lt;code&gt;git branch -r&lt;/code&gt;, you should see &lt;code&gt;ITER-018&lt;/code&gt; show up in the list. Now, the one thing that wasn&amp;#8217;t clear when I first read the &lt;code&gt;git-svn&lt;/code&gt; documentation was that you can&amp;#8217;t just checkout that branch with one command. In fact, this has tripped me up a few times.&lt;/p&gt;


	&lt;p&gt;First, you&amp;#8217;ll need to checkout a new &lt;em&gt;local&lt;/em&gt; branch. I&amp;#8217;ve opted to come up with my own convention for &lt;em&gt;local branches&lt;/em&gt; and in this case, I&amp;#8217;ll name it &lt;code&gt;iter_018&lt;/code&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  git co -b iter_018
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;So, now I&amp;#8217;m in the iter_018 branch, which is local. I&amp;#8217;m currently still mapped to &lt;code&gt;trunk/&lt;/code&gt;, which isn&amp;#8217;t what we want. However, all we need to do is reset where Git is currently pointed to. We can run &lt;a href="http://andy.delcambre.com/2008/3/12/git-reset-in-depth"&gt;git reset&lt;/a&gt; to point this to the &lt;span class="caps"&gt;ITER&lt;/span&gt;-018 branch.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  git reset --hard ITER-018
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;That&amp;#8217;s it! Now, the local &lt;code&gt;iter_018&lt;/code&gt; branch will point to &lt;code&gt;branches/ITER-018&lt;/code&gt; in your Subversion repository. This will allow you to work with your existing repository branch and still reap the benefits of local Git repositories.&lt;/p&gt;


	&lt;h3&gt;What about master?&lt;/h3&gt;


	&lt;p&gt;Good question. The &lt;code&gt;git reset&lt;/code&gt; command that you ran will &lt;span class="caps"&gt;ONLY&lt;/span&gt; apply that that individual local branch. So, master is &lt;em&gt;still&lt;/em&gt; pointing to &lt;code&gt;trunk/&lt;/code&gt;. This will allow you to have several local branches that map to remote branches.&lt;/p&gt;


	&lt;h2&gt;Next Steps&amp;#8230;&lt;/h2&gt;


	&lt;p&gt;If you&amp;#8217;re working with Git already.. great!&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re working in an environment that using Subversion, &lt;code&gt;git svn&lt;/code&gt; provides you the ability to start exploring Git without making your entire team switchover. Perhaps your a consultant and working for a client that uses Subversion&amp;#8230; no problem!&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;re still using Subversion for past client projects and are considering &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;, which &lt;a href="http://github.com/blog/40-we-launched"&gt;just launched (to the public) today&lt;/a&gt; for future projects. A few of us are already using GitHub for open source projects.&lt;/p&gt;


	&lt;p&gt;Fun.. I just saw the following tweet pass by as I began to wrap up this post.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/jeh1/rails-on-github"&gt;&lt;img src="http://img.skitch.com/20080411-rgageidq82ak6ij952ppant4u9.preview.jpg" alt="rails on github" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;&lt;a href="http://github.com/rails/"&gt;Check out Rails on GitHub!&lt;/a&gt;&lt;/p&gt;


	&lt;h3&gt;The Gateway Drug&amp;#8230; Git reminds me of Cake&lt;/h3&gt;


&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/g0GxUxKZdHk&amp;#38;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/g0GxUxKZdHk&amp;#38;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;

	&lt;h3&gt;Questions?&lt;/h3&gt;


	&lt;p&gt;I know that I glossed over a few things, so feel free to post questions and/or tips for others who are looking to dabble with Git.&lt;/p&gt;


	&lt;p id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; You&amp;#8217;ll likely have problems if you don&amp;#8217;t have a Git authors file specified in your git config.&lt;/p&gt;
</description>
      <pubDate>Thu, 10 Apr 2008 22:28:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:cea369ee-eed9-4ec3-a0e9-91421f590dd7</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/10/git-svn-is-a-gateway-drug</link>
      <category>Ruby on Rails</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>git</category>
      <category>rubyonrails</category>
      <category>subversion</category>
      <category>github</category>
    </item>
    <item>
      <title>1Password and Fluid.app </title>
      <description>&lt;p&gt;I&amp;#8217;ve been really happy with my purchase of &lt;a href="http://1password.com/"&gt;1Password&lt;/a&gt; so far. If you&amp;#8217;re not familiar with it, I would really recommend their free-trial. I&amp;#8217;ve been really impressed with how quickly it became reliant upon it. 1Password works across several browsers, imports existing passwords, and even has integration with your iPhone. However, over the past month, I&amp;#8217;ve been wishing that it worked with my &lt;a href="http://fluidapp.com/"&gt;Fluid&lt;/a&gt; applications.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://support.agilewebsolutions.com/showthread.php?t=9312&amp;#38;highlight=fluid"&gt;1Password 2.6.BETA-2&lt;/a&gt; was released a few days ago one of the features added was integration with Fluid applications.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/e7bf/fluid-and-1password"&gt;&lt;img src="http://img.skitch.com/20080404-j3t7cskh476kaq76it7jhn3498.preview.jpg" alt="Fluid and 1password" /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;small&gt;Signing into &lt;a href="http://www.lighthouseapp.com/"&gt;Lighthouse&lt;/a&gt; with 1Password&lt;/small&gt;&lt;/div&gt;

	&lt;p&gt;I&amp;#8217;m glad to see that Agile Web Solutions was so quick to respond to the &lt;a href="http://support.agilewebsolutions.com/showthread.php?t=8617&amp;#38;highlight=fluid"&gt;flurry of people requesting this&lt;/a&gt;.&lt;/p&gt;


	&lt;h3&gt;Related Post(s)&lt;/h3&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2008/03/05/campfire-messages-in-growl"&gt;Campfire messages in Growl&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
</description>
      <pubDate>Fri, 04 Apr 2008 09:22:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:36f2893d-4f00-49e2-be53-51a0f4d77bb1</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/04/1password-and-fluid-app</link>
      <category>1password</category>
      <category>fluid</category>
      <category>osx</category>
      <category>security</category>
      <category>lighthouse</category>
    </item>
    <item>
      <title>iPhone's Missing Feature</title>
      <description>&lt;p&gt;I love my iPhone. There&amp;#8230; I said it.&lt;/p&gt;


	&lt;p&gt;There is one problem with it (and I don&amp;#8217;t blame Apple for it). Multimedia Messaging is pretty much non-existent with non-iPhone friends &amp;#38; family. My family continues to send me pictures/videos via text message&amp;#8230; because they can with their other friends and family. I find myself looking at the following message quite often.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/eh8r/img-5279.jpg"&gt;&lt;img src="http://img.skitch.com/20080404-g428q4qcbc169gi5pbgrn6epwj.preview.jpg" alt="IMG_5279.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;Then I go to AT&amp;#38;T&amp;#8217;s &lt;span class="caps"&gt;AMAZING&lt;/span&gt; site&amp;#8230;&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/e51s/viewmymessage-is-shit"&gt;&lt;img src="http://img.skitch.com/20080403-x4b3ewcw9ux56jb8y7q1n3ga2q.preview.jpg" alt="viewmymessage is shit" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;...and I get a broken image.&lt;/p&gt;


	&lt;p&gt;Great work AT&amp;#38;T! Apple&amp;#8230; this is tainting my experience with the iPhone. Make them fix it!&lt;/p&gt;
</description>
      <pubDate>Thu, 03 Apr 2008 19:17:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:a609718c-530f-43f3-9cb5-4af7400da216</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/03/iphones-missing-feature</link>
      <category>att</category>
      <category>iphone</category>
      <category>apple</category>
      <category>failure</category>
      <category>annoyance</category>
    </item>
    <item>
      <title>I am forking Rails</title>
      <description>&lt;p&gt;...well, creating a fork on GitHub. ;-)&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/e32x/fork-rails"&gt;&lt;img src="http://img.skitch.com/20080402-7jfqp4wbc4h32q3cwysaincfa.preview.jpg" alt="fork rails" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;It appears that Rails is moving from Subversion to Git!&lt;/p&gt;


	&lt;p&gt;Courtenay posted &lt;a href="http://blog.caboo.se/articles/2008/4/2/it-s-official-rails-moves-to-git"&gt;this&lt;/a&gt; a little while ago.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
git clone git://github.com/rails/rails.git
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Check it out the &lt;a href="http://github.com/rails"&gt;Ruby on Rails project&lt;/a&gt; on GitHub.&lt;/p&gt;


	&lt;p&gt;Start working on your next patch with git&amp;#8230;&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
git clone git://github.com/rails/rails.git
cd rails
git br -a
git br my_patch
git co my_patch
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This is cool news. :-)&lt;/p&gt;
</description>
      <pubDate>Wed, 02 Apr 2008 15:01:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d06a69ee-8006-480f-92f7-6c0c3f53e9e6</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/04/02/forking-rails</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>git</category>
      <category>rubyonrails</category>
      <category>subversion</category>
      <category>github</category>
    </item>
    <item>
      <title>Tip: Link to Unimplemented</title>
      <description>&lt;p&gt;Throughout our design and development process, we&amp;#8217;re working around areas of the site that are not yet implemented but we also want to be able to allow our clients to demo their application. In an effort to manage their expectations, we need to be careful about what we link to. If a page/widget isn&amp;#8217;t ready to be demo&amp;#8217;d yet, we should avoid providing pathways to get interact with or navigate there. However, when we&amp;#8217;re implementing &lt;span class="caps"&gt;HTML&lt;/span&gt;/CSS for pages, it&amp;#8217;s sometimes makes sense to not hide certain things on the screen.&lt;/p&gt;


	&lt;p&gt;For example, let&amp;#8217;s suppose that you&amp;#8217;re working on the primary navigation of an application. You know what the other sections are going to be, but you&amp;#8217;ve only implemented a few of them so far. Your &lt;span class="caps"&gt;HTML&lt;/span&gt;/CSS person is working on the design for the navigation and wants to have them be proper links&amp;#8230; even to pages that don&amp;#8217;t yet exist.&lt;/p&gt;


	&lt;p&gt;One option, which is quite common, is to provide a link with &lt;code&gt;href="#"&lt;/code&gt;. This works to some extent, but when people click on things, they naturally expect something to happen in response.&lt;/p&gt;


	&lt;p&gt;This approach doesn&amp;#8217;t mesh well with our team as we don&amp;#8217;t really want to field any questions like, &amp;#8220;the navigation links are all broken. Nothing happens!&amp;#8221;&lt;/p&gt;


	&lt;p&gt;So, a pattern that we&amp;#8217;ve been using for a while is to trigger a javascript alert for every link within an implemented area that is linking to something that isn&amp;#8217;t yet implemented.&lt;/p&gt;


	&lt;p&gt;Let&amp;#8217;s take a really basic javascript function like:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
# public/javascripts/application.js
function unimplemented() {
  alert("NOTICE\n\nThis feature is not implemented yet. Please check back again soon!");
}
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This allows us to do the following:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  &amp;lt;a href="javascript:unimplemented();"&amp;gt;link text&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;When someone clicks the link, they&amp;#8217;ll see a typical javascript alert message. This informs our clients/beta testers that we&amp;#8217;re paying attention to what works and what doesn&amp;#8217;t.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/ecx1/unimplemented"&gt;&lt;img src="http://img.skitch.com/20080327-pbcddnkj85bu6m9x7mspme5y6.preview.jpg" alt="unimplemented" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;Let&amp;#8217;s take it a step further and push this into a view helper.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
# app/helpers/application_helper.rb
def link_to_unimplemented( link_text, *args )
  link_to_function( link_text, 'unimplemented()', *args)
end
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, we&amp;#8217;re able to use &lt;code&gt;link_to_unimplemented&lt;/code&gt; and pass any arguments that you&amp;#8217;d pass to the default &lt;code&gt;link_to&lt;/code&gt; view helper.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
&amp;lt;%= link_to_unimplemented( 'link text', { :class =&amp;gt; 'link_class_name' } ) -%&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now our web designers can go about their work and use this helper as necessary.&lt;/p&gt;


	&lt;p&gt;An nice benefit for doing this is that we have a pattern that we follow so that we can rely upon to make sure that we don&amp;#8217;t forget anything. This is the equivalent of adding @TODO@s throughout our code base.&lt;/p&gt;


	&lt;p&gt;If we search through &lt;code&gt;app/views&lt;/code&gt; for &amp;#8216;&lt;strong&gt;&lt;code&gt;link_to_unimplemented&lt;/code&gt;&lt;/strong&gt;&amp;#8217; we should be able to prevent missing any broken links. In the next screenshot, I&amp;#8217;m using &lt;code&gt;grep&lt;/code&gt; with colorized matches.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/ecxh/unimplemented-2"&gt;&lt;img src="http://img.skitch.com/20080327-eg83hqhgpspk4n71hquswjpasf.preview.jpg" alt="unimplemented 2" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt; 

	&lt;p&gt;As you can see, we have something left to implement in that area of the application. :-)&lt;/p&gt;


	&lt;p&gt;This has been one of those lightweight patterns that we&amp;#8217;ve been able to adopt and it&amp;#8217;s definitely helped manage the expectations of our clients throughout our development process.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;d love to hear your thoughts on this. How does your team handle things like this?&lt;/p&gt;


	&lt;h2&gt;Related Posts&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/08/01/designers-developers-and-the-x_-factor"&gt;Designers, Developers, and the x_ Factor&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/10/06/spice-up-your-terminal-with-colored-grep-pattern-results"&gt;Spice up your Terminal with colored grep pattern results&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
</description>
      <pubDate>Thu, 27 Mar 2008 06:10:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:f2aad3fb-9728-4db3-8504-a7bf2bd76b24</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/27/tip-link-to-unimplemented</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>clients</category>
      <category>javascript</category>
      <category>helper</category>
      <category>development</category>
      <category>design</category>
      <category>html</category>
      <category>tip</category>
    </item>
    <item>
      <title>Managing Required Gems on Rails Projects</title>
      <description>&lt;p&gt;We&amp;#8217;re starting a new project and I&amp;#8217;m finding myself adding things to the code base that we&amp;#8217;ve done in the past&amp;#8230; hence the last few posts. As we&amp;#8217;re doing this, I&amp;#8217;d like to highlight some of the little things that we do on each project to maintain some consistency and in that process reach out to the community for alternative approaches.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m intrigued by the &lt;a href="http://errtheblog.com/posts/50-vendor-everything"&gt;vendor everything&lt;/a&gt; concept, but we haven&amp;#8217;t yet adopted this on any of our projects (yet).&lt;/p&gt;


	&lt;p&gt;What we have been doing is to maintain a &lt;code&gt;REQUIRED_GEMS&lt;/code&gt; file in the root directory of our Rails application.&lt;/p&gt;


	&lt;p&gt;For example:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
$ cat REQUIRED_GEMS

actionmailer
actionpack
actionwebservice
activerecord
activesupport
cgi_multipart_eof_fix
daemons
fastercsv
fastthread
feedtools
gem_plugin
image_science
mongrel
mongrel_cluster
mysql
rails
rake
RedCloth
Ruby-MemCache
soap4r
uuidtools
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Everybody on the team (designers/developers) knows to look here to make sure they have everything installed when beginning to work on the application.&lt;/p&gt;


	&lt;p&gt;This has worked fairly well from project to project but since we&amp;#8217;re starting a new project, I&amp;#8217;m curious if anybody has some better ways to approach this. Should we look more seriously at the vendor everything approach or are there any alternative approaches?&lt;/p&gt;
</description>
      <pubDate>Wed, 26 Mar 2008 22:27:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:1dad9e29-fb50-447c-802d-1a0f6109ff1d</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/26/managing-required-gems-on-rails-projects</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>gems</category>
      <category>rubyonrails</category>
      <category>ruby</category>
      <category>rails</category>
      <category>workflow</category>
      <category>team</category>
      <category>planetargon</category>
      <category>question</category>
      <category>tip</category>
    </item>
    <item>
      <title>Managing SEO-friendly HTML Titles with Rails</title>
      <description>&lt;p&gt;I&amp;#8217;ve seen this come up a few times in the #rubyonrails &lt;span class="caps"&gt;IRC&lt;/span&gt; channel and figured that I&amp;#8217;d post a quick entry for future reference.&lt;/p&gt;


	&lt;h2&gt;Problem: &lt;span class="caps"&gt;HTML&lt;/span&gt; titles&lt;/h2&gt;


	&lt;p&gt;&lt;strong&gt;You want to have a clean way to manage the titles on your &lt;span class="caps"&gt;HTML&lt;/span&gt; pages.&lt;/strong&gt;&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  &amp;lt;html&amp;gt;
    &amp;lt;head&amp;gt;
      &amp;lt;title&amp;gt;Robby on Rails &amp;amp;mdash; Article Title Goes Here&amp;lt;/title&amp;gt;
    &amp;lt;/head&amp;gt;
    &amp;lt;body&amp;gt;
      ...
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Possible Solution(s):&lt;/p&gt;


	&lt;p&gt;Since the &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; tag is usually declared in your layout, you need to be able to dynamically update this information from almost every action in your application.&lt;/p&gt;


	&lt;p&gt;Here are a few ways that I&amp;#8217;ve seen this handled.&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;Use a instance variable, which would have a default value and you could override it in any controller action&lt;/li&gt;
		&lt;li&gt;Use the &lt;code&gt;content_for&lt;/code&gt; method to manage it.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;Let&amp;#8217;s take a few minutes to look at these two approaches.&lt;/p&gt;


	&lt;h3&gt;Instance Variable&lt;/h3&gt;


	&lt;p&gt;With the instance variable, you might end up with something like:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  # app/views/layouts/application.html.erb
  &amp;lt;title&amp;gt;Robby on Rails &amp;amp;mdash; &amp;lt;%= @html_title || 'Default text here...' -%&amp;gt;&amp;lt;/title&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Then in a controller action&amp;#8230;&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  # app/controllers/articles_controller.rb
  def show
    # ...
    @html_title = @article.title
  end
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;So, that&amp;#8217;s one way to handle it and is probably a more common way.&lt;/p&gt;


	&lt;h3&gt;The &lt;code&gt;content_for&lt;/code&gt; helper method approach&lt;/h3&gt;


	&lt;p&gt;This solution is very similar (and underneath uses an instance variable).&lt;/p&gt;


	&lt;p&gt;We&amp;#8217;ll use the &lt;a href="http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#M001069"&gt;content_for&lt;/a&gt; and a little &lt;code&gt;yield&lt;/code&gt; action.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  # app/views/layouts/application.html.erb
  &amp;lt;title&amp;gt;Robby on Rails &amp;lt;%= (html_title = yield :html_title) ? html_title : '&amp;amp;mdash; Default text here...' %&amp;gt;&amp;lt;/title&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Then we&amp;#8217;ll create a helper method.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  # app/helpers/application_helper.rb
  def set_html_title(str="")
    unless str.blank?
      content_for :html_title do
       "&amp;amp;mdash; #{str} " 
      end
    end
  end  
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, instead of defining the &lt;span class="caps"&gt;HTML&lt;/span&gt; &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; value in the controllers, we&amp;#8217;ll just toss this into our html.erb files as necessary.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  &amp;lt;% set_html_title(@article.name) -%&amp;gt;
  ... rest of view
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;..and that&amp;#8217;s pretty much it.&lt;/p&gt;


	&lt;h3&gt;Which is the better solution?&lt;/h3&gt;


	&lt;p&gt;This is where we&amp;#8217;ll not find a lot of consensus amongst people. I&amp;#8217;m a fan of the &lt;code&gt;content_for&lt;/code&gt;-based approach and defining the title in views rather than in controller actions. I&amp;#8217;m an advocate of skinny controllers and while I&amp;#8217;m not a big fan of messy views, I believe that there is less overhead in managing this within the View-world.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;d love to hear your thoughts on this. Perhaps you have a more eloquent for managing things like this? Do share. :-)&lt;/p&gt;
</description>
      <pubDate>Wed, 26 Mar 2008 16:41:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:de684f82-efe6-48b6-a6f5-68ea542d72ef</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/26/managing-seo-friendly-html-titles-with-rails</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>html</category>
      <category>rails</category>
      <category>rubyonrails</category>
      <category>helpers</category>
    </item>
    <item>
      <title>Things (in the Rails world) You Don't Yet Understand</title>
      <description>&lt;p&gt;This is inspired by a recent post by Seth Godin titled, &lt;a href="http://sethgodin.typepad.com/seths_blog/2008/03/things-you-dont.html"&gt;Things you don&amp;#8217;t understand&lt;/a&gt;, where he shared a list of things that he probably could understand if he put your mind to it, but doesn&amp;#8217;t. I decided to post a list of five (5) things in response within the context of Ruby/Rails.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m really interested in various things but am really unable to prioritize them high enough to spend the time to understand them.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;RSpec User Stories&lt;/li&gt;
		&lt;li&gt;Using Selenium with RSpec&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://jquery.com/"&gt;JQuery&lt;/a&gt; (&lt;a href="http://blog.imperialdune.com/"&gt;Graeme&lt;/a&gt; speaks highly of it)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://code.google.com/p/jsspec/"&gt;JSSpec&lt;/a&gt; (BDD for Javascript)&lt;/li&gt;
		&lt;li&gt;Using the Google Charts &lt;span class="caps"&gt;API&lt;/span&gt; with Rails&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;What about you? What&amp;#8217;s your list of things that you&amp;#8217;d like to understand more about?&lt;/p&gt;
</description>
      <pubDate>Tue, 25 Mar 2008 10:12:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:2ad10b2f-7185-4d43-bc2e-1e881281f1c5</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/25/things-in-the-rails-world-you-dont-yet-understand</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>question</category>
      <category>rspec</category>
      <category>jquery</category>
      <category>javascript</category>
      <category>ruby</category>
      <category>rubyonrails</category>
      <category>rails</category>
      <category>google</category>
      <category>charts</category>
      <category>godin</category>
    </item>
    <item>
      <title>DRY(a): Year After Year</title>
      <description>&lt;p&gt;I&amp;#8217;m guilty of it. Many of you are likely guilty of it&amp;#8230; and I know that several customers of our &lt;a href="http://www.robbyonrails.com/articles/2007/06/17/audit-your-rails-development-team"&gt;Rails Code Audit and Review service&lt;/a&gt; are guilty of it.&lt;/p&gt;


	&lt;p&gt;How many times have you realized (after a few months has passed) that your Copyright date/year on your web site was no longer current?&lt;/p&gt;


	&lt;p&gt;How many of you had the same problem last year? The year before?&lt;/p&gt;


	&lt;p&gt;Let me share some advice with you all&amp;#8230; &lt;span class="caps"&gt;DRY&lt;/span&gt; (a)!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Don&amp;#8217;t Repeat Yourself (again)!&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;This is really a simple problem to fix but when we&amp;#8217;re busy tackling bigger problems&amp;#8230; little things like this slip by. Don&amp;#8217;t worry, you&amp;#8217;re not the only one who was reminded by a colleague three months into the year that you forgot to update this.&lt;/p&gt;


	&lt;p&gt;On client projects, we have a handful of helpers that we drop into the application. We&amp;#8217;re starting to extract more of these into plugins and will be releasing those as time permits. It just happened that I found myself looking at yet-another Rails code base this afternoon that was showing 2007 in the footer. An easily forgivable offense.. but if you&amp;#8217;re going to go in there and change it (again), &lt;em&gt;take a moment to do the right thing&lt;/em&gt;. ;-)&lt;/p&gt;


	&lt;p&gt;Our solution at &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt; on client projects is to create a basic view helper that renders the current year. This allows us to do the following.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  &amp;lt;div id="footer"&amp;gt;
    &amp;amp;copy; Copyright &amp;lt;%= current_year -%&amp;gt;. All Rights Reserved.
  &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;The helper code looks like:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  # add to application_helper.rb
  module ApplicationHelper
    def current_year
      Time.now.strftime('%Y')
    end
  end
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Voila. Not rocket science.. is it?&lt;/p&gt;


	&lt;p&gt;Guess what? I&amp;#8217;m getting really tired of adding this to every Rails project that I touch. So, I bottled this little gem into a new Rails plugin that we&amp;#8217;ll just add to future projects.&lt;/p&gt;


	&lt;h2&gt;Introducing Year after Year&lt;/h2&gt;


	&lt;p&gt;This is really the smallest plugin that I could put together (and it includes specs!)&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;What does it provide you?&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;YearAfterYear will provide you a helper that will render the current year (dynamically)! That&amp;#8217;s right&amp;#8230; just add the plugin to your Rails application and you too can enjoy New Years 2009 without having to have a deployment ready with a one line change from 2008 to 2009!&lt;/p&gt;


	&lt;p&gt;To use.. add the following to any view from within Ruby on Rails.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  &amp;lt;%= current_year -%&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

	&lt;h3&gt;Installation&lt;/h3&gt;


	&lt;p&gt;As I&amp;#8217;m using git, you&amp;#8217;ll need to grab this and put it into &lt;code&gt;vendor/plugins&lt;/code&gt;. That&amp;#8217;s it!&lt;/p&gt;


	&lt;p&gt;You can grab it on &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt;!&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/robbyrussell/year_after_year/"&gt;http://github.com/robbyrussell/year_after_year/&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Bugs / Feature Requests &lt;a href="http://planetargon.lighthouseapp.com/projects/5187-open-source-projects/tickets"&gt;here&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Happy New Years (8+ months early)!&lt;/p&gt;


	&lt;p&gt;Just a friendly reminder to not forget the small stuff&amp;#8230; because your visitors will notice! ;-)&lt;/p&gt;


	&lt;h3&gt;Updates&amp;#8230;&lt;/h3&gt;


	&lt;p&gt;I got a few requests for this to also provide a range of years for people who like to do: &lt;strong&gt;2005-2007&lt;/strong&gt;. So this is now provided as well.&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;year_range(start_year)&lt;/code&gt;&lt;/p&gt;


Example:
&lt;pre&gt;&lt;code&gt;
  &amp;lt;%= year_range(2005) %&amp;gt; # =&amp;gt; 2005-2008
&lt;/code&gt;&lt;/pre&gt;
</description>
      <pubDate>Mon, 24 Mar 2008 22:05:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4228a063-facc-4a13-bdb0-342c0fab415e</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/24/dry-a-year-after-year</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>sarcasm</category>
      <category>plugin</category>
      <category>rails</category>
      <category>rubyonrails</category>
      <category>years</category>
      <category>copyrights</category>
      <category>joke</category>
      <category>plugins</category>
    </item>
    <item>
      <title>Learning Git without getting your SVN feet wet</title>
      <description>&lt;p&gt;Our team has been migrating towards using &lt;a href="http://git.or.cz/"&gt;Git&lt;/a&gt; as our primary &lt;span class="caps"&gt;SCM&lt;/span&gt;. We have way too many Subversion-based projects and repositories to just do a clean switch over and not everybody on the team has had time to start playing with it. Baby-steps&amp;#8230;&lt;/p&gt;


	&lt;p&gt;So, for those of us who want to use it day-to-day, we&amp;#8217;re using &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html"&gt;git-svn&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://andy.delcambre.com/"&gt;Andy Delcambre&lt;/a&gt; has posted the first in a series of blog articles to help you pick up on using Git on Subversion-based projects. Check out his article, &lt;a href="http://andy.delcambre.com/2008/3/4/git-svn-workflow"&gt;Git &lt;span class="caps"&gt;SVN&lt;/span&gt; workflow&lt;/a&gt; to get up to speed.&lt;/p&gt;


	&lt;p&gt;Also, if you&amp;#8217;re on &lt;span class="caps"&gt;OSX&lt;/span&gt; and using Git&amp;#8230; check out &lt;a href="http://alternateidea.com"&gt;Justin Palmer&amp;#8217;s&lt;/a&gt; new project, &lt;a href="http://github.com/Caged/gitnub/wikis/home"&gt;GitNub&lt;/a&gt;, which describes itself as, &amp;#8220;a Gitk-like application written in RubyCocoa that looks like it belongs on a Mac.&amp;#8221; This looks promising. :-)&lt;/p&gt;
</description>
      <pubDate>Tue, 11 Mar 2008 01:59:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:00328f04-0b81-4c29-9915-1f4e729ae317</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/11/learning-git-without-getting-your-svn-feet-wet</link>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>git</category>
      <category>subversion</category>
      <category>svn</category>
      <category>scm</category>
      <category>code</category>
      <category>planetargon</category>
      <category>andy</category>
      <category>gitnub</category>
    </item>
    <item>
      <title>The Argon Express 2008? It's not too late!</title>
      <description>&lt;p&gt;Picture yourself and your laptop. It&amp;#8217;s been over a day and you&amp;#8217;re sitting on a train with a group of Rails developers with a view like this over your shoulder.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/planetargon/172836278/"&gt;&lt;img src="http://farm1.static.flickr.com/58/172836278_971d94bdcf.jpg?v=0" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Hacking and reading on the train.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/planetargon/171979062/"&gt;&lt;img src="http://farm1.static.flickr.com/48/171979062_67b4f36d32.jpg?v=0" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Enjoying the sceneary of the U.S.A.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/planetargon/171147271/in/pool-argonexpress"&gt;&lt;img src="http://farm1.static.flickr.com/72/171147271_327da3ae00.jpg?v=0" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Two years ago&amp;#8230; a group of us went from Portland to Chicago for RailsConf 2006 on the &lt;a href="http://theargonexpress.com"&gt;Argon Express&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/planetargon/170934210/"&gt;&lt;img src="http://farm1.static.flickr.com/60/170934210_1f1c24fdf1.jpg?v=0" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;I know this is a tad late&amp;#8230; but uf you haven&amp;#8217;t purchased plane tickets to Portland yet for CabooseConf or RailsConf 2008 and would be interested in catching the train from somewhere the East Coast, &lt;a href="mailto:robbyrussell+argonexpress@gmail.com"&gt;email me&lt;/a&gt; and we&amp;#8217;ll talk. I&amp;#8217;m hoping to organize the Argon Express 2008 over next few weeks.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/jeremyhubert/174669916/"&gt;&lt;img src="http://farm1.static.flickr.com/45/174669916_e117fb56b8.jpg?v=0" /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Wed, 05 Mar 2008 18:39:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:44f449d6-32ae-45c8-9a12-581bdc84a5c1</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/05/the-argon-express-2008-its-not-too-late</link>
      <category>Ruby on Rails</category>
      <category>PLANET ARGON</category>
      <category>argonexpress</category>
      <category>train</category>
      <category>railsconf</category>
      <category>caboose</category>
      <category>cabooseconf</category>
      <category>rails</category>
      <category>rubyonrails</category>
      <category>agile</category>
    </item>
    <item>
      <title>Campfire messages in Growl</title>
      <description>&lt;p&gt;Our team has slowly been transitioning from &lt;span class="caps"&gt;IRC&lt;/span&gt; to &lt;a href="http://campfirenow.com"&gt;Campfire&lt;/a&gt; (iPhone interface helped with this decision) for internal team discussions. Earlier today, I decided to setup Campfire to connect to Growl. There are a few scripts to do this, but I figured that I&amp;#8217;d consolidate the steps here for my teammates and share with everyone else in the process.&lt;/p&gt;


	&lt;h2&gt;Step 1: Get stuff installed&lt;/h2&gt;


	&lt;p&gt;You&amp;#8217;ll need to install the following programs on &lt;span class="caps"&gt;OSX&lt;/span&gt;.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://growl.info"&gt;Growl&lt;/a&gt; (install and run it)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://fluidapp.com/"&gt;Fluid.app&lt;/a&gt; (run a web site in it&amp;#8217;s own desktop app)
	&lt;ul&gt;
	&lt;li&gt;Follow instructions on their homepage (requires restart of Safari)&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Step 2: Setup Campfire&lt;/h2&gt;


	&lt;p&gt;Once you have everything installed, you can go ahead and create your Campfire Fluid application. You&amp;#8217;ll need to provide your Campfire &lt;span class="caps"&gt;URL&lt;/span&gt; and a name for the application.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/8e9e/campfire-fluid"&gt;&lt;img src="http://img.skitch.com/20080305-gxjxd3m7798mwq88mrfmktwh8u.preview.jpg" alt="Campfire Fluid" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;Once you get it running, you should be able to run your Campfire application in it&amp;#8217;s own window.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/8e9u/campfire-blogging"&gt;&lt;img src="http://img.skitch.com/20080305-fpbmsgncwxrpx2yuq7e4fqn5e3.preview.jpg" alt="Campfire: Blogging" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;h3&gt;Step 3: Install the Campfire Growl script for GreaseKit&lt;/h3&gt;


	&lt;p&gt;Next, you&amp;#8217;ll want to install &lt;a href="http://userscripts.org/scripts/show/22891"&gt;this script&lt;/a&gt;, created by Tim Harper, on userscripts.org within your Campfire Fluid.app instance.&lt;/p&gt;


	&lt;p&gt;Under the Userscripts menu, you&amp;#8217;ll see: Browse Userscripts.org.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/8e99/userscripts"&gt;&lt;img src="http://img.skitch.com/20080305-1dqq1b6cfrc4rda7tdxrsga73g.preview.jpg" alt="Userscripts" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;Find your way to the script (search for: &amp;#8220;Campfire Growl&amp;#8221;) to find and install the script.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/8jyg/growl-notifications-with-messages-for-campfire-and-fluid-userscripts.org"&gt;&lt;img src="http://img.skitch.com/20080305-nnq98j3xpx7pa8fb71ba7yfyg1.preview.jpg" alt="Growl Notifications with messages for campfire and fluid 2013 Userscripts.org" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;Once it installs, you&amp;#8217;ll then need to activate it in the Fluid applications management interface. Within Campfire application, go to &lt;strong&gt;Userscripts &amp;gt; Manage Userscripts&lt;/strong&gt;.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/8jym/manage-userscripts"&gt;&lt;img src="http://img.skitch.com/20080305-8nxmc4nsawpmpwms696gnq9fum.preview.jpg" alt="manage userscripts" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;Then activate it like so:&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/8jyw/activate-growl"&gt;&lt;img src="http://img.skitch.com/20080305-ptths7kx55wi29npf73b7dbc1g.preview.jpg" alt="activate growl" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;..and that&amp;#8217;s it! When you&amp;#8217;re not focused on Campfire&amp;#8230; you should see Growl notifications when other people are talking in the active room.&lt;/p&gt;
</description>
      <pubDate>Wed, 05 Mar 2008 16:24:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:c4a0fc62-b4ab-420b-ad01-575608f46a21</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/05/campfire-messages-in-growl</link>
      <category>growl</category>
      <category>campfire</category>
      <category>osx</category>
      <category>notifications</category>
      <category>team</category>
      <category>communication</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Launch your own RubyURL</title>
      <description>&lt;p&gt;A few weeks ago, I moved &lt;a href="http://rubyurl.com"&gt;RubyURL&lt;/a&gt; from subversion to git. During that process, I decided to use my invite to &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt; and have decided to go ahead and open up the source code.&lt;/p&gt;


	&lt;p&gt;It&amp;#8217;s currently a whopping 92 &lt;span class="caps"&gt;LOC&lt;/span&gt; with a 1:2.5 code to spec ratio. (I had a goal to keep is below 100 &lt;span class="caps"&gt;LOC&lt;/span&gt;)&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;RubyURL on GitHub: &lt;a href="http://github.com/robbyrussell/rubyurl"&gt;http://github.com/robbyrussell/rubyurl&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Public Clone &lt;span class="caps"&gt;URL&lt;/span&gt;: &lt;a href="git://github.com/robbyrussell/rubyurl.git"&gt;git://github.com/robbyrussell/rubyurl.git&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Feel free to grab it and help contribute. This has served almost &lt;strong&gt;14 million&lt;/strong&gt; redirects since August 2007 and is running on a &lt;a href="http://planetargon.com/hosting.html"&gt;Rails Boxcar&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;To grab it with git.. run: &lt;code&gt;git clone git://github.com/robbyrussell/rubyurl.git&lt;/code&gt;.&lt;/p&gt;


	&lt;p&gt;Feel free to submit tickets to the &lt;a href="http://planetargon.lighthouseapp.com/projects/4059-rubyurl"&gt;Rubyurl ticket system&lt;/a&gt;.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://planetargon.lighthouseapp.com/projects/4059-rubyurl"&gt;http://planetargon.lighthouseapp.com/projects/4059-rubyurl&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Enjoy!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;&lt;/strong&gt; Ryan McGeary was kind enough to be the first person to help track down a bug and &lt;a href="http://github.com/robbyrussell/rubyurl/commits/master"&gt;submit patches&lt;/a&gt;. :-)&lt;/p&gt;
</description>
      <pubDate>Sat, 01 Mar 2008 18:31:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a1e839d1-4c9b-47d6-931c-b0559ea71539</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/01/launch-your-own-rubyurl</link>
      <category>RubyURL</category>
      <category>Ruby on Rails</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>rubyurl</category>
      <category>boxcar</category>
      <category>git</category>
      <category>subversion</category>
      <category>github</category>
      <category>open</category>
      <category>source</category>
      <category>rails</category>
      <category>rspec</category>
    </item>
    <item>
      <title>Deploying Rails with an interactive Capistrano recipe to your Boxcar</title>
      <description>&lt;p&gt;I wanted to share something that I&amp;#8217;ve been meaning to share on here.&lt;/p&gt;


	&lt;p&gt;When we began planning &lt;a href="http://railsboxcar.com"&gt;Rails Boxcar&lt;/a&gt;, we really want to reduce the amount of work that it took to setup and deploy a &lt;span class="caps"&gt;VPS&lt;/span&gt; for a Rails application. During this period, we began to look at the deployment process itself and began working on an interactive tool for developers for setting up their deployment environment on their Boxcar instances. So, we worked with few customers to develop an interactive Capistrano recipe.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;The Goal?&lt;/strong&gt; Spend less time configuring the server or editing recipe files.&lt;/p&gt;


	&lt;p&gt;During the initial setup, we can have the customer provide a few details from the safety of their Rails application directory by answering the following.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;What database server will you be using? (PostgreSQL or MySQL)&lt;/li&gt;
		&lt;li&gt;What port does your database run on? (if different than the default for your db server)&lt;/li&gt;
		&lt;li&gt;What is your database username?&lt;/li&gt;
		&lt;li&gt;What is your database user&amp;#8217;s password?&lt;/li&gt;
		&lt;li&gt;What port will your mongrel cluster start with? &lt;/li&gt;
		&lt;li&gt;How many mongrel servers should your cluster run?&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Great&amp;#8230; setup the server and let&amp;#8217;s deploy!&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/bsx8/default"&gt;&lt;img src="http://img.skitch.com/20080228-x5rksmf1b7dkx1x57spsr9rwr9.preview.jpg" alt="Default" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;small&gt;Feel free to snag our &lt;a href="http://pastie.caboo.se/99450"&gt;interactive Capistrano2 recipe&lt;/a&gt;. &lt;/small&gt;

	&lt;p&gt;We&amp;#8217;re trying to take the pain out of deploying your Ruby on Rails applications with &lt;a href="http://railsboxcar.com/"&gt;Boxcar&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;On a side note, we&amp;#8217;re in the process of expanding our team and &lt;a href="http://blog.planetargon.com/2008/2/20/welcome-alex"&gt;recently hired Alex Malinovich&lt;/a&gt;. Do stay tuned as we&amp;#8217;ll be posting important announcements about changes to our &lt;a href="http://planetargon.com/hosting.html"&gt;Rails hosting services&lt;/a&gt; in the next few weeks. (&lt;strong&gt;grin&lt;/strong&gt;)&lt;/p&gt;
</description>
      <pubDate>Thu, 28 Feb 2008 16:27:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:48a471b7-2cbe-445e-b82f-f0933288d293</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/02/28/deploying-rails-with-an-interactive-capistrano-recipe-to-your-boxcar</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>PLANET ARGON</category>
      <category>boxcar</category>
      <category>deployment</category>
      <category>rails</category>
      <category>ruby</category>
      <category>capistrano</category>
      <category>hosting</category>
    </item>
    <item>
      <title>Tip: Save your users 15+ seconds of their day</title>
      <description>&lt;p&gt;Since understanding the context is so important when designing interfaces, I wanted to point out one of those things that caused me to shake my head at.&lt;/p&gt;


	&lt;p&gt;When logging into our Basecamp account this afternoon (via openid)... I was presented the following helpful notice.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/fusw/know-your-user"&gt;&lt;img src="http://img.skitch.com/20080131-gqiir6xybre1cx7pp8ptbqrjjy.preview.jpg" alt="know your user" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;What&amp;#8217;s amusing in this scenario&amp;#8230; is that I&amp;#8217;m sure that Basecamp knows that I&amp;#8217;m logged in via openid and it is, in fact, displaying the OpenBar across the top of the page. Yet, it&amp;#8217;s making this helpful recommendation that I&amp;#8217;m obviously already aware of.&lt;/p&gt;


	&lt;p&gt;What harm is there? Well, in this scenario, I caught it and thought, &amp;#8220;wow, this isn&amp;#8217;t helpful or informative.&amp;#8221; Over time, it&amp;#8217;s these short-lived experiences that affect our overall perceptions of the product.&lt;/p&gt;


	&lt;p&gt;When we&amp;#8217;re designing and developing applications, we must be very consistent with how we communicate with our audience. We don&amp;#8217;t need to provide them information that isn&amp;#8217;t relevant to them.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m not picking on Basecamp here, I&amp;#8217;m sure that they have great intentions with this, but as a developer, I know that it doesn&amp;#8217;t take a whole lot of extra work to avoid small problems like this, which could lead your people to feel like you&amp;#8217;re not being respectful of their time.&lt;/p&gt;


	&lt;p&gt;Saving customers 15-30 seconds is something that we can quantify.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;100 customers = 25-50 minutes &lt;/li&gt;
		&lt;li&gt;1,000 customers = ~4-8 hours&lt;/li&gt;
		&lt;li&gt;10,000 customers = 40-80 hours&lt;/li&gt;
		&lt;li&gt;etc&amp;#8230;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Just a little reminder that it&amp;#8217;s easy for us to overlook things like that can make a difference.&lt;/p&gt;
</description>
      <pubDate>Thu, 31 Jan 2008 12:42:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:e23e3e9a-7633-4e55-a272-93f058148ba3</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/01/31/tip-save-your-users-15-seconds-of-their-day</link>
      <category>interaction</category>
      <category>ixda</category>
      <category>ui</category>
      <category>communication</category>
      <category>users</category>
      <category>people</category>
      <category>time</category>
      <category>tip</category>
    </item>
    <item>
      <title>Installing Ruby on Rails and PostgreSQL on OS X, Third Edition</title>
      <description>&lt;p&gt;Over the past few years, I&amp;#8217;ve helped you walk through the process of getting Ruby on Rails up and running on Mac &lt;span class="caps"&gt;OS X&lt;/span&gt;. The last version has been getting a lot of comments related to issues with the new Apple Leopard, so I&amp;#8217;m going this post will expand on previous installation guides with what&amp;#8217;s working for me as of January 2008.&lt;/p&gt;


	&lt;p&gt;The following guide is how our development team at &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt; prefers to setup our development workstations&lt;/p&gt;


	&lt;p&gt;During this installation, we&amp;#8217;ll have what we feel is the optimal development stack for building &lt;a href="http://rubyonrails.org"&gt;Ruby on Rails&lt;/a&gt; applications with our favorite database server, &lt;a href="http://postgresql.org"&gt;PostgreSQL&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Ready? Let&amp;#8217;s get started&amp;#8230;&lt;/p&gt;
&lt;h2&gt;Phase One&lt;/h2&gt;


	&lt;p&gt;During this initial phase, we&amp;#8217;re going to install the underlying dependencies that we&amp;#8217;ll be building off of.&lt;/p&gt;


	&lt;h3&gt;XCode 3.0&lt;/h3&gt;


	&lt;p&gt;The first thing that you&amp;#8217;ll need to install to get far with this process is XCode tools, which is distributed by Apple. You can find this on the &lt;span class="caps"&gt;DVD&lt;/span&gt; that your Leopard installer is on. You can also download the latest version from Apple&amp;#8217;s developer site.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://developer.apple.com/tools/download/"&gt;http://developer.apple.com/tools/download/&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;The current version (3.0) is 1.1 GB.. so the download time will vary depending on your connection speed. I would encourage you to drink some tea and/or &lt;a href="http://www.amazon.com/gp/product/0684868768?ie=UTF8&amp;#38;tag=robonrai-20&amp;#38;linkCode=as2&amp;#38;camp=1789&amp;#38;creative=9325&amp;#38;creativeASIN=0684868768"&gt;read a book&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=robonrai-20&amp;#38;l=as2&amp;#38;o=1&amp;#38;a=0684868768" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;/p&gt;


	&lt;p&gt;Once you finish the installation, you can move forward. The rest of these installation &lt;strong&gt;will not work&lt;/strong&gt; until XCode is installed. :-)&lt;/p&gt;


	&lt;h3&gt;MacPorts&lt;/h3&gt;


	&lt;p&gt;In this next step, we&amp;#8217;ll install &lt;a href="http://www.macports.org/"&gt;MacPorts&lt;/a&gt; (formerly known as DarwinPorts). The MacPorts web site describes itself as, &lt;em&gt;&amp;#8220;an open-source community initiative to design an easy-to-use system for compiling, installing, and upgrading either command-line, &lt;span class="caps"&gt;X11&lt;/span&gt; or Aqua based open-source software on the Mac &lt;span class="caps"&gt;OS X&lt;/span&gt; operating system.&amp;#8221;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://img.skitch.com/20080122-jxqkyy8hc8ug7qxy4jt6qeg3d1.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;This tool is about to become one of the most important tools on your operating system as it&amp;#8217;ll be used time and time again to maintain your libraries and many of the Unix tools that you&amp;#8217;ll be using. If you’re from the Linux or &lt;span class="caps"&gt;BSD&lt;/span&gt; world, you are likely familiar with similar tools… such as: apt-get, port, and yum.&lt;/p&gt;


	&lt;p&gt;First, you&amp;#8217;ll want to download MacPorts and install the &amp;#8220;dmg&amp;#8221; disk file for Leopard at the following link.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.macports.org/install.php"&gt;http://www.macports.org/install.php&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Once downloaded, you&amp;#8217;ll want to run the installer and install it on your workstation.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/fdqg/install-macports-1.6.0"&gt;&lt;img src="http://img.skitch.com/20080122-efm4gb9pbb79p4ujya1ceisn37.preview.jpg" alt="Install MacPorts-1.6.0" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;Work you way through the installer until successfully installed.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/fdqe/install-macports-1.6.0"&gt;&lt;img src="http://img.skitch.com/20080122-rr9e1begkg73ixt11d697wpdfh.preview.jpg" alt="Install MacPorts-1.6.0" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;Once this finishes, you can open up your favorite terminal application and run the following to test that it installed properly.&lt;/p&gt;


	&lt;p&gt;In my case, I&amp;#8217;m now using Terminal.app.&lt;/p&gt;


	&lt;p&gt;Issue the command: &lt;code&gt;/opt/local/bin/port version&lt;/code&gt;&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/fdqm/opt-local-bin-port-version"&gt;&lt;img src="http://img.skitch.com/20080122-piqes1e66rgj1bui7eud9sisf7.preview.jpg" alt="_opt_local_bin_port version" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;If it responds with a version number like mine did in the screenshot above, we&amp;#8217;re moving along nicely.&lt;/p&gt;


	&lt;h3&gt;Environment Paths&lt;/h3&gt;


	&lt;p&gt;When we install MacPorts, the command to install/update ports installed to &lt;code&gt;/opt/local/bin&lt;/code&gt;. We had to provide the entire path as this isn&amp;#8217;t currently showing up in the default &lt;code&gt;$PATH&lt;/code&gt; on Leopard. Let&amp;#8217;s quickly remedy this by modifying the file &lt;code&gt;/etc/profile&lt;/code&gt;.&lt;/p&gt;


	&lt;p&gt;If you have Textmate installed, you can run the following from your terminal: &lt;code&gt;mate /etc/profile&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;Add the following line to the bottom of &lt;code&gt;/etc/profile&lt;/code&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;export PATH=/opt/local/bin:/opt/local/sbin:$PATH&lt;/code&gt;&lt;/pre&gt;

&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/fdxb/profile"&gt;&lt;img src="http://img.skitch.com/20080122-mqk8awqpbeebmdq7p7r1gyixsy.preview.jpg" alt="profile" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;You can use your favorite editor to update this file. Once you save it, you&amp;#8217;ll want to restart your terminal application (or open a new tab) to create a new session. When your new terminal opens, run the following to verify that &lt;code&gt;port&lt;/code&gt; is showing up in your &lt;code&gt;$PATH&lt;/code&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;which port&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;You should see &lt;code&gt;/opt/local/bin/port&lt;/code&gt; show up as the result of this command.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/fdx8/which-port"&gt;&lt;img src="http://img.skitch.com/20080122-d4hte4cm5gn67a4cum26gbibut.preview.jpg" alt="which port" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;Great, let&amp;#8217;s continue to move forward.&lt;/p&gt;


	&lt;h3&gt;Hiding Apple&amp;#8217;s Ruby, Gems, and Rails&lt;/h3&gt;


	&lt;p&gt;Before we install Ruby from MacPorts, we&amp;#8217;ll go ahead and hide Apple&amp;#8217;s Ruby installations.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
    :~ robbyrussell$ sudo su -
    Password:
    :~ root# mv /usr/bin/ruby /usr/bin/ruby.orig
    :~ root# mv /usr/bin/gem /usr/bin/gem.orig
    :~ root# mv /usr/bin/rails /usr/bin/rails.orig
    :~ root# logout    
&lt;/code&gt;&lt;/pre&gt;

&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/fdxe/hiding-apples-ruby"&gt;&lt;img src="http://img.skitch.com/20080122-rgmsuy746h73b1bc93j4nyi5ar.preview.jpg" alt="hiding apples ruby" /&gt;&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;If you ever decide to remove MacPorts, you can just rename &lt;code&gt;ruby.orig&lt;/code&gt; back to &lt;code&gt;ruby&lt;/code&gt; and you&amp;#8217;re back where you started&amp;#8230; and the same for the others listed.&lt;/p&gt;


	&lt;h2&gt;Phase Two&lt;/h2&gt;


	&lt;p&gt;During this next phase, we&amp;#8217;re going to install Ruby and Ruby on Rails.&lt;/p&gt;


	&lt;h3&gt;Installing Ruby via MacPorts&lt;/h3&gt;


	&lt;p&gt;Now that we have MacPorts up and running, we&amp;#8217;re going to use it for the first time. We&amp;#8217;ll start by using it to install Ruby and the Rubygems package.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ sudo port install ruby rb-rubygems&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Okay, this will take a little while. I&amp;#8217;d suggest that you step out to get some fresh air.&lt;/p&gt;


	&lt;p&gt;How was it outside? What&amp;#8217;s the weather like there today? It&amp;#8217;s currently 2:30am &lt;span class="caps"&gt;PST&lt;/span&gt; so it&amp;#8217;s dark and an 28F outside so I didn&amp;#8217;t stay outside very long.&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re still waiting for it to install, perhaps you could watch the following video. I might encourage you to check out more of &lt;a href="http://en.wikipedia.org/wiki/Jam_%28TV_series%29"&gt;Jam&lt;/a&gt;, which was recommended a few years ago to me by &lt;a href="http://interblah.net/"&gt;James Adam&lt;/a&gt; at &lt;a href="http://www.canadaonrails.org/"&gt;Canada on Rails&lt;/a&gt;.&lt;/p&gt;


&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sLD0SNCFtyA&amp;#38;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/sLD0SNCFtyA&amp;#38;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;

	&lt;p&gt;Be warned&amp;#8230; it&amp;#8217;s a strange show, but I find strange things like this funny. :-)&lt;/p&gt;


	&lt;p&gt;If you prefer something a bit more lighthearted&amp;#8230;&lt;/p&gt;


&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/SO5WoLnOOlU&amp;#38;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/SO5WoLnOOlU&amp;#38;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;

	&lt;p&gt;Okay&amp;#8230; when Ruby finishes installing, you&amp;#8217;ll want to test that you can run it.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ ruby -v&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Great, let&amp;#8217;s move forward!&lt;/p&gt;


	&lt;h3&gt;Installing Ruby on Rails via RubyGems&lt;/h3&gt;


	&lt;p&gt;We&amp;#8217;re now going to install the libraries that make up Ruby on Rails via RubyGems.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ sudo gem install --include-dependencies rails&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This will install the following gems.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;rails-2.0.2&lt;/li&gt;
		&lt;li&gt;rake-0.8.1&lt;/li&gt;
		&lt;li&gt;activesupport-2.0.2&lt;/li&gt;
		&lt;li&gt;activerecord-2.0.2&lt;/li&gt;
		&lt;li&gt;actionpack-2.0.2&lt;/li&gt;
		&lt;li&gt;actionmailer-2.0.2&lt;/li&gt;
		&lt;li&gt;activeresource-2.0.2&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Excellent, let&amp;#8217;s move forward&amp;#8230;&lt;/p&gt;


	&lt;p&gt;If you haven&amp;#8217;t already purchased it, I recommend that you take a look at &lt;a href="http://www.amazon.com/gp/product/0321445619?ie=UTF8&amp;#38;tag=robonrai-20&amp;#38;linkCode=as2&amp;#38;camp=1789&amp;#38;creative=9325&amp;#38;creativeASIN=0321445619"&gt;The Rails Way (Addison-Wesley Professional Ruby Series)&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=robonrai-20&amp;#38;l=as2&amp;#38;o=1&amp;#38;a=0321445619" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt; by Obie Fernandez.&lt;/p&gt;


	&lt;h3&gt;Installing Mongrel via RubyGems&lt;/h3&gt;


	&lt;p&gt;Let&amp;#8217;s now install Mongrel, which is an excellent Ruby-based web server for Ruby on Rails applications. We use it in development and production at &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt; and it&amp;#8217;s also what we recommend to our &lt;a href="http://planetargon.com/hosting.html"&gt;hosting customers&lt;/a&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$ sudo gem install --include-dependencies mongrel mongrel_cluster&lt;/code&gt;&lt;/pre&gt;

	&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Note:&lt;/strong&gt; Be sure to select the proper platform for mongrel. (hint: &lt;span class="caps"&gt;OS X&lt;/span&gt; is &lt;span class="caps"&gt;NOT&lt;/span&gt; mswin32)&lt;/li&gt;
	&lt;/ul&gt;


My terminal output:
&lt;pre&gt;&lt;code&gt;
Select which gem to install for your platform (i686-darwin9.1.0)
 1. mongrel 1.1.3 (java)
 2. mongrel 1.1.3 (i386-mswin32)
 3. mongrel 1.1.3 (ruby)
 4. mongrel 1.1.2 (ruby)
 5. mongrel 1.1.2 (mswin32)
 6. mongrel 1.1.2 (java)
 7. Skip this gem
 8. Cancel installation
&amp;gt; 3
Select which gem to install for your platform (i686-darwin9.1.0)
 1. fastthread 1.0.1 (mswin32)
 2. fastthread 1.0.1 (ruby)
 3. Skip this gem
 4. Cancel installation
&amp;gt; 2
Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
Successfully installed mongrel-1.1.3
Successfully installed gem_plugin-0.2.3
Successfully installed daemons-1.0.9
Successfully installed fastthread-1.0.1
Successfully installed cgi_multipart_eof_fix-2.5.0
Installing ri documentation for mongrel-1.1.3...
Installing ri documentation for gem_plugin-0.2.3...
Installing ri documentation for daemons-1.0.9...
Installing ri documentation for fastthread-1.0.1...

No definition for dummy_dump

No definition for dummy_dump

No definition for rb_queue_marshal_load

No definition for rb_queue_marshal_dump
Installing ri documentation for cgi_multipart_eof_fix-2.5.0...
Installing RDoc documentation for mongrel-1.1.3...
Installing RDoc documentation for gem_plugin-0.2.3...
Installing RDoc documentation for daemons-1.0.9...
Installing RDoc documentation for fastthread-1.0.1...

No definition for dummy_dump

No definition for dummy_dump

No definition for rb_queue_marshal_load

No definition for rb_queue_marshal_dump
Installing RDoc documentation for cgi_multipart_eof_fix-2.5.0...
Successfully installed mongrel_cluster-1.0.5
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Great, you have almost all of the essentials.. except a database.&lt;/p&gt;


	&lt;h2&gt;Phase Three&lt;/h2&gt;


	&lt;p&gt;In this phase, we&amp;#8217;re going to get our database server, PostgreSQL, installed and the libraries that Ruby needs to communicate with it.&lt;/p&gt;


	&lt;h3&gt;Installing PosgreSQL with MacPorts&lt;/h3&gt;


	&lt;p&gt;At &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt;, we design and develop our applications on top of &lt;a href="http://postgresql.org"&gt;PostgreSQL&lt;/a&gt;. I’ve been advocating the adoption of this awesome open source database in the Rails community for quite some time now.&lt;/p&gt;


	&lt;p&gt;The current version available of PostgreSQL via MacPorts is 8.3, which is what we&amp;#8217;ll now install with the &lt;code&gt;port&lt;/code&gt; command.&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;$ sudo port install postgresql83 postgresql83-server&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;This will download and install the necessary libraries to run PostgreSQL server and the client utilities.&lt;/p&gt;


	&lt;h3&gt;Configuring PostgreSQL&lt;/h3&gt;


	&lt;p&gt;When PostgreSQL is finished installing, it&amp;#8217;ll tell you to run the following commands to create a new database instance.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
 sudo mkdir -p /opt/local/var/db/postgresql83/defaultdb
 sudo chown postgres:postgres /opt/local/var/db/postgresql83/defaultdb
 sudo su postgres -c '/opt/local/lib/postgresql83/bin/initdb -D /opt/local/var/db/postgresql83/defaultdb'
&lt;/code&gt;&lt;/pre&gt;

	&lt;h4&gt;Adding PostgreSQL to launchd&lt;/h4&gt;


	&lt;p&gt;If you&amp;#8217;d like to have PostgreSQL automatically startup after a system restart, you can load it into launchd, which comes with &lt;span class="caps"&gt;OS X&lt;/span&gt;. By running the following command, PostgreSQL will startup automatically on the next system restart.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83-server.plist&lt;/code&gt;&lt;/pre&gt;

	&lt;h4&gt;Adding PostgreSQL to your $PATH&lt;/h4&gt;


	&lt;p&gt;For some reason, the MacPort for PostgreSQL doesn&amp;#8217;t get the programs in your path automatically, so we&amp;#8217;ll it now.&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;mate /etc/profile&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;Modify the &lt;code&gt;PATH&lt;/code&gt; that we changed earlier to include /opt/local/lib/postgresql83/bin@.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;export PATH=/opt/local/bin:/opt/local/sbin:/opt/local/lib/postgresql83/bin:$PATH&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Save the file and then open a new terminal. To test this, you should get the following output when you run which &lt;code&gt;psql&lt;/code&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  $ which psql
  /opt/local/lib/postgresql83/bin/psql    
&lt;/code&gt;&lt;/pre&gt;

	&lt;h4&gt;Creating a new PostgreSQL user&lt;/h4&gt;


	&lt;p&gt;When I’m working on Rails applications in my development environment, I really don’t want to have to specify a username and password in every &lt;code&gt;config/database.yml&lt;/code&gt; file for each of our ongoing client projects. When PostgreSQL was installed, it created a superuser named &lt;strong&gt;postgres&lt;/strong&gt;, which is great, but I’d like one that matches my system username, so that I’m not prompted at all for a username or password to connect to PostgreSQL.&lt;/p&gt;


	&lt;p&gt;To do this, we’ll use the &lt;code&gt;createuser&lt;/code&gt; command, which comes with PostgreSQL. As you can see, I’m creating a new user with &lt;code&gt;superuser&lt;/code&gt; privileges (and will hopefully be the last time I have to do a &lt;code&gt;-U postgres&lt;/code&gt;).&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  $ createuser --superuser robbyrussell -U postgres
  CREATE ROLE    
&lt;/code&gt;&lt;/pre&gt;

Let’s take a quick moment to test this out.
&lt;pre&gt;&lt;code&gt;
  # create a new database
  $ createdb my_test_db
  CREATE DATABASE

  # drop the database
  $ dropdb my_test_db
  DROP DATABASE
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Great, everything looks good here.&lt;/p&gt;


	&lt;p&gt;We now have a running installation of PostgreSQL with a new user account. All we need to do now is install the appropriate RubyGem to allow our Ruby applications to connect to it.&lt;/p&gt;


	&lt;h4&gt;Installing PostgreSQL Libraries for Ruby&lt;/h4&gt;


	&lt;p&gt;You can install postgres gem by running the following command.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;$  sudo gem install --include-dependencies postgres&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Great. We’ve now built a professional development environment for working with Ruby on Rails. Can you &lt;em&gt;feel&lt;/em&gt; the excitement? :-)&lt;/p&gt;


	&lt;h2&gt;Closing Thoughts&lt;/h2&gt;


	&lt;p&gt;Like the previous versions, I hope that a few people find this useful. I didn&amp;#8217;t have to make a lot of changes from the second edition, but there were enough to warrant a new post. I&amp;#8217;ve been setting up my workstation like this for about three years now and I&amp;#8217;m looking forward to seeing how a fresh install on Leopard works out for me.&lt;/p&gt;


	&lt;p&gt;If you have any problems, feel free to ask a question in the comments below.&lt;/p&gt;</description>
      <pubDate>Tue, 22 Jan 2008 11:55:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:73dcd126-1333-417e-9203-aaefb22a65b1</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/01/22/installing-ruby-on-rails-and-postgresql-on-os-x-third-edition</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>PostgreSQL</category>
      <category>PLANET ARGON</category>
      <category>rubyonrails</category>
      <category>rails</category>
      <category>postgresql</category>
      <category>xcode</category>
      <category>apple</category>
      <category>osx</category>
      <category>macports</category>
      <category>ruby</category>
      <category>rubygems</category>
      <category>irb</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Heading to London, grab a pint?</title>
      <description>&lt;p&gt;Just when you think that you&amp;#8217;re sneaking through Fall/Winter without getting sick&amp;#8230; it hits you. Been sick the last week and am finally coming up for air. :-)&lt;/p&gt;


	&lt;p&gt;Anyhow, I&amp;#8217;m going to be traveling a few times over the coming weeks/months and wanted to reach out&amp;#8230;&lt;/p&gt;


	&lt;p&gt;Dear Londoners,&lt;/p&gt;


	&lt;p&gt;A few of us from the &lt;a href="http://planetargon.com/"&gt;Planet Argon&lt;/a&gt; team, (&lt;a href="http://andy.delcambre.com"&gt;Andy&lt;/a&gt;, &lt;a href="http://www.rhinestoneye.org/"&gt;Paige&lt;/a&gt;, and myself) are heading to London in just over a week to visit one of our big clients. We&amp;#8217;ll also be staying for a few more days to explore. If you&amp;#8217;re interested in grabbing a few pints and/or interested in meeting up, &lt;a href="mailto:robbyrussell+londontrip@gmail.com"&gt;drop me an email&lt;/a&gt; we&amp;#8217;ll try to coordinate something when we&amp;#8217;re over there.  =)&lt;/p&gt;
</description>
      <pubDate>Fri, 18 Jan 2008 01:55:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:dedae99f-14ed-40f3-bf67-0927b10501b0</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/01/18/heading-to-london-grab-a-pint</link>
      <category>PLANET ARGON</category>
      <category>planetargon</category>
      <category>planetargon</category>
      <category>paige</category>
      <category>andy</category>
      <category>travel</category>
      <category>london</category>
      <category>england</category>
    </item>
    <item>
      <title>RubyURL through QuickSilver</title>
      <description>&lt;p&gt;When &lt;a href="http://chriszgriffin.com/"&gt;Chris Griffin&lt;/a&gt; saw &lt;a href="http://www.leancrew.com/all-this/2007/11/shortened_urls_with_quicksilve.html"&gt;this post&lt;/a&gt;, he wanted to do the same with &lt;a href="http://rubyurl.com"&gt;RubyURL&lt;/a&gt;. Since the ShortURL gem was broken, I didn&amp;#8217;t get a chance to dive into it. However, with the shorturl command now working again with RubyURL, we get QuickSilver and RubyURL working together really quickly.&lt;/p&gt;


	&lt;p&gt;First, you&amp;#8217;ll need a recent version of the ShortURL gem installed.&lt;/p&gt;


	&lt;p&gt;&lt;code&gt;sudo gem install shorturl&lt;/code&gt;&lt;/p&gt;


	&lt;p&gt;Then you will want to add the following to &lt;code&gt;~/Library/Scripts/rubyurl.scpt&lt;/code&gt;. You will need to create this file.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  #
  # Change accordingly if shorturl is not under /usr/bin/shorturl
  #
  set shorturl_cmd to "/opt/local/bin/shorturl" 

  tell application "Safari" 
      set original_url to URL of front document
  end tell

  set cmd to shorturl_cmd &amp;#38; " " &amp;#38; original_url

  set ruby_url to do shell script cmd
  set the clipboard to ruby_url as text
  beep
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Then you can add this script to run through QuickSilver. For details, jump to the setup process on &lt;a href="http://www.leancrew.com/all-this/2007/11/long_and_shortened_url_scripts.html"&gt;this post&lt;/a&gt;.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/rpjk/rubyurl-quicksilver"&gt;&lt;img src="http://img.skitch.com/20080107-1uxg37c148kwe4cpm58m14ifwt.preview.jpg" alt="rubyurl quicksilver" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;This will make it much easier to paste RubyURLs into my Twitter client, &lt;span class="caps"&gt;IRC&lt;/span&gt;, etc.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ll try to post a more thorough tutorial soon, but wanted to share in the meantime.&lt;/p&gt;
</description>
      <pubDate>Sun, 06 Jan 2008 20:42:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:ee0e9bcc-6160-4913-b181-a5f4c95a7f68</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/01/06/rubyurl-through-quicksilver</link>
      <category>RubyURL</category>
      <category>quicksilver</category>
      <category>applescript</category>
      <category>rubyurl</category>
      <category>hack</category>
      <category>tip</category>
      <category>productivity</category>
    </item>
    <item>
      <title>ShortURL 0.8.4 released and gets a new mainainer... me!</title>
      <description>&lt;p&gt;Earlier today, Vincent Foley was kind enough to hand over maitenance of the the ShortURL project on RubyForge to me. He first released it back in 2005, which &lt;a href="http://www.robbyonrails.com/articles/2005/06/01/rubyurl-friendly-library"&gt;I blogged about&lt;/a&gt; as &lt;a href="http://rubyurl.com"&gt;RubyURL&lt;/a&gt; was the first shortening service that it supported (and is the default). Unfortunately, the release of RubyURL 2.0 broke backwards compatibility and Vincent wasn&amp;#8217;t maintaining it anymore. So, earlier, I decided to patch this and got a new version released that now works with the current RubyURL site.&lt;/p&gt;


	&lt;p&gt;While working on the code, I decided to extend the compatible services to include &lt;a href="http://moourl.com"&gt;moourl&lt;/a&gt; and &lt;a href="http://urltea.com"&gt;urlTea&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;These updates are available in ShortURL version 0.8.4.&lt;/strong&gt;&lt;/p&gt;


	&lt;h2&gt;Install the ShortURL gem&lt;/h2&gt;


	&lt;p&gt;Installation is a snap&amp;#8230; (like 99.7% of rubygems&amp;#8230;)&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  ~ &amp;gt; sudo gem install shorturl                                                                                                                                                                                                           Password:

  Successfully installed shorturl-0.8.4
  1 gem installed
  Installing ri documentation for shorturl-0.8.4...
  Installing RDoc documentation for shorturl-0.8.4.  
&lt;/code&gt;&lt;/pre&gt;

	&lt;h2&gt;Using ShortURL&lt;/h2&gt;


	&lt;p&gt;The ShortURL gem provides the ShortURL library, which you can use from any Ruby application.&lt;/p&gt;


	&lt;h3&gt;Using the ShortURL library&lt;/h3&gt;


&lt;pre&gt;&lt;code&gt;
  ~ &amp;gt; irb                                                                                                                                                                                                                           
  irb(main):001:0&amp;gt; require 'rubygems'
  =&amp;gt; true
  irb(main):002:0&amp;gt; require 'shorturl'
  =&amp;gt; true
  irb(main):003:0&amp;gt; ShortURL.shorten( 'http://www.istwitterdown.com' )
  =&amp;gt; "http://rubyurl.com/P9w" 
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;As you can see&amp;#8230;it&amp;#8217;s really straight forward.&lt;/p&gt;


	&lt;p&gt;Let&amp;#8217;s try it with a few other services.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
irb(main):004:0&amp;gt; ShortURL.shorten( 'http://www.istwitterdown.com', :moourl )
=&amp;gt; "http://moourl.com/fvoky" 
irb(main):005:0&amp;gt; ShortURL.shorten( 'http://www.istwitterdown.com', :tinyurl )
=&amp;gt; "http://tinyurl.com/2t3qmh" 
&lt;/code&gt;&lt;/pre&gt;

	&lt;h3&gt;Using the shorturl command-line tool&lt;/h3&gt;


	&lt;p&gt;Many people don&amp;#8217;t know that ShortURL provides a command-line tool, which you can use after installing the gem.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  ~ &amp;gt; shorturl http://istwitterdown.com                                                                                                                                                                                               
  http://rubyurl.com/Lwk
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;If you&amp;#8217;d like to see more services provided than the ones listed here, please submit &lt;a href="http://rubyforge.org/tracker/?atid=2896&amp;#38;group_id=732&amp;#38;func=browse"&gt;feature requests&lt;/a&gt; and/or &lt;a href="http://rubyforge.org/tracker/?atid=2895&amp;#38;group_id=732&amp;#38;func=browse"&gt;patches&lt;/a&gt; on the rubyforge project.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://rubyforge.org/projects/shorturl/"&gt;http://rubyforge.org/projects/shorturl/&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;ShortURL Documentation&lt;/h2&gt;


	&lt;p&gt;To see the latest documentation for the project, please visit:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://rubyforge.org/projects/shorturl/"&gt;http://rubyforge.org/projects/shorturl/&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;My favorite part about this? My &lt;a href="http://www.robbyonrails.com/articles/2005/09/13/rubyurl-meets-rbot"&gt;rbot plugin for RubyURL&lt;/a&gt; works again!&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/rpg4/rbot-and-rubyurl"&gt;&lt;img src="http://img.skitch.com/20080107-mhjgi5mqgbcfgygut426ee8b53.preview.jpg" alt="rbot and rubyurl" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div