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

<channel>
	<title>Code Benders</title>
	<atom:link href="http://www.codebenders.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codebenders.com</link>
	<description>Agile Software Developers</description>
	<lastBuildDate>Tue, 24 Apr 2012 22:16:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Avoiding Startup Death</title>
		<link>http://www.codebenders.com/startup/avoiding-startup-death/</link>
		<comments>http://www.codebenders.com/startup/avoiding-startup-death/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 21:31:39 +0000</pubDate>
		<dc:creator>Taus</dc:creator>
				<category><![CDATA[Startup]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.codebenders.com/?p=1069</guid>
		<description><![CDATA[For about 15 years, I have had the pleasure of working with startup entrepreneurs in a number of disctechnology sectors and in various capacities. I&#8217;m amazed at how much the startup landscape has changed and, more importantly, how the processes that are used by tech founders to manage risk and hone their ideas have shifted. [...]]]></description>
			<content:encoded><![CDATA[<p>For about 15 years, I have had the pleasure of working with startup entrepreneurs in a number of disctechnology sectors and in various capacities. I&#8217;m amazed at how much the startup landscape has changed and, more importantly, how the processes that are used by tech founders to manage risk and hone their ideas have shifted. In particular, the combination of <a href="http://en.wikipedia.org/wiki/Agile_software_development">Agile Development</a> and <a href="http://en.wikipedia.org/wiki/Steve_Blank">Customer Development</a> has helped transform the nature of a startup from a mini-enterprise (emulating large corporations) into a very different beast &#8211; one that is designed to embrace iterative learning at an extremely rapid rate and with far less risk than the startups of 10 years ago.</p>
<p>Today it is possible, if not likely, that a smart startup can do vastly more with a fraction of the capital and time than it&#8217;s predecessors could just a decade ago. For those deep in the tech community, much of this is well-known. But I&#8217;ve found that many entrepreneurs, go into the process missing some critical information. If you&#8217;ve worked in the trenches of a startup that embraced agile and customer development, then this article will offer you little insight. But, if you don&#8217;t have any scars to show from previous startups (in particular a few failures) or your role within those startups was not on the product development side, then you might find what follows useful.</p>
<p>To be clear, I&#8217;m not writing about the <a href="http://benparr.com/2011/12/avoid-narrow-ideas/">idea oriented mistakes that Ben Parr wrote about</a> last year or the <a href="http://www.paulgraham.com/startupmistakes.html">business decision mistakes that Paul Graham wrote about</a> several years ago. I&#8217;m interested in the processes that founders adopt and how those processes influence success. Why? My fundamental assumption is that time and capital have been shrinking in relative importance and, therefore, the likelihood of pursuing a good idea at the same time as another startup or a large multi-product business, like Google or Facebook, is higher than ever.</p>
<p>The processes that I&#8217;m describing below can kill your startup, and avoiding them will help your startup gain an unfair advantage against your peers. So, here&#8217;s my list of process mistakes that can kill your startup (not necessarily in order of priority):</p>
<ul>
<li><strong>Ignoring Customers</strong> &#8211; It&#8217;s been said before, but I&#8217;m surprised at how many experienced and credible founders ignore their (prospective) customers. I&#8217;ve yet to meet a founder whose first vision of their product was correct. Yet, so many pursue <em>their</em> vision, often to &#8220;protect the idea&#8221; from competitors. Taken to its logical (yet, too common) extreme, many founders are unwilling to talk about their idea with customers at the earliest stages. Maintaining the confidentiality of your idea is worthwhile to some degree and overwhelmingly in cases where there is <em>real</em> intellectual property in play. But for most startups, confidentiality is the enemy of progress. Progress comes from discovering the nexus between your vision and <em>real customers</em>, i.e., finding and interviewing users of your product. To be clear, I&#8217;m not talking about discussing the idea with a few friends and peers. I&#8217;m talking about discussing the idea with total strangers who have no vested stake in the outcome, but who can strongly identify with the need your idea intends to solve. To avoid ignoring customers, founders must thoroughly embrace customer interaction as a core process and also learn to say &#8216;no&#8217; to non-customers like that investor that is funding your company. To learn more about why and how to do this well, read <a href="http://www.stevenblank.com/startup_index_qty.html">Steve Blank&#8217;s Startup Owner&#8217;s Manual</a> and the <a href="http://luxr.co/lean-ux/10-principles-for-lean-ux/">Ten Principles for Lean UX</a>.</li>
<li><strong>Feature Bloat</strong> &#8211; Ok, feature bloat sounds like a decision, not a process. But there is a subtlety worth pointing out here and in some ways it&#8217;s connected to Ignoring Customers. The <a href="http://www.rent.com">first company that I co-founded </a>had an evolutionary idea: inverting the search and matchmaking process of multifamily housing. Stealing a page out of eBay&#8217;s playbook, we set off to enable renters to list their need (e.g., a 2 bedroom, 2 bath in Portland) and encouraged apartment managers to provide them a &#8220;bid&#8221;. The idea, was simple, elegant and focused. But in our early days, the management team, which came out of the multifamily sector and knew it well, was convinced that we needed &#8220;more&#8221;. They were certain that we would need something extra to attract renters (a rental reward program) and the apartment managers (rent insurance). The three &#8220;features&#8221; together seemed very powerful, so much so that it was dubbed the &#8220;3 legs of the stool&#8221;. Without one, it was thought, the primary product idea would fail. We were wrong.  Although we spent a lot of time chasing down the second legs of the stools, it turned out that we were wasting our time and money. The lesson learned is that had we listened to closely to our customers, instead of telling them how awesome the combined idea was, we might have saved a significant amount of time and money and been able to dedicate those resources to the real challenge of changing behavior.</li>
<li><strong>Long Term Planning</strong> &#8211; Yes, I&#8217;m willing to say it. Long term planning can kill your startup. No, I&#8217;m not suggesting that you shouldn&#8217;t have a long term plan. But I am suggesting that it is a mistake to assume that you can stick to the plan or that anything similar to the plan will actually manifest. As Eisenhower said &#8220;Plans are nothing; planning is everything.&#8221; So plan, but just enough so that you can measure your direction and then track to the plan &#8211; expect your plan to change regularly. Keep in mind that your #1 priority as a startup is to discover and then validate the fit between your product idea and your customers real need. This is a highly iterative process, which will dramatically affect the underlying assumptions in your business planning. To ensure that your not slowing the discovery process, your business plan should not become a high priority until after you&#8217;ve found a strong nexus between your idea and your customer&#8217;s need. More importantly, encourage a culture that invites change, is skilled at adapting and understands that it is a key advantage. The originators of the <a href="http://agilemanifesto.org/">Agile Manifesto</a> said it best: &#8220;Welcome changing requirements, even late in development. Agile processes harness change for the customer&#8217;s competitive advantage.&#8221; And while I&#8217;m on the topic, <a href="http://agilemanifesto.org/principles.html">read all the principles of the Agile Manifesto</a>.</li>
<li><strong>Early Architecting (aka Premature Optimization)</strong> &#8211; software engineering in startups is different from every other form of engineering. When you build a bridge, you know where it starts, where it ends and what the requirements arebut in between. With software startups, you start with an idea and almost nothing else. The primary purpose of your startup (as most eloquently <a href="http://lean.st/">described by Eric Reis</a>) is to learn <em>everything else</em> that you need to succeed. So, don&#8217;t spend any time thinking about how to master plan your &#8220;platform&#8221;, just start building your highest priority features (to meet the needs your customer has articulated) and then put those features in front of your customers. If you&#8217;re lucky and your idea was perfectly conceived from the beginning, then you&#8217;ll have the opportunity to optimize your service to relieve bottlenecks or further improve usability and features.</li>
<li><strong>Go Fast, Go Big</strong> &#8211; I sometimes encounter founders who believe that in order to &#8220;win&#8221; they need to go fast and big. Usually, that means hiring a sizable team and working them to the bone for the foreseeable future. In my experience, this delusional thinking leads to burnout &#8211; fast and big! Arguably, going fast has some merit &#8211; but only relative to the certainty that you have in your product-customer fit and your ability measure and prove how your changes affect your customer. That is, if you don&#8217;t have <em>real metrics</em> to identify the results of your development effort, than you will likely be moving fast in the wrong direction. As to going big, there are drawbacks all around ranging from losing your company&#8217;s culture to excessive capital burn. For more on the topic, read <a href="http://37signals.com/rework/">Rework from the guys at 37signals</a>.</li>
<li><strong>Segmenting Your Team</strong> &#8211; Traditional businesses thrive because they are able to segment the various processes that make up the business, including design, development, marketing, operations, etc. Big company CEOs are so rarely engaged in real customer development that the exceptions become legend as in the <a href="http://money.cnn.com/magazines/business2/business2_archive/2005/01/01/8250213/index.htm">case of Toyota CEO Yuji Yokoya</a>.  Startups die for the same reason. When your #1 priority is to learn from your customer and discover the product that meets their needs, the only way to achieve this goal is to have everyone on your team actively participating in the discovery and development process. That includes designers, developers, product managers, marketing&#8230; everyone! As <a href="http://agilewarrior.wordpress.com/">Jonathan Rasmusson wrote in the Agile Samurai</a>, &#8220;On a typical agile project there are no predefined roles&#8230;. Quality is a team responsibility on an agile project. There is no QA department &#8211; you&#8217;re it&#8230;.&#8221; The same holds true for every function in a startup whether it be design or customer development. Any team member that is not engaged in your #1 priority will deliver less than their capable of contributing and, by the way, they&#8217;ll probably get bored with their <em>function</em> sooner rather than later.</li>
</ul>
<p>There are, of course, many other key processes that startups should consider, including agile planning, TDD, continuos integration, consistent refactoring, etc. These concepts are well covered in the books listed above. But the six mistakes above are the ones that I believe are too often overlooked in the early phase.</p>


<div class="shr-bookmarks shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Avoiding+Startup+Death+-+http://www.codebenders.com/startup/avoiding-startup-death/&amp;source=shareaholic" rel="" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.codebenders.com/startup/avoiding-startup-death/&amp;title=Avoiding+Startup+Death&amp;summary=For%20about%2015%20years%2C%20I%20have%20had%20the%20pleasure%20of%20working%20with%20startup%20entrepreneurs%20in%20a%20number%20of%20disctechnology%20sectors%20and%20in%20various%20capacities.%20I%27m%20amazed%20at%20how%20much%20the%20startup%20landscape%20has%20changed%20and%2C%20more%20importantly%2C%20how%20the%20processes%20that%20are%20used%20by%20tech%20founders%20to%20manage%20risk%20and%20hone%20&amp;source=Code%20Benders" rel="" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.codebenders.com/startup/avoiding-startup-death/&amp;t=Avoiding+Startup+Death" rel="" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.codebenders.com/startup/avoiding-startup-death/&amp;title=Avoiding+Startup+Death" rel="" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.codebenders.com/startup/avoiding-startup-death/&amp;title=Avoiding+Startup+Death" rel="" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Avoiding%20Startup%20Death%22&amp;body=Link:%20http://www.codebenders.com/startup/avoiding-startup-death/%20(sent%20via%20shareaholic)%0D%0A%0D%0A----%0D%0A%20For%20about%2015%20years%2C%20I%20have%20had%20the%20pleasure%20of%20working%20with%20startup%20entrepreneurs%20in%20a%20number%20of%20disctechnology%20sectors%20and%20in%20various%20capacities.%20I%27m%20amazed%20at%20how%20much%20the%20startup%20landscape%20has%20changed%20and%2C%20more%20importantly%2C%20how%20the%20processes%20that%20are%20used%20by%20tech%20founders%20to%20manage%20risk%20and%20hone%20" rel="" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.codebenders.com/startup/avoiding-startup-death/feed" rel="" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codebenders.com/startup/avoiding-startup-death/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Preventing Recursion in Ruby</title>
		<link>http://www.codebenders.com/code-cat/preventing-recursion-in-ruby/</link>
		<comments>http://www.codebenders.com/code-cat/preventing-recursion-in-ruby/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 16:54:06 +0000</pubDate>
		<dc:creator>avdi</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.codebenders.com/?p=1135</guid>
		<description><![CDATA[Sometimes you need to prevent code from executing recursively. I had to do this recently in order to prevent an infinite recursion in ActiveRecord callbacks. A before-save hook needed to save a parent model attribute, which because of an :autosave option would then try to save the child model, which would then try to save [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you need to prevent code from executing recursively. I had to do this recently in order to prevent an infinite recursion in ActiveRecord callbacks. A before-save hook needed to save a parent model attribute, which because of an <span style="font-family: monospace;color: white">:autosave</span> option would then try to save the child model, which would then try to save the parent… and so on until the stack overflowed.</p>
<p>Unless the method is directly calling itself, the only way to short-circuit a method when it recurses is to have it set some global flag which it can then check in recursive calls. If the flag is already set, the recursively called method bails out early. Once the original invocation is finished it unsets the flag.</p>
<p>It&#8217;s not safe to use a true global variable for this flag, since this would not be threadsafe. The safe way to do it (albeit not a terribly pretty one) is to use thread-local variables.</p>
<p>I decided to go ahead and write a macro which can turn any method into a non-recursive one. Here&#8217;s the code:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#9966CC; font-weight:bold;">module</span> RecursionHelpers<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> prevent_recursion<span style="color:#006600; font-weight:bold;">&#40;</span>method_name<span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; flag_name = <span style="color:#996600;">&quot;in:#{name}##{method_name}&quot;</span><br />
&nbsp; &nbsp; original = instance_method<span style="color:#006600; font-weight:bold;">&#40;</span>method_name<span style="color:#006600; font-weight:bold;">&#41;</span><br />
<br />
&nbsp; &nbsp; define_method<span style="color:#006600; font-weight:bold;">&#40;</span>method_name<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>args<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span><span style="color:#006600; font-weight:bold;">&#91;</span>flag_name<span style="color:#006600; font-weight:bold;">&#93;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">begin</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span><span style="color:#006600; font-weight:bold;">&#91;</span>flag_name<span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#0000FF; font-weight:bold;">true</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; original.<span style="color:#9900CC;">bind</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF; font-weight:bold;">self</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">call</span><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><br />
&nbsp; &nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">ensure</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span><span style="color:#006600; font-weight:bold;">&#91;</span>flag_name<span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#0000FF; font-weight:bold;">nil</span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>Let&#8217;s take a closer look at that.</p>
<p>The method takes an argument, <span style="font-family: monospace;color: white">method_name</span>, which is the name of the method to make non-recursive.</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#9966CC; font-weight:bold;">def</span> <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">prevent_recursion</span><span style="color:#006600; font-weight:bold;">&#40;</span>method_name<span style="color:#006600; font-weight:bold;">&#41;</span></div></div>
<p>Then it creates a name for the recursion flag. Since thread-local variables are global for the whole thread, we need a variable name which is reasonably unique. We get one by combining the current class and the method name.</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">flag_name = <span style="color:#996600;">&quot;in:#{name}##{method_name}&quot;</span></div></div>
<p>We&#8217;re going to replace the method with a modified version, so we need to stash the original implementation somewhere. We grab an <span style="font-family: monospace;color: white">UnboundMethod</span> object by calling <span style="font-family: monospace;color: white">#instance_method()</span> on the current class:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">original = instance_method<span style="color:#006600; font-weight:bold;">&#40;</span>method_name<span style="color:#006600; font-weight:bold;">&#41;</span></div></div>
<p>Then we proceed to redefine the method:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">define_method<span style="color:#006600; font-weight:bold;">&#40;</span>method_name<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>args<span style="color:#006600; font-weight:bold;">|</span></div></div>
<p>The first thing the modified method does is check to see if the recursion flag is set. If it is, it bails out.</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span><span style="color:#006600; font-weight:bold;">&#91;</span>flag_name<span style="color:#006600; font-weight:bold;">&#93;</span></div></div>
<p>Otherwise, it sets the flag:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span><span style="color:#006600; font-weight:bold;">&#91;</span>flag_name<span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#0000FF; font-weight:bold;">true</span></div></div>
<p>And then it binds the <span style="font-family: monospace;color: white">UnboundMethod</span> stored in <span style="font-family: monospace;color: white">original</span> to the current instance. This generates a <span style="font-family: monospace;color: white">Method</span> instance, which it proceeds to call, passing any arguments along.</p>
<p>(Note that I wrote this code for a Ruby 1.8 codebase. If it were for 1.9 I would pass the <span style="font-family: monospace;color: white">&amp;block</span> down to the original as well. Since blocks in 1.8 can&#8217;t accept <span style="font-family: monospace;color: white">&amp;block</span> arguments, I can&#8217;t do that here so long as I&#8217;m using the block form of <span style="font-family: monospace;color: white">define_method</span>. So this macro will only work for methods which do not take blocks.)</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">original.<span style="color:#9900CC;">bind</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF; font-weight:bold;">self</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">call</span><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></div></div>
<p>Finally, the code ensures that the recursion flag will be unset when the method is finished, even if an exception is raised.</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#9966CC; font-weight:bold;">ensure</span><br />
&nbsp; <span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span><span style="color:#006600; font-weight:bold;">&#91;</span>flag_name<span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#0000FF; font-weight:bold;">nil</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>Note that setting a thread-local variable to <span style="font-family: monospace;color: white">nil</span> removes it:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span>.<span style="color:#9900CC;">keys</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># =&gt; []</span><br />
<span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:foo</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#006666;">42</span><br />
<span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span>.<span style="color:#9900CC;">keys</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># =&gt; [:foo, :__inspect_key__]</span><br />
<span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:foo</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#0000FF; font-weight:bold;">nil</span><br />
<span style="color:#CC00FF; font-weight:bold;">Thread</span>.<span style="color:#9900CC;">current</span>.<span style="color:#9900CC;">keys</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># =&gt; [:__inspect_key__]</span></div></div>
<p>I have no idea what <span style="font-family: monospace;color: white">:__inspect_key__</span> is, but as you can see the <span style="font-family: monospace;color: white">:foo</span> key goes away after setting it to nil.</p>
<p>Let&#8217;s take a look at this in practice. Here&#8217;s are two methods <span style="font-family: monospace;color: white">#foo</span> and <span style="font-family: monospace;color: white">#bar</span> (original, no?). <span style="font-family: monospace;color: white">#foo</span> is recursive, with <span style="font-family: monospace;color: white">#bar</span> as an intermediary, preventing it from passing a recursion flag directly to itself.</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#9966CC; font-weight:bold;">class</span> X<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> foo<br />
&nbsp; &nbsp; bar<br />
&nbsp; &nbsp; <span style="color:#996600;">&quot;foo done&quot;</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> bar<br />
&nbsp; &nbsp; foo<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>
<p>Calling the <span style="font-family: monospace;color: white">#foo</span> method results in a stack overflow:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'./prevent-recursion.rb'</span><br />
<br />
X.<span style="color:#9900CC;">new</span>.<span style="color:#9900CC;">foo</span> <span style="color:#9966CC; font-weight:bold;">rescue</span> $! <span style="color:#008000; font-style:italic;"># =&gt; #&lt;SystemStackError: stack level too deep&gt;</span></div></div>
<p>But if we update the method with <span style="font-family: monospace;color: white">prevent_recursion</span>, it successfully exits:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:629px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'./prevent-recursion.rb'</span><br />
<br />
<span style="color:#9966CC; font-weight:bold;">class</span> X<br />
&nbsp; extend RecursionHelpers<br />
<br />
&nbsp; prevent_recursion <span style="color:#ff3333; font-weight:bold;">:foo</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
X.<span style="color:#9900CC;">new</span>.<span style="color:#9900CC;">foo</span> <span style="color:#008000; font-style:italic;"># =&gt; &quot;foo done&quot;</span></div></div>


<div class="shr-bookmarks shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Preventing+Recursion+in+Ruby+-+http://www.codebenders.com/code-cat/preventing-recursion-in-ruby/&amp;source=shareaholic" rel="" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.codebenders.com/code-cat/preventing-recursion-in-ruby/&amp;title=Preventing+Recursion+in+Ruby&amp;summary=Sometimes%20you%20need%20to%20prevent%20code%20from%20executing%20recursively.%20I%20had%20to%20do%20this%20recently%20in%20order%20to%20prevent%20an%20infinite%20recursion%20in%20ActiveRecord%20callbacks.%20A%20before-save%20hook%20needed%20to%20save%20a%20parent%20model%20attribute%2C%20which%20because%20of%20an%20%3Aautosave%20option%20would%20then%20try%20to%20save%20the%20child%20model%2C%20which&amp;source=Code%20Benders" rel="" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.codebenders.com/code-cat/preventing-recursion-in-ruby/&amp;t=Preventing+Recursion+in+Ruby" rel="" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.codebenders.com/code-cat/preventing-recursion-in-ruby/&amp;title=Preventing+Recursion+in+Ruby" rel="" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.codebenders.com/code-cat/preventing-recursion-in-ruby/&amp;title=Preventing+Recursion+in+Ruby" rel="" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Preventing%20Recursion%20in%20Ruby%22&amp;body=Link:%20http://www.codebenders.com/code-cat/preventing-recursion-in-ruby/%20(sent%20via%20shareaholic)%0D%0A%0D%0A----%0D%0A%20Sometimes%20you%20need%20to%20prevent%20code%20from%20executing%20recursively.%20I%20had%20to%20do%20this%20recently%20in%20order%20to%20prevent%20an%20infinite%20recursion%20in%20ActiveRecord%20callbacks.%20A%20before-save%20hook%20needed%20to%20save%20a%20parent%20model%20attribute%2C%20which%20because%20of%20an%20%3Aautosave%20option%20would%20then%20try%20to%20save%20the%20child%20model%2C%20which" rel="" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.codebenders.com/code-cat/preventing-recursion-in-ruby/feed" rel="" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codebenders.com/code-cat/preventing-recursion-in-ruby/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Participating in VentureBox</title>
		<link>http://www.codebenders.com/startup/venturebox/</link>
		<comments>http://www.codebenders.com/startup/venturebox/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 19:26:15 +0000</pubDate>
		<dc:creator>Taus</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Startup]]></category>
		<category><![CDATA[Bend]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Non-profits]]></category>
		<category><![CDATA[Oregon]]></category>
		<category><![CDATA[Pacific Northwest]]></category>

		<guid isPermaLink="false">http://www.codebenders.com/?p=1124</guid>
		<description><![CDATA[Last week at the Bend Venture Conference, Central Oregon&#8217;s newest (and only) business accelerator was unveiled. VentureBox is a business accelerator focused on supporting concept stage startups. The initiative is a program of the Tech Alliance and is committed to Central Oregon’s entrepreneurial community and helping turn innovative product and service ideas into great companies. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.VentureBox.org"><img class="alignright size-full wp-image-1125" title="VentureBox" src="http://www.codebenders.com/wp-content/uploads/2011/10/VentureBox.png" alt="VentureBox" width="301" height="66" /></a>Last week at the Bend Venture Conference, Central Oregon&#8217;s newest (and only) business accelerator was unveiled. <a href="http://www.venturebox.org">VentureBox</a> is a business accelerator focused on supporting concept stage startups. The initiative is a program of the <a href="http://www.techallianceco.org">Tech Alliance</a> and is committed to Central Oregon’s entrepreneurial community and helping turn innovative product and service ideas into great companies.</p>
<p>Although a much larger group of mentors will be announced, the <a href="http://www.venturebox.org/">current team</a> is pretty impressive and represents management, finance, technology and other key skills for early stage companies. VentureBox will be offering mentorships, infrastructure and a milestone-based program to develop startups into investment-ready enterprises.</p>
<p>We think that VentureBox has great potential to help diversify the Central Oregon community and create sustainable, living wage jobs. That&#8217;s why we&#8217;re proud to be supporting and participating in the effort!</p>


<div class="shr-bookmarks shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Participating+in+VentureBox+-+http://goo.gl/lQEph&amp;source=shareaholic" rel="" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.codebenders.com/startup/venturebox/&amp;title=Participating+in+VentureBox&amp;summary=Last%20week%20at%20the%20Bend%20Venture%20Conference%2C%20Central%20Oregon%27s%20newest%20%28and%20only%29%20business%20accelerator%20was%20unveiled.%20VentureBox%20is%20a%20business%20accelerator%20focused%20on%20supporting%20concept%20stage%20startups.%20The%20initiative%20is%20a%20program%20of%20the%20Tech%20Alliance%20and%20is%20committed%20to%20Central%20Oregon%E2%80%99s%20entrepreneurial%20c&amp;source=Code%20Benders" rel="" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.codebenders.com/startup/venturebox/&amp;t=Participating+in+VentureBox" rel="" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.codebenders.com/startup/venturebox/&amp;title=Participating+in+VentureBox" rel="" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.codebenders.com/startup/venturebox/&amp;title=Participating+in+VentureBox" rel="" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Participating%20in%20VentureBox%22&amp;body=Link:%20http://www.codebenders.com/startup/venturebox/%20(sent%20via%20shareaholic)%0D%0A%0D%0A----%0D%0A%20Last%20week%20at%20the%20Bend%20Venture%20Conference%2C%20Central%20Oregon%27s%20newest%20%28and%20only%29%20business%20accelerator%20was%20unveiled.%20VentureBox%20is%20a%20business%20accelerator%20focused%20on%20supporting%20concept%20stage%20startups.%20The%20initiative%20is%20a%20program%20of%20the%20Tech%20Alliance%20and%20is%20committed%20to%20Central%20Oregon%E2%80%99s%20entrepreneurial%20c" rel="" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.codebenders.com/startup/venturebox/feed" rel="" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codebenders.com/startup/venturebox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sponsoring the Bend Venture Conference</title>
		<link>http://www.codebenders.com/startup/sponsoring-the-bend-venture-conference/</link>
		<comments>http://www.codebenders.com/startup/sponsoring-the-bend-venture-conference/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 21:49:22 +0000</pubDate>
		<dc:creator>Taus</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Startup]]></category>
		<category><![CDATA[Bend]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Oregon]]></category>
		<category><![CDATA[Pacific Northwest]]></category>

		<guid isPermaLink="false">http://www.codebenders.com/?p=1103</guid>
		<description><![CDATA[Bend has a strong and growing startup ecosystem. The early-stage companies in our community include innovation in software, clean energy, recreation and countless other industries. We even have an active group of angel investors, advisors and mentors that help to shepherd these companies from idea to profitability and acquisition. Perhaps the most well-recognized effort in [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.codebenders.com/wp-content/uploads/2011/09/BVC-Logo-Header.png" alt="Bend Venture Conference" title="Bend Venture Conference" width="200" height="91" class="alignright size-full wp-image-1105" />Bend has a strong and growing startup ecosystem. The early-stage companies in our community include innovation in software, clean energy, recreation and countless other industries. We even have an active group of angel investors, advisors and mentors that help to shepherd these companies from idea to profitability and acquisition.</p>
<p>Perhaps the most well-recognized effort in this arena is the <a href="http://www.bendvc.com/">Bend Venture Conference</a>. For several years, the homegrown BVC has attracted startups from across the Pacific Northwest to compete for cash investment and the and the attention of the regional angel and VC community. Previous investments have included some great companies ranging from medical devices to web-based SaaS  providers. This year&#8217;s keynote speaker is in none other than Andy Sack, the Executive Director of TechStars Seattle and the Founder and CEO of Lighter Capital.</p>
<p>The BVC is the highlight and in some ways the epicenter of Bend&#8217;s thriving entrepreneurial spirit. So we are proud to support the efforts of the conference organizers and hope to see you at the event.</p>


<div class="shr-bookmarks shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Sponsoring+the+Bend+Venture+Conference+-+http://goo.gl/gi3lx&amp;source=shareaholic" rel="" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.codebenders.com/startup/sponsoring-the-bend-venture-conference/&amp;title=Sponsoring+the+Bend+Venture+Conference&amp;summary=Bend%20has%20a%20strong%20and%20growing%20startup%20ecosystem.%20The%20early-stage%20companies%20in%20our%20community%20include%20innovation%20in%20software%2C%20clean%20energy%2C%20recreation%20and%20countless%20other%20industries.%20We%20even%20have%20an%20active%20group%20of%20angel%20investors%2C%20advisors%20and%20mentors%20that%20help%20to%20shepherd%20these%20companies%20from%20idea%20t&amp;source=Code%20Benders" rel="" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.codebenders.com/startup/sponsoring-the-bend-venture-conference/&amp;t=Sponsoring+the+Bend+Venture+Conference" rel="" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.codebenders.com/startup/sponsoring-the-bend-venture-conference/&amp;title=Sponsoring+the+Bend+Venture+Conference" rel="" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.codebenders.com/startup/sponsoring-the-bend-venture-conference/&amp;title=Sponsoring+the+Bend+Venture+Conference" rel="" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Sponsoring%20the%20Bend%20Venture%20Conference%22&amp;body=Link:%20http://www.codebenders.com/startup/sponsoring-the-bend-venture-conference/%20(sent%20via%20shareaholic)%0D%0A%0D%0A----%0D%0A%20Bend%20has%20a%20strong%20and%20growing%20startup%20ecosystem.%20The%20early-stage%20companies%20in%20our%20community%20include%20innovation%20in%20software%2C%20clean%20energy%2C%20recreation%20and%20countless%20other%20industries.%20We%20even%20have%20an%20active%20group%20of%20angel%20investors%2C%20advisors%20and%20mentors%20that%20help%20to%20shepherd%20these%20companies%20from%20idea%20t" rel="" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.codebenders.com/startup/sponsoring-the-bend-venture-conference/feed" rel="" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codebenders.com/startup/sponsoring-the-bend-venture-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sponsoring Cascadia Ruby Conf</title>
		<link>http://www.codebenders.com/random-thoughts/sponsoring-cascadia-ruby-conf/</link>
		<comments>http://www.codebenders.com/random-thoughts/sponsoring-cascadia-ruby-conf/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 19:58:14 +0000</pubDate>
		<dc:creator>Taus</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Random Thoughts]]></category>
		<category><![CDATA[Pacific Northwest]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.codebenders.com/?p=1057</guid>
		<description><![CDATA[Cascadia Ruby is shaping up to be another great community gathering for the Pacific Northwest. Code Benders is proud to be a Cascadia company and we&#8217;re proud to be sponsoring the event. Check out the awesome lineup of speakers and then go register. And a huge thanks to Ben and Shane for organizing&#8230; See ya [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://cascadiarubyconf.com/"><img class="alignright size-full wp-image-1058" title="Cascadia Ruby Conf" src="http://www.codebenders.com/wp-content/uploads/2011/07/logo_square_reasonably_small.png" alt="" width="128" height="128" /></a><a href="http://cascadiarubyconf.com/">Cascadia Ruby</a> is shaping up to be another great community gathering for the Pacific Northwest. Code Benders is proud to be a Cascadia company and we&#8217;re proud to be sponsoring the event. Check out the awesome <a href="http://cascadiarubyconf.com/#speakers">lineup of speakers</a> and then go <a href="http://cascadiarubyconf.com/register">register</a>.</p>
<p>And a huge thanks to <a href="https://twitter.com/bleything">Ben</a> and <a href="https://twitter.com/veganstraightedge">Shane</a> for organizing&#8230; See ya all there!</p>


<div class="shr-bookmarks shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Sponsoring+Cascadia+Ruby+Conf+-+http://goo.gl/D34Vs&amp;source=shareaholic" rel="" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.codebenders.com/random-thoughts/sponsoring-cascadia-ruby-conf/&amp;title=Sponsoring+Cascadia+Ruby+Conf&amp;summary=Cascadia%20Ruby%20is%20shaping%20up%20to%20be%20another%20great%20community%20gathering%20for%20the%20Pacific%20Northwest.%20Code%20Benders%20is%20proud%20to%20be%20a%20Cascadia%20company%20and%20we%27re%20proud%20to%20be%20sponsoring%20the%20event.%20Check%20out%20the%20awesome%20lineup%20of%20speakers%20and%20then%20go%20register.%0D%0A%0D%0AAnd%20a%20huge%20thanks%20to%20Ben%20and%20Shane%20for%20organizin&amp;source=Code%20Benders" rel="" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.codebenders.com/random-thoughts/sponsoring-cascadia-ruby-conf/&amp;t=Sponsoring+Cascadia+Ruby+Conf" rel="" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.codebenders.com/random-thoughts/sponsoring-cascadia-ruby-conf/&amp;title=Sponsoring+Cascadia+Ruby+Conf" rel="" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.codebenders.com/random-thoughts/sponsoring-cascadia-ruby-conf/&amp;title=Sponsoring+Cascadia+Ruby+Conf" rel="" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Sponsoring%20Cascadia%20Ruby%20Conf%22&amp;body=Link:%20http://www.codebenders.com/random-thoughts/sponsoring-cascadia-ruby-conf/%20(sent%20via%20shareaholic)%0D%0A%0D%0A----%0D%0A%20Cascadia%20Ruby%20is%20shaping%20up%20to%20be%20another%20great%20community%20gathering%20for%20the%20Pacific%20Northwest.%20Code%20Benders%20is%20proud%20to%20be%20a%20Cascadia%20company%20and%20we%27re%20proud%20to%20be%20sponsoring%20the%20event.%20Check%20out%20the%20awesome%20lineup%20of%20speakers%20and%20then%20go%20register.%0D%0A%0D%0AAnd%20a%20huge%20thanks%20to%20Ben%20and%20Shane%20for%20organizin" rel="" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.codebenders.com/random-thoughts/sponsoring-cascadia-ruby-conf/feed" rel="" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codebenders.com/random-thoughts/sponsoring-cascadia-ruby-conf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Engine Yard Podcast</title>
		<link>http://www.codebenders.com/team/engine-yard-podcast/</link>
		<comments>http://www.codebenders.com/team/engine-yard-podcast/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 17:43:30 +0000</pubDate>
		<dc:creator>Taus</dc:creator>
				<category><![CDATA[Random Thoughts]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Bend]]></category>
		<category><![CDATA[Ruby on Ales]]></category>

		<guid isPermaLink="false">http://www.codebenders.com/?p=1048</guid>
		<description><![CDATA[Check out the Engine Yard podcast &#8220;Cloud Out Loud&#8221; interview with Matt and Mike where we talk Code Benders, how we work, Ruby on Ales, Bend, Oregon and lots more. Tweet This! Share this on LinkedIn Share this on Facebook Share this on del.icio.us Digg this! Email this to a friend? Subscribe to the comments for this [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.engineyard.com/podcast/s01e27-matt-kern-michael-taus"><img class="alignright size-full wp-image-941" title="Engine Yard" src="http://www.codebenders.com/wp-content/uploads/2011/05/EY3.Trdmrk.rgb_Hrzntl2.TM_.png" alt="" width="181" height="99" /></a>Check out the Engine Yard podcast &#8220;Cloud Out Loud&#8221; <a href="http://www.engineyard.com/podcast/s01e27-matt-kern-michael-taus">interview with Matt and Mike</a> where we talk Code Benders, how we work, <a href="http://ruby.onales.com">Ruby on Ales</a>, Bend, Oregon and lots more.</p>


<div class="shr-bookmarks shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Engine+Yard+Podcast+-+http://goo.gl/QqBhg&amp;source=shareaholic" rel="" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.codebenders.com/team/engine-yard-podcast/&amp;title=Engine+Yard+Podcast&amp;summary=Check%20out%20the%20Engine%20Yard%20podcast%20%22Cloud%20Out%20Loud%22%C2%A0interview%20with%20Matt%20and%20Mike%20where%20we%20talk%20Code%20Benders%2C%20how%20we%20work%2C%C2%A0Ruby%20on%20Ales%2C%20Bend%2C%20Oregon%20and%20lots%20more.&amp;source=Code%20Benders" rel="" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.codebenders.com/team/engine-yard-podcast/&amp;t=Engine+Yard+Podcast" rel="" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.codebenders.com/team/engine-yard-podcast/&amp;title=Engine+Yard+Podcast" rel="" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.codebenders.com/team/engine-yard-podcast/&amp;title=Engine+Yard+Podcast" rel="" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Engine%20Yard%20Podcast%22&amp;body=Link:%20http://www.codebenders.com/team/engine-yard-podcast/%20(sent%20via%20shareaholic)%0D%0A%0D%0A----%0D%0A%20Check%20out%20the%20Engine%20Yard%20podcast%20%22Cloud%20Out%20Loud%22%C2%A0interview%20with%20Matt%20and%20Mike%20where%20we%20talk%20Code%20Benders%2C%20how%20we%20work%2C%C2%A0Ruby%20on%20Ales%2C%20Bend%2C%20Oregon%20and%20lots%20more." rel="" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.codebenders.com/team/engine-yard-podcast/feed" rel="" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codebenders.com/team/engine-yard-podcast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview with Avdi Grimm, author of &#8220;Exceptional Ruby&#8221;</title>
		<link>http://www.codebenders.com/code-cat/interview-with-avdi-grimm-author-of-exceptional-ruby/</link>
		<comments>http://www.codebenders.com/code-cat/interview-with-avdi-grimm-author-of-exceptional-ruby/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 00:30:52 +0000</pubDate>
		<dc:creator>Taus</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.codebenders.com/?p=1044</guid>
		<description><![CDATA[Miles Forrest interviews Avdi Grimm on his new book &#8220;Exceptional Ruby&#8221;. Dealing with unexpected failures in code is tough, and oftentimes error processing is dealt with in a haphazard way. Hear the 5 questions you need to ask before writing code to handle unexpected failures, as well as his story about a cascading failure that [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1029" title="avdi" src="http://www.codebenders.com/wp-content/uploads/2011/06/avdi.png" alt="Avdi Grimm" width="176" height="200" /></p>
<p>Miles Forrest interviews Avdi Grimm on his new book &#8220;Exceptional Ruby&#8221;. Dealing with unexpected failures in code is tough, and oftentimes error processing is dealt with in a haphazard way. Hear the 5 questions you need to ask before writing code to handle unexpected failures, as well as his story about a cascading failure that went from bad to worse.</p>
<p>You can listen to the interview and purchase &#8220;Exceptional Ruby&#8221; on the <a href="http://pragprog.com/podcasts/show/37">Pragmatic Bookshelf website</a>.</p>


<div class="shr-bookmarks shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Interview+with+Avdi+Grimm%2C+author+of+%22Exceptional+Ruby%22+-+http://www.codebenders.com/code-cat/interview-with-avdi-grimm-author-of-exceptional-ruby/&amp;source=shareaholic" rel="" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.codebenders.com/code-cat/interview-with-avdi-grimm-author-of-exceptional-ruby/&amp;title=Interview+with+Avdi+Grimm%2C+author+of+%22Exceptional+Ruby%22&amp;summary=%0D%0A%0D%0AMiles%20Forrest%20interviews%20Avdi%20Grimm%20on%20his%20new%20book%20%22Exceptional%20Ruby%22.%20Dealing%20with%20unexpected%20failures%20in%20code%20is%20tough%2C%20and%20oftentimes%20error%20processing%20is%20dealt%20with%20in%20a%20haphazard%20way.%20Hear%20the%205%20questions%20you%20need%20to%20ask%20before%20writing%20code%20to%20handle%20unexpected%20failures%2C%20as%20well%20as%20his%20stor&amp;source=Code%20Benders" rel="" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.codebenders.com/code-cat/interview-with-avdi-grimm-author-of-exceptional-ruby/&amp;t=Interview+with+Avdi+Grimm%2C+author+of+%22Exceptional+Ruby%22" rel="" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.codebenders.com/code-cat/interview-with-avdi-grimm-author-of-exceptional-ruby/&amp;title=Interview+with+Avdi+Grimm%2C+author+of+%22Exceptional+Ruby%22" rel="" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.codebenders.com/code-cat/interview-with-avdi-grimm-author-of-exceptional-ruby/&amp;title=Interview+with+Avdi+Grimm%2C+author+of+%22Exceptional+Ruby%22" rel="" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Interview%20with%20Avdi%20Grimm%2C%20author%20of%20%22Exceptional%20Ruby%22%22&amp;body=Link:%20http://www.codebenders.com/code-cat/interview-with-avdi-grimm-author-of-exceptional-ruby/%20(sent%20via%20shareaholic)%0D%0A%0D%0A----%0D%0A%20%0D%0A%0D%0AMiles%20Forrest%20interviews%20Avdi%20Grimm%20on%20his%20new%20book%20%22Exceptional%20Ruby%22.%20Dealing%20with%20unexpected%20failures%20in%20code%20is%20tough%2C%20and%20oftentimes%20error%20processing%20is%20dealt%20with%20in%20a%20haphazard%20way.%20Hear%20the%205%20questions%20you%20need%20to%20ask%20before%20writing%20code%20to%20handle%20unexpected%20failures%2C%20as%20well%20as%20his%20stor" rel="" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.codebenders.com/code-cat/interview-with-avdi-grimm-author-of-exceptional-ruby/feed" rel="" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codebenders.com/code-cat/interview-with-avdi-grimm-author-of-exceptional-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hate Legacy Apps? Then You&#8217;ll Love DataMapper</title>
		<link>http://www.codebenders.com/code-cat/hate-legacy-apps-then-youll-love-datamapper/</link>
		<comments>http://www.codebenders.com/code-cat/hate-legacy-apps-then-youll-love-datamapper/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 03:45:31 +0000</pubDate>
		<dc:creator>Taus</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[DataMapper]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.codebenders.com/?p=970</guid>
		<description><![CDATA[Ruby on Rails makes it easy to bootstrap a greenfield project. Unfortunately not all projects are greenfield, so sometimes you need to work with a legacy database schema. ActiveRecord is a great choice when you have a full control over your database from the very beginning, but what should you do if you need to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.codebenders.com/wp-content/uploads/2011/05/DataMapper.png"><img class="alignright size-full wp-image-974" title="DataMapper" src="http://www.codebenders.com/wp-content/uploads/2011/05/DataMapper.png" alt="DataMapper" width="356" height="107" /></a>Ruby on Rails makes it easy to bootstrap a greenfield project. Unfortunately not all projects are greenfield, so sometimes you need to work with a legacy database schema. ActiveRecord is a great choice when you have a full control over your database from the very beginning, but what should you do if you need to connect to a database with a schema that isn’t in-line with Rails conventions?</p>
<p><a href="http://datamapper.org/">DataMapper</a> Core Contributor and Code Benders team member, <a href="http://www.codebenders.com/people/piotr-solnica/">Piotr Solnica</a>, has written a great blog post for our partner <a href="http://www.engineyard.com">Engine Yard</a> entitled <a title="Using DataMapper and Rails with Legacy Schemas" href="http://www.engineyard.com/blog/2011/using-datamapper-and-rails-with-legacy-schemas/"><em><strong>Using DataMapper and Rails with Legacy Schemas</strong></em></a>. Read it and you can say goodbye to your fear of inheriting a legacy app.</p>


<div class="shr-bookmarks shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Hate+Legacy+Apps%3F+Then+You%27ll+Love+DataMapper+-+http://www.codebenders.com/code-cat/hate-legacy-apps-then-youll-love-datamapper/&amp;source=shareaholic" rel="" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.codebenders.com/code-cat/hate-legacy-apps-then-youll-love-datamapper/&amp;title=Hate+Legacy+Apps%3F+Then+You%27ll+Love+DataMapper&amp;summary=Ruby%20on%20Rails%20makes%20it%20easy%20to%20bootstrap%20a%20greenfield%20project.%20Unfortunately%20not%20all%20projects%20are%20greenfield%2C%20so%20sometimes%20you%20need%20to%20work%20with%20a%20legacy%20database%20schema.%20ActiveRecord%20is%20a%20great%20choice%20when%20you%20have%20a%20full%20control%20over%20your%20database%20from%20the%20very%20beginning%2C%20but%20what%20should%20you%20do%20if&amp;source=Code%20Benders" rel="" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.codebenders.com/code-cat/hate-legacy-apps-then-youll-love-datamapper/&amp;t=Hate+Legacy+Apps%3F+Then+You%27ll+Love+DataMapper" rel="" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.codebenders.com/code-cat/hate-legacy-apps-then-youll-love-datamapper/&amp;title=Hate+Legacy+Apps%3F+Then+You%27ll+Love+DataMapper" rel="" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.codebenders.com/code-cat/hate-legacy-apps-then-youll-love-datamapper/&amp;title=Hate+Legacy+Apps%3F+Then+You%27ll+Love+DataMapper" rel="" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Hate%20Legacy%20Apps%3F%20Then%20You%27ll%20Love%20DataMapper%22&amp;body=Link:%20http://www.codebenders.com/code-cat/hate-legacy-apps-then-youll-love-datamapper/%20(sent%20via%20shareaholic)%0D%0A%0D%0A----%0D%0A%20Ruby%20on%20Rails%20makes%20it%20easy%20to%20bootstrap%20a%20greenfield%20project.%20Unfortunately%20not%20all%20projects%20are%20greenfield%2C%20so%20sometimes%20you%20need%20to%20work%20with%20a%20legacy%20database%20schema.%20ActiveRecord%20is%20a%20great%20choice%20when%20you%20have%20a%20full%20control%20over%20your%20database%20from%20the%20very%20beginning%2C%20but%20what%20should%20you%20do%20if" rel="" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.codebenders.com/code-cat/hate-legacy-apps-then-youll-love-datamapper/feed" rel="" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codebenders.com/code-cat/hate-legacy-apps-then-youll-love-datamapper/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CiviData Launches</title>
		<link>http://www.codebenders.com/startup/cividata-launches/</link>
		<comments>http://www.codebenders.com/startup/cividata-launches/#comments</comments>
		<pubDate>Tue, 24 May 2011 00:00:43 +0000</pubDate>
		<dc:creator>Taus</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Startup]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Oregon]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.codebenders.com/?p=930</guid>
		<description><![CDATA[A well-deserved congratulations to the team at CiviData on the Beta launch of their new local government data aggregation and comparison tool. After several months of iteration, the product is being launched to invitees only. If you are an employee of a local or state government and want a better understanding of how your services [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-931" title="CiviData" src="http://www.codebenders.com/wp-content/uploads/2011/05/CiviData-1-300x266.png" alt="" width="210" height="186" />A well-deserved congratulations to the team at <a href="http://www.CiviData.com">CiviData</a> on the Beta launch of their new local government data aggregation and comparison tool. After several months of iteration, the product is being launched to invitees only. If you are an employee of a local or state government and want a better understanding of how your services compare to other localities, you can sign up to join the free Beta test by visiting the <a title="Compare local government services and rates" href="http://www.cividata.com">CiviData website</a>.</p>
<p>You can learn more about the project <a href="http://www.codebenders.com/projects/cividata/">here</a>.</p>


<div class="shr-bookmarks shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=CiviData+Launches+-+http://goo.gl/sy84r&amp;source=shareaholic" rel="" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.codebenders.com/startup/cividata-launches/&amp;title=CiviData+Launches&amp;summary=A%20well-deserved%20congratulations%20to%20the%20team%20at%20CiviData%20on%20the%20Beta%20launch%20of%20their%20new%20local%20government%20data%20aggregation%20and%20comparison%20tool.%20After%20several%20months%20of%20iteration%2C%20the%20product%20is%20being%20launched%20to%20invitees%20only.%20If%20you%20are%20an%20employee%20of%20a%20local%20or%20state%20government%20and%20want%20a%20better%20un&amp;source=Code%20Benders" rel="" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.codebenders.com/startup/cividata-launches/&amp;t=CiviData+Launches" rel="" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.codebenders.com/startup/cividata-launches/&amp;title=CiviData+Launches" rel="" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.codebenders.com/startup/cividata-launches/&amp;title=CiviData+Launches" rel="" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22CiviData%20Launches%22&amp;body=Link:%20http://www.codebenders.com/startup/cividata-launches/%20(sent%20via%20shareaholic)%0D%0A%0D%0A----%0D%0A%20A%20well-deserved%20congratulations%20to%20the%20team%20at%20CiviData%20on%20the%20Beta%20launch%20of%20their%20new%20local%20government%20data%20aggregation%20and%20comparison%20tool.%20After%20several%20months%20of%20iteration%2C%20the%20product%20is%20being%20launched%20to%20invitees%20only.%20If%20you%20are%20an%20employee%20of%20a%20local%20or%20state%20government%20and%20want%20a%20better%20un" rel="" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.codebenders.com/startup/cividata-launches/feed" rel="" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codebenders.com/startup/cividata-launches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Huge Thanks</title>
		<link>http://www.codebenders.com/random-thoughts/huge-thanks/</link>
		<comments>http://www.codebenders.com/random-thoughts/huge-thanks/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 17:56:59 +0000</pubDate>
		<dc:creator>Taus</dc:creator>
				<category><![CDATA[Random Thoughts]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Oregon]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.codebenders.com/?p=841</guid>
		<description><![CDATA[Well, Ruby on Ales came and went. Based on the feedback I received from attendees and speakers, everyone had a pretty good time. I&#8217;m pretty amazed that the whole thing came off without a hitch&#8230; whew! We are planning a repeat performance next year. And, we are considering options for a summer/fall event in the [...]]]></description>
			<content:encoded><![CDATA[<p>Well, <a title="Ruby on Ales" href="http://ruby.onales.com">Ruby on Ales</a> came and went. Based on the feedback I received from attendees and speakers, everyone had a pretty good time. I&#8217;m pretty amazed that the whole thing came off without a hitch&#8230; whew!</p>
<p>We are planning a repeat performance next year. And, we are considering options for a summer/fall event in the next six months. We&#8217;ve kicked around the idea of a rumble, hackfest or even an agile theme. If you have any ideas or feedback that you&#8217;d like share, send an <a title="Ruby on Ales Organizers" href="mailto:theguys@onales.com">email to all the guys</a> or <a href="http://twitter.com/rbonales">drop us a tweet</a>.</p>
<p>Finally, I want to send out a huge thanks to all the attendees, <a href="http://ruby.onales.com/speakers">speakers</a> and <a href="http://ruby.onales.com/sponsors">sponsors</a> for making RoA 2011 so awesome!</p>


<div class="shr-bookmarks shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Huge+Thanks+-+http://goo.gl/PdWAP&amp;source=shareaholic" rel="" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-linkedin">
			<a href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http://www.codebenders.com/random-thoughts/huge-thanks/&amp;title=Huge+Thanks&amp;summary=Well%2C%20Ruby%20on%20Ales%20came%20and%20went.%20Based%20on%20the%20feedback%20I%20received%20from%20attendees%20and%20speakers%2C%20everyone%20had%20a%20pretty%20good%20time.%20I%27m%20pretty%20amazed%20that%20the%20whole%20thing%20came%20off%20without%20a%20hitch...%20whew%21%0D%0A%0D%0AWe%20are%20planning%20a%20repeat%20performance%20next%20year.%20And%2C%20we%20are%20considering%20options%20for%20a%20summer%2Ffa&amp;source=Code%20Benders" rel="" title="Share this on LinkedIn">Share this on LinkedIn</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.codebenders.com/random-thoughts/huge-thanks/&amp;t=Huge+Thanks" rel="" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.codebenders.com/random-thoughts/huge-thanks/&amp;title=Huge+Thanks" rel="" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.codebenders.com/random-thoughts/huge-thanks/&amp;title=Huge+Thanks" rel="" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Huge%20Thanks%22&amp;body=Link:%20http://www.codebenders.com/random-thoughts/huge-thanks/%20(sent%20via%20shareaholic)%0D%0A%0D%0A----%0D%0A%20Well%2C%20Ruby%20on%20Ales%20came%20and%20went.%20Based%20on%20the%20feedback%20I%20received%20from%20attendees%20and%20speakers%2C%20everyone%20had%20a%20pretty%20good%20time.%20I%27m%20pretty%20amazed%20that%20the%20whole%20thing%20came%20off%20without%20a%20hitch...%20whew%21%0D%0A%0D%0AWe%20are%20planning%20a%20repeat%20performance%20next%20year.%20And%2C%20we%20are%20considering%20options%20for%20a%20summer%2Ffa" rel="" title="Email this to a friend?">Email this to a friend?</a>
		</li>
		<li class="shr-comfeed">
			<a href="http://www.codebenders.com/random-thoughts/huge-thanks/feed" rel="" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
</ul><div style="clear: both;"></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.codebenders.com/random-thoughts/huge-thanks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/


Served from: www.codebenders.com @ 2012-05-18 11:57:51 -->
