<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>One Man's Walk in work</title>
	<atom:link href="http://onemanswalk.com/work/feed/" rel="self" type="application/rss+xml" />
	<link>http://onemanswalk.com/work</link>
	<description>jeremy lightsmith on agile, ruby, and consulting</description>
	<pubDate>Fri, 06 Mar 2009 15:51:48 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cards 0.9 is away</title>
		<link>http://onemanswalk.com/work/2009/03/05/cards-09-is-away/</link>
		<comments>http://onemanswalk.com/work/2009/03/05/cards-09-is-away/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 11:10:27 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[projects]]></category>

		<guid isPermaLink="false">http://onemanswalk.com/work/?p=158</guid>
		<description><![CDATA[	Cards is a ruby gem that allows you to quickly capture a card wall into a spreadsheet then print it up using omnigraffle or export it to csv (or now tracker)

	This release adds a couple really cool improvements in it :

	1. Numbers &#8216;09 finally has applescript support, so Cards can finally reach into it and [...]]]></description>
			<content:encoded><![CDATA[	<p>Cards is a ruby gem that allows you to quickly capture a card wall into a spreadsheet then print it up using omnigraffle or export it to csv (or now tracker)</p>

	<p>This release adds a couple really cool improvements in it :</p>

	<p>1. Numbers &#8216;09 finally has applescript support, so Cards can finally reach into it and grab what it needs instead of requiring a csv export.</p>

	<p>2. <a href="http://pivotaltracker.com/" title="">Pivotal Tracker</a> now has a sweet <span class="caps">RES</span>Tful api that we can use to throw stuff directly into it.</p>

	<p>Wouldn&#8217;t it be cool if the next thing cards could do for you is update your spreadsheet to add the tracker ids for created stories?  Then you could maintain the spreadsheet and tracker.  Maybe even get 2 way syncing going or something&#8230;</p>

	<p><hr/></p>

	<p>To illustrate, Cards lets you take this spreadsheet from Numbers and turn it into the card walls in omnigraffle that created it.</p>

	<p><a href="http://www.flickr.com/photos/onemanswalk/3330719206/">
					<img src="http://farm4.static.flickr.com/3637/3330719206_d1162d9bfa.jpg" alt="Voting Example" />
				</a></p>

	<p><a href="http://www.flickr.com/photos/onemanswalk/3329884089/">
					<img src="http://farm4.static.flickr.com/3620/3329884089_0e2494c3c6_m.jpg" alt="Stories" />
				</a><br />
<a href="http://www.flickr.com/photos/onemanswalk/3329884113/">
					<img src="http://farm4.static.flickr.com/3366/3329884113_4955bf980d_m.jpg" alt="Workflow" />
				</a><br />
<a href="http://www.flickr.com/photos/onemanswalk/3330719312/">
					<img src="http://farm4.static.flickr.com/3346/3330719312_42a969a6fb_m.jpg" alt="Goals" />
				</a></p>

 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2009/03/05/cards-09-is-away/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Running a Community Meeting for Burn Blue</title>
		<link>http://onemanswalk.com/work/2009/03/05/running-a-community-meeting-for-burn-blue/</link>
		<comments>http://onemanswalk.com/work/2009/03/05/running-a-community-meeting-for-burn-blue/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 00:08:07 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[facilitation]]></category>

		<guid isPermaLink="false">http://onemanswalk.com/work/?p=152</guid>
		<description><![CDATA[	So first, some background.

	In May 2007, a few of us started a not for profit in Seattle to promote blues dancing.  We called it Burn Blue.  It was my first take at helping to shape not just a team, not just a project, but a whole company.  It&#8217;s been fun and a [...]]]></description>
			<content:encoded><![CDATA[	<p>So first, some background.</p>

	<p>In May 2007, a few of us started a not for profit in Seattle to promote blues dancing.  We called it <a href="http://burnblue.org/" title="">Burn Blue</a>.  It was my first take at helping to shape not just a team, not just a project, but a whole company.  It&#8217;s been fun and a huge learning experience for me.</p>

	<p>Burn Blue runs a weekly blues dance in Seattle.  As such its success or failure completely depends on the dance community in Seattle that come to it.  We&#8217;ve been really successful in reaching out to this community, and Burn Blue has done really well because of it.</p>

	<p>I&#8217;ve personally had a lot of fun guiding Burn Blue toward being more community driven &#038; transparent.  I love this fuzzy stuff.</p>

	<p><hr/></p>

	<p>Fast forward to last weekend.  I was running Burn Blue&#8217;s community meeting.  We had promised people pancakes and a voice in Burn Blue&#8217;s future, and 35 people showed up.</p>

	<p>There were however, a lot of challenges :<br />
1. It was a lot of people, a lot of new people, people that hadn&#8217;t necessarily been to a community meeting before, people that didn&#8217;t necessarily know what Burn Blue was about.<br />
2. There was a lot of information that we as directors wanted to get across to them about changes that we had made.<br />
3. We wanted the people there to feel that this was <span class="caps">THEIR</span> meeting, that Burn Blue was there for <span class="caps">THEM</span>, and not the other way around.<br />
4. We didn&#8217;t know what we didn&#8217;t know.  We wanted to make sure that we discovered any other important things that needed to be addressed.<br />
4. We wanted to actually get stuff done.  We wanted actionable items out of the meeting along with the names of people who would do them.<br />
5. We only had 3 hours.</p>

	<p>Long story short, we did it right.</p>

	<p>The directors and officers (all 5 of us) had met previously and talked about what we wanted to put into the meeting.  We set a very rough agenda and recorded a few things that we wanted to hit.  More importantly, we practiced setting an agenda in <em>that</em> meeting and working through it.</p>

	<p>We had a big <a href="http://facilitationpatterns.org/visible_agenda.html" title="">[Visible Agenda]</a> and wrote ours down on a huge post it.  It looked something like this :</p>

	<ul>
		<li>1:00pm &#8211; arriving, eating pancakes</li>
		<li>1:30pm &#8211; where are we? (temperature &#038; retrospective)</li>
		<li>2:00pm &#8211; burn blue structure</li>
		<li>2:15pm &#8211; going over people&#8217;s input</li>
		<li>intermediate lesson</li>
		<li>venue</li>
		<li>improving feedback</li>
		<li>security</li>
		<li>&#8230;</li>
	</ul>

	<p>Basically, people got there and milled around a bit while we helped -topher with pancakes (this was in our house).  Around 1:30, when the pancakes still weren&#8217;t done, I called everyone&#8217;s attention together and gave them a couple jobs while they continued to eat and talk.</p>

	<p>First, I wanted to get a group <a href="http://facilitationpatterns.org/temperature.html" title="">[Temperature]</a>.  I had written down Burn Blue&#8217;s 4 part <a href="http://www.burnblue.org/about_us" title="">mission</a> on a giant post it and I drew a line to the right of each for part for people to judge us on.</p>

	<p>Second, I had two more giant post its with the classic &#8220;keep&#8221; / &#8220;change&#8221; from retrospectives for people to add things to.</p>

	<p>This was all information gathering, so I let the <a href="http://facilitationpatterns.org/participants_write.html" title="">[Participants Write]</a>.  I also gave them an expectation that part of the meeting would last about half an hour.</p>

	<p><hr/></p>

	<p>Half an hour later, the formal part of the meeting started.  We explained a little bit about what burn blue was.  Then we started to go through what people had written down.</p>

	<p>Karissa, my wife, who&#8217;s also a director, saw people beginning to get excited and start talking over each other, and she suggested a few <a href="http://facilitationpatterns.org/ground_rules.html" title="">[Ground Rules]</a>.  We as a group settled on <a href="http://facilitationpatterns.org/use_gestures.html" title="">[Use Gestures]</a>, <a href="http://facilitationpatterns.org/one_conversation.html" title="">[One Conversation]</a>, and <a href="http://facilitationpatterns.org/no_stories.html" title="">[No Stories]</a>.  We also hadn&#8217;t actually set an end time for the meeting, so I asked people when they wanted to end.  We decided that 4pm would make the most sense.</p>

	<p>As we talked about the temperature sheet and the keep and change sheets, we wrote down things that we needed to talk about onto the <a href="http://facilitationpatterns.org/visible_agenda.html" title="">[Visible Agenda]</a>.  We almost used it as a <a href="http://facilitationpatterns.org/parking_lot.html" title="">[Parking Lot]</a> for everything until after we were done going through the input we&#8217;d gotten already.</p>

	<p>And on it went.  We found, as we&#8217;d hoped, that a lot of the things that we (the directors) had wanted to talk about were also concerns of the community.  There were also several things that we hadn&#8217;t thought about.</p>

	<p>We kept going.  Our <a href="http://facilitationpatterns.org/ground_rules.html" title="">[Ground Rules]</a> kept us focused.  Pretty early on, I asked the group for the authority to play &#8220;Time Nazi&#8221; as we had close to 20 agenda items to go through and less than 2 hours left.  When we went over 5 minutes on an item, I&#8217;d let people know, but some items were important enough to keep talking about, some weren&#8217;t.</p>

	<p>We jumped around a bit on the agenda.  Several times, the same person that brought up an agenda item conceded that it probably wasn&#8217;t as important as another one, and we went in roughly order of importance, crossing off agenda items as we covered them.</p>

	<p>We ended up finishing the meeting at 4pm, deciding to leave the last few agenda items uncovered until the next meeting in a few months.  As we had talked about each item, we had also been adding to another <a href="http://facilitationpatterns.org/big_visible_chart.html" title="">[Big Visible Chart]</a>, our <a href="http://facilitationpatterns.org/action_items.html" title="">[Action Items]</a>.</p>

	<p>People left the meeting (though many stuck around to hang out) with a feeling of excitement and ownership.  A feeling that things had just gotten better, that they had been heard and they had helped that to happen, knowing what their next actions were.  The meeting was a total success.</p>

	<p><hr/></p>

	<p>For my part, I&#8217;ve been working a lot on <a href="http://facilitationpatterns.org/" title="">http://facilitationpatterns.org/</a> lately and have had all these awesome patterns swimming around my mind.  I called up several for this meeting.  And had done so previously for the directors just before.  This helped made the facilitation of the meeting into a joint effort.</p>

	<p>It was really fun to take the reigns and pull out patterns that fit and customize them to the situation.  I&#8217;m looking forward to our next meeting.</p>

 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2009/03/05/running-a-community-meeting-for-burn-blue/feed/</wfw:commentRss>
		</item>
		<item>
		<title>FacilitationPatterns.org</title>
		<link>http://onemanswalk.com/work/2009/03/04/facilitationpatternsdotorg/</link>
		<comments>http://onemanswalk.com/work/2009/03/04/facilitationpatternsdotorg/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 21:37:09 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[facilitation]]></category>

		<guid isPermaLink="false">http://onemanswalk.com/work/?p=144</guid>
		<description><![CDATA[	I&#8217;ve been working on http://facilitationpatterns.org/ for a while now.  I&#8217;m hoping that it will eventually become a book.

	You should check it out if you&#8217;re interested in facilitation, and that includes running a meeting, a standup, a retrospective, a release planning session, a quickstart, or even just brainstorming holiday plans with your family.

	I have ~ [...]]]></description>
			<content:encoded><![CDATA[	<p>I&#8217;ve been working on <a href="http://facilitationpatterns.org/" title="">http://facilitationpatterns.org/</a> for a while now.  I&#8217;m hoping that it will eventually become a book.</p>

	<p>You should check it out if you&#8217;re interested in facilitation, and that includes running a meeting, a standup, a retrospective, a release planning session, a quickstart, or even just brainstorming holiday plans with your family.</p>

	<p>I have ~ 50 patterns up there already, but most are not fleshed out beyond a short summary.  Though expect more up there over the coming months.  I&#8217;d love feedback on the patterns, the structure, or anything else.</p>

	<p>What I&#8217;ve heard from veteran facilitators that I&#8217;ve shown it to so far is that it&#8217;s a really good reminder of a lot of what you already know.  This is what I&#8217;m going for.  However, I think even these veteran facilitators will find a few new things to add to their toolbox.</p>

	<p>Enjoy!</p>
 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2009/03/04/facilitationpatternsdotorg/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Stop running test:unit tests when using rspec</title>
		<link>http://onemanswalk.com/work/2009/01/16/stop-running-testunit-tests-when-using-rspec/</link>
		<comments>http://onemanswalk.com/work/2009/01/16/stop-running-testunit-tests-when-using-rspec/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 17:53:43 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[rake]]></category>

		<category><![CDATA[rspec]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://onemanswalk.com/work/?p=67</guid>
		<description><![CDATA[	You know those 3 lines that show up every time you do an rspec run?

	
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -Ilib:test &#34;/Library/Ruby/Gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb&#34;  
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -Ilib:test &#34;/Library/Ruby/Gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb&#34;  
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -Ilib:test &#34;/Library/Ruby/Gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb&#34;




	&#8230;yeah, those lines.  I hate those lines.

	So let&#8217;s get rid of them!

	Each of those lines is rails trying to run test:unit.  RSpec replaces the default rake target by doing [...]]]></description>
			<content:encoded><![CDATA[	<p>You know those 3 lines that show up every time you do an rspec run?</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="dos">/System/Library/Frameworks/Ruby.framework/Versions/<span style="color: #cc66cc;">1.8</span>/usr/bin/ruby -Ilib:test &quot;/Library/Ruby/Gems/<span style="color: #cc66cc;">1.8</span>/gems/rake<span style="color: #cc66cc;">-0.8</span><span style="color: #cc66cc;">.3</span>/lib/rake/rake_test_loader.rb&quot;  
/System/Library/Frameworks/Ruby.framework/Versions/<span style="color: #cc66cc;">1.8</span>/usr/bin/ruby -Ilib:test &quot;/Library/Ruby/Gems/<span style="color: #cc66cc;">1.8</span>/gems/rake<span style="color: #cc66cc;">-0.8</span><span style="color: #cc66cc;">.3</span>/lib/rake/rake_test_loader.rb&quot;  
/System/Library/Frameworks/Ruby.framework/Versions/<span style="color: #cc66cc;">1.8</span>/usr/bin/ruby -Ilib:test &quot;/Library/Ruby/Gems/<span style="color: #cc66cc;">1.8</span>/gems/rake<span style="color: #cc66cc;">-0.8</span><span style="color: #cc66cc;">.3</span>/lib/rake/rake_test_loader.rb&quot;</pre></div></div>
</p>



	<p>&#8230;yeah, those lines.  I hate those lines.</p>

	<p>So let&#8217;s get rid of them!</p>

	<p>Each of those lines is rails trying to run test:unit.  RSpec replaces the default rake target by doing this:</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="ruby">task <span style="color:#ff3333; font-weight:bold;">:default</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:spec</span></pre></div></div>
</p>



	<p><span class="caps">BUT</span><img src="!" alt="" border="0" />  If you&#8217;ve played with rake before, you know that this doesn&#8217;t actually replace the default target, it only adds to it.  We need to remove the default target <em>then</em> point it at :spec</p>

	<p>Turns out that&#8217;s not too hard.  Put this code (got it from <a href="http://rubyizednrailified.blogspot.com/2008/07/remove-rake-tasks.html" title="">here</a>) at the end of your Rakefile:</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="ruby"><span style="color:#6666ff; font-weight:bold;">Rake::TaskManager</span>.<span style="color:#9900CC;">class_eval</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  <span style="color:#9966CC; font-weight:bold;">def</span> remove_task<span style="color:#006600; font-weight:bold;">&#40;</span>task_name<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@tasks</span>.<span style="color:#9900CC;">delete</span><span style="color:#006600; font-weight:bold;">&#40;</span>task_name.<span style="color:#9900CC;">to_s</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
Rake.<span style="color:#9900CC;">application</span>.<span style="color:#9900CC;">remove_task</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;default&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
task <span style="color:#ff3333; font-weight:bold;">:default</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:spec</span></pre></div></div>
</p>



	<p>You&#8217;re all set!</p>
 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2009/01/16/stop-running-testunit-tests-when-using-rspec/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A New Blog, Git, &amp; Capistrano</title>
		<link>http://onemanswalk.com/work/2008/08/24/a-new-blog-git-capistrano/</link>
		<comments>http://onemanswalk.com/work/2008/08/24/a-new-blog-git-capistrano/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 19:44:06 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[blog]]></category>

		<category><![CDATA[capistrano]]></category>

		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://onemanswalk.com/work/?p=63</guid>
		<description><![CDATA[	I&#8217;ve had my fun with ruby.

	I wanted to learn ruby, so I wrote myself a blog.  Then, I wanted to learn rails, so I migrated it to rails.  Then, the spam was too much, so I migrated to Typo.  Then, I couldn&#8217;t take Typo&#8217;s memory footprint, so I moved to Mephisto.

	But you [...]]]></description>
			<content:encoded><![CDATA[	<p>I&#8217;ve had my fun with ruby.</p>

	<p>I wanted to learn ruby, so I wrote myself a blog.  Then, I wanted to learn rails, so I migrated it to rails.  Then, the spam was too much, so I migrated to Typo.  Then, I couldn&#8217;t take Typo&#8217;s memory footprint, so I moved to Mephisto.</p>

	<p>But you know what?  Even Mephisto is a pain to deploy, and is still a resource hog.  It&#8217;s kind of the nature of ruby and rails apps.  And what&#8217;s the benefit to justify the cost?  Aren&#8217;t there other more mature, stable, better supported and more flexible blog engines in other languages?</p>

	<p>&#8230;yes, there are like 50 of them.</p>

	<p>So I&#8217;ve migrated yet again, this time to Wordpress.</p>

	<p>I&#8217;m really happy with it, but I did have some cool toys in my rails world that I didn&#8217;t want to give up.  I can use my own machine as a staging environment to blog changes.  I can also deploy with a simple &#8220;cap deploy&#8221;.</p>

	<p>So.</p>

	<p>My entire website now lives on <a href="http://github.com/jeremylightsmith/blog" title="">github</a> and I use capistrano to deploy it after making edits locally.  It looks something like this:</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="bash">git commit -m <span style="color: #ff0000;">&quot;...&quot;</span>
git push
&nbsp;
cap pull</pre></div></div>
</p>



	<p>And to give you an idea of the goodness that is ruby and cap, I also wrote a script to pull the databases on my server down to my staging environment.  After all, what&#8217;s the point of staging if it uses different data.  Using looks something like this:</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="bash">cap backup
&nbsp;
rake db:pull db:restore</pre></div></div>
</p>



	<p>If you want to see how this is done, check out <a href="http://github.com/jeremylightsmith/blog" title="">repository</a></p>
 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2008/08/24/a-new-blog-git-capistrano/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Making Line Up / Down not suck in Textmate</title>
		<link>http://onemanswalk.com/work/2008/08/05/making-line-up-down-not-suck-in-textmate/</link>
		<comments>http://onemanswalk.com/work/2008/08/05/making-line-up-down-not-suck-in-textmate/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 00:46:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	I think I blew Steve Conover&#8217;s mind last week.

	He, like me, and every other sane rational person I&#8217;ve ever met, thinks that when you say &#8220;line up&#8221; or &#8220;line down&#8221; in a text editor, it should take the line(s) you are currently on and move them up, in their entirety.  Furthermore, that if you [...]]]></description>
			<content:encoded><![CDATA[	<p>I think I blew <a href="http://pivots.pivotallabs.com/users/steve/blog" title="">Steve Conover&#8217;s</a> mind last week.</p>

	<p>He, like me, and every other sane rational person I&#8217;ve ever met, thinks that when you say &#8220;line up&#8221; or &#8220;line down&#8221; in a text editor, it should take the line(s) you are currently on and move them up, in their entirety.  Furthermore, that if you press &#8220;line up&#8221; 5 times, the line(s) you are currently on should move up 5 lines.</p>

	<p>Textmate, as much as I love it, does not do this, and this has long been a source of contention and strife among my colleagues at <a href="http://pivotallabs.com/" title="">Pivotal</a>.</p>

	<p>This, however, is a story with a happy ending.  Last week, Steve and I were pairing on Textmate, and he was complaining that line up / down wasn&#8217;t working properly.  A couple hours later, I had a brilliant insight.  This is how you fix Textmate&#8217;s line up / down :</p>

	<p>Pull up textmate and type :</p>

<pre>
command-option-M
command-shift-L
command-control-up arrow
command-option-M
control-option-m
</pre>

	<p>This will start recording a macro, select the current line, move the current line up, stop recording the macro, and then save the macro.</p>

	<p>Next, name your macro &#8220;line up&#8221; in the dialog that just popped up, and give it a key equivalent of command-control-up arrow.</p>

	<p>Congratulations, you just fixed line up!</p>

	<p>Now let&#8217;s do the same with line down :</p>

<pre>
command-option-M
command-shift-L
command-control-down arrow
command-option-M
control-option-m
</pre>

	<p>This time, name it &#8220;line down&#8221;, and give it a key equivalent of command-control-down arrow.</p>

	<p>You of course don&#8217;t have to do all this with keyboard shortcuts, but it&#8217;s really impressive if you do <img src='http://onemanswalk.com/work/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>

 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2008/08/05/making-line-up-down-not-suck-in-textmate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eventual Consistency, or things will all work out&#8230;eventually</title>
		<link>http://onemanswalk.com/work/2008/08/05/eventual-consistency-or-things-will-all-work-out-eventually/</link>
		<comments>http://onemanswalk.com/work/2008/08/05/eventual-consistency-or-things-will-all-work-out-eventually/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 00:12:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[dsls]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	So we&#8217;re working with Amazon&#8217;s SimpleDB.  It&#8217;s pretty sweet, though the ruby libraries for it are still a bit primitive.  One of the problems you run up against when you&#8217;re writing integration tests against it is eventual consistency.

	Take this test :

	
it &#34;should save&#34; do
  customer = Customer.create!&#40;:name =&#62; 'bob', :email =&#62; 'bob@example.com'&#41;
 [...]]]></description>
			<content:encoded><![CDATA[	<p>So we&#8217;re working with <a href="http://www.amazon.com/SimpleDB-AWS-Service-Pricing/b?ie=UTF8&#038;node=342335011" title="">Amazon&#8217;s SimpleDB</a>.  It&#8217;s pretty sweet, though the ruby libraries for it are still a bit primitive.  One of the problems you run up against when you&#8217;re writing integration tests against it is eventual consistency.</p>

	<p>Take this test :</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="ruby">it <span style="color:#996600;">&quot;should save&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  customer = Customer.<span style="color:#9900CC;">create</span>!<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:name</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'bob'</span>, <span style="color:#ff3333; font-weight:bold;">:email</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'bob@example.com'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  customer = Customer.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span>customer.<span style="color:#9900CC;">key</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  customer.<span style="color:#9900CC;">name</span>.<span style="color:#9900CC;">should</span> == <span style="color:#996600;">'bob'</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>
</p>



	<p>The way SimpleDB works, you&#8217;re assured that Customer.find will work&#8230;eventually, but not right away.</p>

	<p>For a couple days we contented ourselves to just run the integration tests a couple times until they didn&#8217;t error out.  But that got old.</p>

	<p>Enter &#8220;eventually&#8221; :</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="ruby">it <span style="color:#996600;">&quot;should save&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  customer = Customer.<span style="color:#9900CC;">create</span>!<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:name</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'bob'</span>, <span style="color:#ff3333; font-weight:bold;">:email</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'bob@example.com'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  customer = eventually <span style="color:#006600; font-weight:bold;">&#123;</span> Customer.<span style="color:#9900CC;">find</span><span style="color:#006600; font-weight:bold;">&#40;</span>customer.<span style="color:#9900CC;">key</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
  customer.<span style="color:#9900CC;">name</span>.<span style="color:#9900CC;">should</span> == <span style="color:#996600;">'bob'</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>
</p>



	<p>It&#8217;s a very simple method (below) that just retries the passed in block until it succeeds, timing out after 10 tries.  Super simple, works like a charm.  Thank you ruby.</p>

	<p>Here&#8217;s the source :</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="ruby"><span style="color:#9966CC; font-weight:bold;">def</span> eventually<span style="color:#006600; font-weight:bold;">&#40;</span>tries = <span style="color:#006666;">0</span>, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">yield</span>
<span style="color:#9966CC; font-weight:bold;">rescue</span>
  <span style="color:#CC0066; font-weight:bold;">raise</span> <span style="color:#9966CC; font-weight:bold;">if</span> tries <span style="color:#006600; font-weight:bold;">&gt;</span>= <span style="color:#006666;">10</span>
  <span style="color:#CC0066; font-weight:bold;">sleep</span> <span style="color:#006666;">0.5</span>
  eventually<span style="color:#006600; font-weight:bold;">&#40;</span>tries <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#006666;">1</span>, <span style="color:#006600; font-weight:bold;">&amp;</span>block<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>
</p>



	<p>I will say, I can&#8217;t help but smile every time I write &#8220;eventually&#8221; in a test&#8230; <img src='http://onemanswalk.com/work/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2008/08/05/eventual-consistency-or-things-will-all-work-out-eventually/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Linking Delicious Library to Your Movies</title>
		<link>http://onemanswalk.com/work/2008/07/25/linking-delicious-library-to-your-movies/</link>
		<comments>http://onemanswalk.com/work/2008/07/25/linking-delicious-library-to-your-movies/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 15:47:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[applescript]]></category>

		<category><![CDATA[fun]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	If you&#8217;re like me, you value traveling light.  If you&#8217;re like me, anything that can live in digital form does.  I haven&#8217;t seen most of the actual DVD&#8217;s I own for quite some time now.  But the movies on them all live on a hard drive that&#8217;s hooked up to my television. [...]]]></description>
			<content:encoded><![CDATA[	<p>If you&#8217;re like me, you value traveling light.  If you&#8217;re like me, anything that can live in digital form does.  I haven&#8217;t seen most of the actual <span class="caps">DVD</span>&#8217;s I own for quite some time now.  But the movies on them all live on a hard drive that&#8217;s hooked up to my television.  I love the instant gratification.  I love that I can download a movie to my laptop and watch it on the plane.</p>

	<p><a href="http://www.delicious-monster.com/" title="">Delicious Library</a> makes this even cooler.  As much as I love having everything digital, I miss being able to take a quick glance at 100 covers and recognize the one I want.  I miss the association between images and memories.  Delicious gives this back to me.</p>

	<p>However, it&#8217;d be really cool if I could go browsing in my  delicious &#8220;library&#8221;, find the movie I want, and double click it to play.  Turns out you can easily extend the program with applescript, and a couple hours after I decided such a script didn&#8217;t already exist on the interweb, it now does.</p>

	<p>This applescript will open vlc with the file associated to a media object in delicious.  If there isn&#8217;t one already, it will prompt you for this file and then remember it for next time.  It&#8217;s really simple, and happy <img src='http://onemanswalk.com/work/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />

<div class="wp_syntax"><div class="code"><pre class="applescript"><span style="color: #808080; font-style: italic;">-- this will play the currently selected file in vlc using either </span>
<span style="color: #808080; font-style: italic;">-- the associated url or prompting you to find the file on disk</span>
&nbsp;
<span style="color: #b1b100;">tell</span> <span style="color: #000000; font-weight: bold;">first</span> document <span style="color: #b1b100;">of</span> application <span style="color: #ff0000;">&quot;Delicious Library 2&quot;</span>
    <span style="color: #b1b100;">set</span> selectedMedia <span style="color: #b1b100;">to</span> selected media
    <span style="color: #b1b100;">repeat</span> <span style="color: #b1b100;">with</span> selectedMedium <span style="color: #b1b100;">in</span> selectedMedia
        <span style="color: #b1b100;">set</span> movieUrl <span style="color: #b1b100;">to</span> associated URL <span style="color: #b1b100;">of</span> selectedMedium
&nbsp;
        <span style="color: #b1b100;">if</span> movieUrl starts <span style="color: #b1b100;">with</span> <span style="color: #ff0000;">&quot;file://&quot;</span> <span style="color: #b1b100;">then</span>
            <span style="color: #b1b100;">set</span> movieFile <span style="color: #b1b100;">to</span> rich text <span style="color: #cc66cc;">8</span> <span style="color: #000000; font-weight: bold;">through</span> <span style="color: #b1b100;">end</span> <span style="color: #b1b100;">of</span> movieUrl
        <span style="color: #b1b100;">else</span>
            <span style="color: #b1b100;">set</span> movieFile <span style="color: #b1b100;">to</span> <span style="color: #66cc66;">&#40;</span>choose file <span style="color: #b1b100;">with</span> prompt <span style="color: #ff0000;">&quot;Find the file for &quot;</span> \
                                            <span style="color: #66cc66;">&amp;</span> name <span style="color: #b1b100;">of</span> selectedMedium <span style="color: #66cc66;">&amp;</span> <span style="color: #ff0000;">&quot;:&quot;</span><span style="color: #66cc66;">&#41;</span>
&nbsp;
            <span style="color: #b1b100;">set</span> associated URL <span style="color: #b1b100;">of</span> selectedMedium <span style="color: #b1b100;">to</span> <span style="color: #ff0000;">&quot;file://&quot;</span> <span style="color: #66cc66;">&amp;</span> movieFile
        <span style="color: #b1b100;">end</span> <span style="color: #b1b100;">if</span>
&nbsp;
        <span style="color: #b1b100;">tell</span> application <span style="color: #ff0000;">&quot;VLC&quot;</span>
            activate
            <span style="color: #000066;">open</span> movieFile
            fullscreen
        <span style="color: #b1b100;">end</span> <span style="color: #b1b100;">tell</span>
    <span style="color: #b1b100;">end</span> <span style="color: #b1b100;">repeat</span>
<span style="color: #b1b100;">end</span> <span style="color: #b1b100;">tell</span></pre></div></div>
</p>



 &#8211; thanks <a href="http://brokenbuild.com/" title="">Wes</a> for pointing me to such a cool program!
 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2008/07/25/linking-delicious-library-to-your-movies/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PhpUnit for TextMate</title>
		<link>http://onemanswalk.com/work/2008/07/18/phpunit-for-textmate/</link>
		<comments>http://onemanswalk.com/work/2008/07/18/phpunit-for-textmate/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 23:55:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[testing]]></category>

		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	Who would have thought I&#8217;d be doing php?

	Anyway, yesterday I found myself doing php and really wanting it to hurt less.  I downloaded a textmate bundle for phpunit from github.  It wasn&#8217;t quite what I wanted, so I forked it and hacked it, and made it work a bit more like the rspec [...]]]></description>
			<content:encoded><![CDATA[	<p>Who would have thought I&#8217;d be doing php?</p>

	<p>Anyway, yesterday I found myself doing php and really wanting it to hurt less.  I downloaded a <a href="http://github.com/meritt/phpunit-tmbundle" title="">textmate bundle for phpunit</a> from github.  It wasn&#8217;t quite what I wanted, so I forked it and hacked it, and made it work a bit more like the rspec bundle.</p>

	<p>It now has:</p>

	<p>Commands</p>
	<ul>
		<li>run tests (in current file)</li>
		<li>run single test</li>
	</ul>

	<p>Snippets</p>
	<ul>
		<li>test</li>
	</ul>

	<p>And much to my surprise, it was way easy to do.  All in ruby, all with specs testing it.</p>

	<p>This article was going to be telling all y&#8217;all to come over to <em>my</em> cool fork of phpunit, but I sent the original author a pull request yesterday, and I just looked, and he&#8217;s pulled all my changes.  Rock!</p>

	<p>So go forth and enjoy the goodness that an extensible editor like textmate, oss code like the phpunit bundle, and github can bring about.</p>

	<p><a href="http://github.com/meritt/phpunit-tmbundle" title=""><span class="caps">PHP</span>Unit.bundle for textmate</a></p>

 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2008/07/18/phpunit-for-textmate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Clickable Stack Traces on your Rails Error Page</title>
		<link>http://onemanswalk.com/work/2008/04/30/clickable-stack-traces-on-your-rails-error-page/</link>
		<comments>http://onemanswalk.com/work/2008/04/30/clickable-stack-traces-on-your-rails-error-page/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 18:29:00 +0000</pubDate>
		<dc:creator>jeremy</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[	Wouldn&#8217;t it be nice if when an error happened in your application, you could not only see the stack trace, but click on a line and jump to the offending code?  This is not groundbreaking stuff, I know, I had this like 10 years ago in C++ and later Java fat clients, and I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[	<p>Wouldn&#8217;t it be nice if when an error happened in your application, you could not only see the stack trace, but click on a line and jump to the offending code?  This is not groundbreaking stuff, I know, I had this like 10 years ago in C++ and later Java fat clients, and I&#8217;m sure other languages &#038; IDEs had it too &#8211; but somehow in moving to writing web apps in Ruby, I lost it.</p>

	<p>I want it back damnit!</p>

	<p>Turns out it&#8217;s pretty easy to get back (at least it is if you use textmate) &#8211; check it out.</p>

	<h2>Custom Error Page</h2>

	<p>First, to get a custom error page for your project, add something like this to your application.rb :</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="ruby"><span style="color:#9966CC; font-weight:bold;">def</span> rescue_action_locally<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">*</span>args<span style="color:#006600; font-weight:bold;">&#41;</span>
  render <span style="color:#ff3333; font-weight:bold;">:template</span>  <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;application/public_error&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:layout</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">false</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">alias</span> rescue_action_in_public render_action_locally</pre></div></div>
</p>



	<p>Note, if you&#8217;re using exception notifiable, you probably want to change the last line to something like :</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="ruby"><span style="color:#9966CC; font-weight:bold;">alias</span> render_404 rescue_action_locally
<span style="color:#9966CC; font-weight:bold;">alias</span> render_500 rescue_action_locally</pre></div></div>
</p>



	<p>We use markaby, so our public_error template looks something like this; it&#8217;s probably a good idea to keep this simple and not use a layout, just in case the error came from the layout :</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="ruby">html <span style="color:#9966CC; font-weight:bold;">do</span>
  head <span style="color:#9966CC; font-weight:bold;">do</span>
    title action_name
    stylesheet_link_tag <span style="color:#996600;">'error'</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
  body <span style="color:#9966CC; font-weight:bold;">do</span>
    div.<span style="color:#9900CC;">error</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      div.<span style="color:#9900CC;">message</span> <span style="color:#9966CC; font-weight:bold;">do</span>
        h1 <span style="color:#996600;">&quot;Whoops&quot;</span>
&nbsp;
        p <span style="color:#996600;">&quot;We detected an error.  Don't worry, though, 
we've been notified and we're on it.&quot;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>
</p>




	<h2>Adding a Stack Trace w/ Links to the Error Page</h2>

	<p>So, it would be helpful to us for our error page to tell us more in our development and staging environments.  We do use exception notifiable, so we don&#8217;t actually need or want it to say anything else to a real user in production.  Adding this to our template, it now looks like this :</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="ruby">html <span style="color:#9966CC; font-weight:bold;">do</span>
  head <span style="color:#9966CC; font-weight:bold;">do</span>
    title action_name
    stylesheet_link_tag <span style="color:#996600;">'error'</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
  body <span style="color:#9966CC; font-weight:bold;">do</span>
    div.<span style="color:#9900CC;">error</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      div.<span style="color:#9900CC;">message</span> <span style="color:#9966CC; font-weight:bold;">do</span>
        h1 <span style="color:#996600;">&quot;Whoops&quot;</span>
&nbsp;
        p <span style="color:#996600;">&quot;We detected an error.  Don't worry, though, 
we've been notified and we're on it.&quot;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
      <span style="color:#9966CC; font-weight:bold;">if</span> RAILS_ENV != <span style="color:#996600;">'production'</span>
        div.<span style="color:#9900CC;">stack_trace</span> <span style="color:#9966CC; font-weight:bold;">do</span>
          h2 <span style="color:#996600;">&quot;Stack Trace&quot;</span>
          div <span style="color:#006600; font-weight:bold;">&#123;</span> link_to_code $!.<span style="color:#9900CC;">to_s</span>.<span style="color:#9900CC;">to_s</span>.<span style="color:#CC0066; font-weight:bold;">gsub</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>&quot;</span>, <span style="color:#996600;">&quot;
&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
          hr
          div <span style="color:#006600; font-weight:bold;">&#123;</span> link_to_code $!.<span style="color:#9900CC;">backtrace</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;
&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
        <span style="color:#9966CC; font-weight:bold;">end</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>
</p>



	<p>What&#8217;s that &#8220;link_to_code&#8221; method in there?</p>

	<p>It&#8217;s a method in application_helper that replaces any path with a textmate url to open up that file on your local system and jump to the offending line.  Check it out :</p>

	<p>
<div class="wp_syntax"><div class="code"><pre class="ruby"><span style="color:#9966CC; font-weight:bold;">def</span> link_to_code<span style="color:#006600; font-weight:bold;">&#40;</span>text<span style="color:#006600; font-weight:bold;">&#41;</span>
  text.<span style="color:#CC0066; font-weight:bold;">gsub</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">/</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span>\w\.<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">*</span>\<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006600; font-weight:bold;">&#91;</span>\w\<span style="color:#006600; font-weight:bold;">/</span>\.<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">+</span><span style="color:#006600; font-weight:bold;">&#41;</span>\:<span style="color:#006600; font-weight:bold;">&#40;</span>\d<span style="color:#006600; font-weight:bold;">+</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">/</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>match<span style="color:#006600; font-weight:bold;">|</span>
    file = $<span style="color:#006666;">1</span>.<span style="color:#9900CC;">starts_with</span>?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;/&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> ? $<span style="color:#006666;">1</span> : <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>RAILS_ROOT, $<span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    link_to match, <span style="color:#996600;">&quot;txmt://open?url=file://#{file}&amp;line=#{$2}&quot;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>
</p>



	<p>That&#8217;s it.  Suddenly, stack traces are friendly again!</p>

 ]]></content:encoded>
			<wfw:commentRss>http://onemanswalk.com/work/2008/04/30/clickable-stack-traces-on-your-rails-error-page/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
