<?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>Wed, 01 Feb 2012 20:40:30 +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>Preventing Recursion in Ruby</title>
		<link>http://www.codebenders.com/code/preventing-recursion-in-ruby/</link>
		<comments>http://www.codebenders.com/code/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://goo.gl/SO7ZY&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/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/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/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/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/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/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/preventing-recursion-in-ruby/feed/</wfw:commentRss>
		<slash:comments>4</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>
		<category><![CDATA[Venture Capital]]></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>
		<category><![CDATA[Venture Capital]]></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[Engine Yard]]></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/interview-with-avdi-grimm-author-of-exceptional-ruby/</link>
		<comments>http://www.codebenders.com/code/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://goo.gl/XksNR&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/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/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/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/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/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/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/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/hate-legacy-apps-then-youll-love-datamapper/</link>
		<comments>http://www.codebenders.com/code/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[Engine Yard]]></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://goo.gl/mKTLc&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/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/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/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/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/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/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/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>
		<item>
		<title>Congratulations, Piotr!</title>
		<link>http://www.codebenders.com/code/congratulations-piotr/</link>
		<comments>http://www.codebenders.com/code/congratulations-piotr/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 20:21:24 +0000</pubDate>
		<dc:creator>Taus</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[DataMapper]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.codebenders.com/?p=836</guid>
		<description><![CDATA[Piotr Solnica, one of our team members, has just been added to the DataMapper Core Team.  Dan Kubb, the team lead, wrote: &#8220;Piotr has been involved in DataMapper for several years now, and has been doing some amazing work on the DataMapper Property API, heading up our CI server configuration and many other areas&#8230; he&#8217;s been extremely helpful inside [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.codebenders.com/people/piotr-solnica/"><img class="alignright" title="Piotr Solnica" src="http://www.codebenders.com/wp-content/themes/codebenders2/images/solnica.png" alt="" width="168" height="190" /></a><a title="Piotr Solnica" href="http://www.codebenders.com/people/piotr-solnica/">Piotr Solnica</a>, one of our team members, has just been added to the <a title="DataMapper" href="http://datamapper.org/">DataMapper</a> Core Team.  <a title="Dan Kubb" href="http://twitter.com/dkubb">Dan Kubb</a>, the team lead, <a href="http://groups.google.com/group/datamapper/browse_thread/thread/beaa97bfc8b2dc13?pli=1">wrote</a>:</p>
<p>&#8220;Piotr has been involved in DataMapper for several years now, and has been doing some amazing work on the DataMapper Property API, heading up our CI server configuration and many other areas&#8230; he&#8217;s been extremely helpful inside the channel and out.&#8221;</p>
<p>Congrats, Piotr&#8230; nicely done!</p>


<div class="shr-bookmarks shr-bookmarks-center">
<ul class="socials">
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Congratulations%2C+Piotr%21+-+http://goo.gl/1afoH&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/congratulations-piotr/&amp;title=Congratulations%2C+Piotr%21&amp;summary=Piotr%20Solnica%2C%20one%20of%20our%20team%20members%2C%20has%20just%20been%20added%C2%A0to%20the%20DataMapper%20Core%C2%A0Team.%20%C2%A0Dan%20Kubb%2C%20the%20team%20lead%2C%20wrote%3A%0D%0A%0D%0A%22Piotr%20has%20been%20involved%20in%20DataMapper%20for%20several%20years%20now%2C%20and%20has%C2%A0been%20doing%20some%20amazing%20work%20on%20the%20DataMapper%20Property%20API%2C%20heading%C2%A0up%20our%20CI%20server%20configuration%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/code/congratulations-piotr/&amp;t=Congratulations%2C+Piotr%21" 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/congratulations-piotr/&amp;title=Congratulations%2C+Piotr%21" 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/congratulations-piotr/&amp;title=Congratulations%2C+Piotr%21" rel="" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-mail">
			<a href="mailto:?subject=%22Congratulations%2C%20Piotr%21%22&amp;body=Link:%20http://www.codebenders.com/code/congratulations-piotr/%20(sent%20via%20shareaholic)%0D%0A%0D%0A----%0D%0A%20Piotr%20Solnica%2C%20one%20of%20our%20team%20members%2C%20has%20just%20been%20added%C2%A0to%20the%20DataMapper%20Core%C2%A0Team.%20%C2%A0Dan%20Kubb%2C%20the%20team%20lead%2C%20wrote%3A%0D%0A%0D%0A%22Piotr%20has%20been%20involved%20in%20DataMapper%20for%20several%20years%20now%2C%20and%20has%C2%A0been%20doing%20some%20amazing%20work%20on%20the%20DataMapper%20Property%20API%2C%20heading%C2%A0up%20our%20CI%20server%20configuration%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/code/congratulations-piotr/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/congratulations-piotr/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-02-05 07:56:39 -->
