<?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>Cloudspace &#124; Blog &#187; ruby</title>
	<atom:link href="http://www.cloudspace.com/blog/category/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cloudspace.com/blog</link>
	<description>All things cloudspacious</description>
	<lastBuildDate>Mon, 16 Jan 2012 22:58:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Every Day I&#8217;m Versioning (Gem versioning is important)</title>
		<link>http://www.cloudspace.com/blog/2011/01/24/every-day-im-versioning-gem-versioning-is-important/</link>
		<comments>http://www.cloudspace.com/blog/2011/01/24/every-day-im-versioning-gem-versioning-is-important/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 16:47:49 +0000</pubDate>
		<dc:creator>Josh Lindsey</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[best-practices]]></category>
		<category><![CDATA[RubyGems]]></category>

		<guid isPermaLink="false">http://www.cloudspace.com/blog/?p=882</guid>
		<description><![CDATA[The advent of Rails3 + Bundler makes gem versioning easy and mostly painless. Simply edit your Gemfile, bundle install, and you&#8217;re done. In other, non-Rails Ruby projects it&#8217;s almost as simple: repeat the steps above and then include the require &#8230; <a href="http://www.cloudspace.com/blog/2011/01/24/every-day-im-versioning-gem-versioning-is-important/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The advent of <a href="http://gembundler.com/rails3.html">Rails3 + Bundler</a> makes gem versioning easy and mostly painless. Simply edit your Gemfile, <code>bundle install</code>, and you&#8217;re done.</p>
<p>In other, non-Rails Ruby projects it&#8217;s almost as simple: repeat the steps above and then include the <code>require 'rubygems'; require 'bundler/setup'</code> lines in your code.</p>
<p>But what about your standalone Ruby scripts (like <a href="https://gist.github.com/742632">this one</a>)? Gem versioning is still very important so you aren&#8217;t bitten by incompatible library versions when you have to reinstall your whole system six months from now. So what do you do?<span id="more-882"></span></p>
<p>Well as it turns out, <a class="zem_slink" title="RubyGems" rel="homepage" href="http://rubygems.org">Rubygems</a> itself still has the ability to force gem versioning:</p>
<p><script src="https://gist.github.com/793483.js"> </script></p>
<p>By using the <code>gem</code> method and passing in the proper version string (using, <a href="http://yehudakatz.com/2010/08/21/using-considered-harmful-or-whats-wrong-with/">of course</a>, <code>~&gt;</code> instead of <code>&gt;=</code>) Rubygems ensures that when that gem is next required, it will conform to that versioning string. And if it&#8217;s unable to find an installed gem that matches that string, it will raise a <code>LoadError</code>.</p>
<p>I can&#8217;t stress enough how important it is to implement and respect <a href="http://semver.org">proper semantic versioning</a> in all aspects of development. It&#8217;s a tiny amount of extra work up front to save you potentially hours of headaches further down the road. Just do it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cloudspace.com/blog/2011/01/24/every-day-im-versioning-gem-versioning-is-important/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>On Getting Started</title>
		<link>http://www.cloudspace.com/blog/2010/02/25/on-getting-started/</link>
		<comments>http://www.cloudspace.com/blog/2010/02/25/on-getting-started/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 20:48:11 +0000</pubDate>
		<dc:creator>michaelorr</dc:creator>
				<category><![CDATA[agile development]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[Comic book]]></category>
		<category><![CDATA[Comics]]></category>

		<guid isPermaLink="false">http://www.cloudspace.com/blog/?p=631</guid>
		<description><![CDATA[I wanted to build an application where I could log my comic book reading habits to replace the paper system I was using. I had been mulling the idea over and just talking about various aspects with people for a &#8230; <a href="http://www.cloudspace.com/blog/2010/02/25/on-getting-started/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I wanted to build an application where I could log my comic book reading habits to replace the paper system I was using. I had been mulling the idea over and just talking about various aspects with people for a month or two. On the second time I started to talk to Corey about my idea, I asked him what he thought about which user authentication gem I should use.</p>
<p>“Don’t worry about it. Start. Begin,” he replied.</p>
<p>He was right. I had made a classic mistake and in doing so I was ignoring <a href="http://www.cloudspace.com/howwework.php">our work processes</a> with my own pet project idea.  I had &#8216;gone huge&#8217; with the idea from the very beginning.  I was planning user accounts, graphs, how to handle variant covers (a recent favorite variant for <a href="http://www.mycomicshop.com/comicbooks/item?IID=19783588">Green Lantern 51</a>), and complex relationships for keeping a single master library of existing comic issues that would be separate from each user’s collection and reading log. Don&#8217;t get me wrong, it is good to be passionate about your idea and to know what challenges may be in your future but do not let that get in the way of getting your project going. Start small. Do the simplest thing possible. Constantly adapt your plans to your application&#8217;s needs. Be Agile.</p>
<p>That day I stopped mulling about things like how to order numbers that sometimes had letters on the end (see <a href="http://www.mycomicshop.com/comicbooks/item?IID=9019951">Batman 700U</a>) and took my project agile. I started by building the simplest thing possible. I got going with no users, just an entry form with blank fields for comic title, issue number and date.  Since then I’ve added a pop-up date selector, notes fields, the ability to enter ranges at one time, different collection views and a few other features. It has been almost a month but I’ve only worked on my application for 15-20 hours, at least 10 of them in the last couple of days.  The ComicReads application is usable. It rocks! You could clone <a href="http://github.com/imightbeinatree/comicreads">the ComicReads github repo</a>, rake create &amp; migrate your database, run ‘script/server’, and be ready to log your own collection but I don&#8217;t expect you to do so.</p>
<p>The most exciting part is that I have stopped logging my comic reading on notecards this past weekend and am now exclusively using my new application on my virtual machine. I haven’t added users yet, switched to mysql or solved several sticky issues— but I’m on my way. By starting with the  features I needed— the ability to log the simplest and most essential parts of my comic book reading— I’ve made my project more exciting. Now that I have a working version, I find myself trying to work on it more and more. One day I will add user support, grab a URL, get a better design, and throw the system up for public use. Not this week though, I&#8217;ve got too much else to do.</p>
<p>Go ahead and get started. Begin! Throw out the users, forget connecting your application to twitter or facebook accounts, don’t worry about which database you are going to need, just go for it. Start by solving the problems that make your application interesting.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/89380253-21fc-4408-9489-e11386983b68/"><img class="zemanta-pixie-img" style="border: none; float: right;" src="http://img.zemanta.com/reblog_e.png?x-id=89380253-21fc-4408-9489-e11386983b68" alt="Reblog this post [with Zemanta]" /></a><span class="zem-script more-related pretty-attribution"><script src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.cloudspace.com/blog/2010/02/25/on-getting-started/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Replacing Ruby&#8217;s URI with Addressable</title>
		<link>http://www.cloudspace.com/blog/2009/05/26/replacing-rubys-uri-with-addressable/</link>
		<comments>http://www.cloudspace.com/blog/2009/05/26/replacing-rubys-uri-with-addressable/#comments</comments>
		<pubDate>Tue, 26 May 2009 15:22:29 +0000</pubDate>
		<dc:creator>michaelorr</dc:creator>
				<category><![CDATA[agile development]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[RubyGems]]></category>
		<category><![CDATA[Standard library]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[Uniform Resource Locator]]></category>

		<guid isPermaLink="false">http://www.cloudspace.com/blog/?p=476</guid>
		<description><![CDATA[Corey and I have been seriously tearing apart some URLs in our recent work and found that the standard URI library in ruby just wasn&#8217;t cutting it. It didn&#8217;t parse and merge exactly like we expected, sometimes even dropping parts &#8230; <a href="http://www.cloudspace.com/blog/2009/05/26/replacing-rubys-uri-with-addressable/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Corey and I have been seriously tearing apart some URLs in our recent work and found that the <a href="http://www.ruby-doc.org/stdlib/libdoc/uri/rdoc/">standard URI library in ruby</a> just wasn&#8217;t cutting it.  It didn&#8217;t parse and merge exactly like we expected, sometimes even dropping parts of the URL. It also had problems handling special characters in URLs like these: ™ ‘ ’ ° ®.  We found the <a href="http://github.com/sporkmonger/addressable/tree/master">Addressable</a> ruby gem from <a href="http://sporkmonger.com/">sporkmonger</a> on git hub. From the description it sounded like exactly what we needed, &#8220;Addressable is a replacement for the URI implementation that is part of Ruby&#8217;s standard library. It more closely conforms to the relevant RFCs and adds support for IRIs and URI templates.&#8221;</p>
<p>We took a look at the <a href="http://addressable.rubyforge.org/api/">documentation</a> and the library seemed to implement the same functionality as ruby&#8217;s standard library and then some.  It even supports <a href="http://en.wikipedia.org/wiki/Punycode">punycode</a>!  We installed the gem and tested it in irb with the URLs that had given us problems.  It worked perfectly.</p>
<p>For the most part, just config the gem in your environment.rb file and append &#8220;Addressable::&#8221; before any instance of &#8220;URI.&#8221; in your code.  Instead of &#8220;URI.parse(url)&#8221; you&#8217;ll now have &#8220;Addressable::URI.parse(url)&#8221;.  But be sure to take a glance at the documentation because there are a few methods that don&#8217;t exist one-to-one in the libraries.  For example: instead of calling URI.decode you would call Addressable::URI.unencode.&#8217;</p>
<p>We decided to run a test using ruby&#8217;s built in <a href="http://www.ruby-doc.org/core/classes/Benchmark.html">Benchmark library</a> and compare the parse methods in each since that was the method used most often in our code.  We started by requiring all the neccessary bits and whipping up an array of 1 million random URLs.</p>
<pre>array = (1..1000000).map {
  "http://cloudspace.com/#{rand}?#{rand}=#{rand}\##{rand}"
 }

require 'rubygems'
require 'uri'
require 'addressable/uri'</pre>
<p>Then here is the code to run the benchmark:</p>
<pre>Benchmark.bmbm do |x|
  x.report("uri") { array.each { |u| URI.parse(u) } }
  x.report("add") { array.each { |u| Addressable::URI.parse(u) } }
end</pre>
<p>And here is the result (the values are in seconds):</p>
<pre>Rehearsal ---------------------------------------
uri  65.660000  23.670000  89.330000 ( 97.630597)
add 128.030000  22.270000 150.300000 (161.927209)
---------------------------- total: 239.630000sec

          user     system      total        real
uri  65.170000  23.140000  88.310000 ( 93.674252)
add 127.920000  22.600000 150.520000 (166.662719)</pre>
<p>With a little bit of math on our own</p>
<table style="width: 400px; text-align: left; margin-left: 20px; margin-bottom: 20px;" border="0">
<caption style="font-weight: normal;">Average Computation Time Per URL over 1 million URLs</caption>
<tbody>
<tr>
<th style="font-weight: normal; text-align: left;">URI.parse</th>
<td>0.093674252 ms</td>
</tr>
<tr>
<th style="font-weight: normal; text-align: left;">Addressable::URI.parse</th>
<td>0.166662718 ms</td>
</tr>
</tbody>
</table>
<p>Addressable takes almost twice as long as URI to parse the URLs.  In our case, the time difference is still a minimal concern considering the benefits of having the URLs parsed to the more modern RFC.  So we went for it and it is working great for us!  Thanks Sporkmonger!</p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/ac88a30b-8ed7-4be4-9498-f1222f41e12b/" title="Reblog this post [with Zemanta]"><img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=ac88a30b-8ed7-4be4-9498-f1222f41e12b" alt="Reblog this post [with Zemanta]"></a><span class="zem-script more-related pretty-attribution"><script type="text/javascript" src="http://static.zemanta.com/readside/loader.js" defer="defer"></script></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.cloudspace.com/blog/2009/05/26/replacing-rubys-uri-with-addressable/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Creating a Reusable Dictionary of Steps in Cucumber</title>
		<link>http://www.cloudspace.com/blog/2009/02/18/creating-a-reusable-dictionary-of-steps-in-cucumber/</link>
		<comments>http://www.cloudspace.com/blog/2009/02/18/creating-a-reusable-dictionary-of-steps-in-cucumber/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 15:33:01 +0000</pubDate>
		<dc:creator>michaelorr</dc:creator>
				<category><![CDATA[agile development]]></category>
		<category><![CDATA[Cucumber]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[Behavior Driven Development]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[test driven development]]></category>

		<guid isPermaLink="false">http://www.cloudspace.com/blog/?p=319</guid>
		<description><![CDATA[Corey and I have been using Cucumber to write our integration tests on our current project and I thought I&#8217;d share a tip with you that has made our lives so much easier. When making steps in Cucumber, try to &#8230; <a href="http://www.cloudspace.com/blog/2009/02/18/creating-a-reusable-dictionary-of-steps-in-cucumber/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Corey and I have been using <a href="http://wiki.github.com/aslakhellesoy/cucumber">Cucumber</a> to write our integration tests on our current project and I thought I&#8217;d share a tip with you that has made our lives so much easier.  When making steps in Cucumber, try to make them reusable.  The idea behind Cucmber&#8217;s integration tests is that you are creating a language to talk about (and test) your project. By creating a dictionary of reusable steps we cut down the amount of time it takes to write new features, and decrease the size of the testing language which makes it easier to wrap your head around it.  Here is a sample step definition that could be used to check for various http response codes</p>
<pre class="brush: ruby">
Then /^it should return a response code of &quot;(.+)&quot;$/ do |resp_code|
  response.code.should == resp_code
end
</pre>
<p>Then in your feature file you can use this step in multiple tests</p>
<pre class="brush: ruby">
Then it should return a response code of &quot;301&quot;
Then it should return a response code of &quot;200&quot;
</pre>
<p>Once you&#8217;ve built up a good step dictionary for your project you&#8217;ll absolutely squeal with delight the first time you write a new scenario using existing step definitions without opening the step definition file to make new steps.</p>
<p>As your library grows you&#8217;ll find yourself repeating the same series of steps in different scenarios.  When this happens, you have identified a common task sequence that can be combined into a single &#8220;meta step&#8221;. It is important to keep separate steps for each of these tasks (see <a href="http://wiki.github.com/aslakhellesoy/cucumber/conjunction-steps-antipattern">the Conjunction Step Anti-Pattern in the cucumber wiki</a>) but its also nice to create a single meta step to help DRY up your code.</p>
<p>As a simple example, lets say you notice that you often check for both a response code of 200 and a &#8220;successfully updated&#8221; message on the page with these two steps:</p>
<pre class="brush: ruby">
Then it should return a response code of &quot;200&quot;
And the response body should contain &quot;successfully updated&quot;
</pre>
<p>You could add this single step to wrap it up:</p>
<pre class="brush: ruby">
Then /^it should be a successful update$/ do
  Then &quot;it should return a response code of \&quot;200\&quot;&quot;
  And &quot;the response body should contain \&quot;successfully updated\&quot;&quot;
end
</pre>
<p>This is a simple and useful tip that&#8217;s easy to implement, and you can start using this today, even on a project that&#8217;s been around for a while. Keep your code simple, and yourself sane.</p>
<div style="margin-top: 10px; height: 15px;" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://reblog.zemanta.com/zemified/43ba3c00-79b0-45b3-b3c5-2ee3b6fef193/" title="Zemified by Zemanta"><img style="border: medium none ; float: right;" class="zemanta-pixie-img" src="http://img.zemanta.com/reblog_e.png?x-id=43ba3c00-79b0-45b3-b3c5-2ee3b6fef193" alt="Reblog this post [with Zemanta]"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.cloudspace.com/blog/2009/02/18/creating-a-reusable-dictionary-of-steps-in-cucumber/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Another Shotgun Shell for your Sales Arsenal</title>
		<link>http://www.cloudspace.com/blog/2008/12/02/another-shotgun-shell-for-your-sales-arsenal/</link>
		<comments>http://www.cloudspace.com/blog/2008/12/02/another-shotgun-shell-for-your-sales-arsenal/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 21:06:04 +0000</pubDate>
		<dc:creator>michaelorr</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://www.cloudspace.com/blog/?p=42</guid>
		<description><![CDATA[Ryan Bates of Railscasts.com has just released a new screencast and it showcases the pure power of the Rails framework. In his new video, Ryan shows you how to create a blog in about 15 minutes. DHH did this eons &#8230; <a href="http://www.cloudspace.com/blog/2008/12/02/another-shotgun-shell-for-your-sales-arsenal/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ryan Bates of <a href="http://www.railscasts.com/">Railscasts.com</a> has just released a new screencast and it showcases the pure power of the Rails framework.   In his new video, <a href="http://media.rubyonrails.org/video/rails_blog_2.mov">Ryan shows you how to create a blog in about 15 minutes</a>.  DHH did this eons ago with Rails 0.5 and Ryan&#8217;s new video is just as amazing now as <a href="http://media.rubyonrails.org/video/rails-0-5.mov">DHH&#8217;s original video</a> was then .  If you have a potential customer that needs to be convinced of just how quickly Rails allows you to turn ideas into business logic and code, <a href="http://media.rubyonrails.org/video/rails_blog_2.mov">just show them this video</a>.</p>
<p>If they need even more convincing, talk to them about the speed at which the Rails group is adding amazing new extremely useful features.  <a href="http://ryandaigle.com/articles/2008/11/18/what-s-new-in-edge-rails-default-scoping">Default Scoping</a>, <a href="http://ryandaigle.com/articles/2008/11/13/what-s-new-in-edge-rails-except-and-only-routing-options">Only &amp; Except Routing</a>, <a href="http://ryandaigle.com/articles/2008/11/20/what-s-new-in-edge-rails-object-try">Object.try</a> and <a href="http://ryandaigle.com/articles/2008/10/25/what-s-new-in-edge-rails-even-better-conditional-get-support">even better Conditional Get Support</a> are all post 2.0 rails features that have been released in the recent months. (Ryan Daigle&#8217;s blog &#8220;Ryan&#8217;s Scraps&#8221; is a great place to keep up with the newest Edge Rails features, even the official Ruby on Rails blog links to his new feature explanations.)</p>
<p>Need even more convincing?  Tell them about the stunningly active Rails community of developers:  the <a href="http://weblog.rubyonrails.org/">b</a><a href="http://ryandaigle.com/">l</a><a href="http://www.loudthinking.com/">o</a><a href="http://weblog.jamisbuck.org/">g</a><a href="http://railstips.org/">s</a>, the <a href="http://railsenvy.com/">podcasts</a>, the <a href="http://envycasts.com/">scre</a><a href="http://www.railscasts.com/">enca</a><a href="http://peepcode.com/">sts</a>, the <a href="http://en.oreilly.com/rails2009/">conf</a><a href="http://pragmaticstudio.com/therailsedge/">erences</a> and the <a href="http://www.orug.org/">user groups</a>. Even the IRC channel rocks (#rubyonrails on freenode).  A community this involved is sure to thrive.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cloudspace.com/blog/2008/12/02/another-shotgun-shell-for-your-sales-arsenal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://media.rubyonrails.org/video/rails_blog_2.mov" length="49405864" type="video/quicktime" />
<enclosure url="http://media.rubyonrails.org/video/rails-0-5.mov" length="23732617" type="video/quicktime" />
		</item>
		<item>
		<title>Ruby Conf Wrap Up Video</title>
		<link>http://www.cloudspace.com/blog/2008/11/26/ruby-conf-wrap-up-video/</link>
		<comments>http://www.cloudspace.com/blog/2008/11/26/ruby-conf-wrap-up-video/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 21:44:22 +0000</pubDate>
		<dc:creator>michaelorr</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://www.cloudspace.com/blog/?p=39</guid>
		<description><![CDATA[Tim and I are featured in the new Ruby Conf wrap up video (around minute 24) from Gregg of RailsEnvy talking about how Cloudspace is a wonderful place to work and the fact that we are hiring right now. We &#8230; <a href="http://www.cloudspace.com/blog/2008/11/26/ruby-conf-wrap-up-video/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.railsenvy.com/2008/11/26/rubyconf-videos'>Tim and I are featured in the new Ruby Conf wrap up video</a> (around minute 24) from Gregg of <a href='http://www.railsenvy.com/'>RailsEnvy</a> talking about how Cloudspace is a wonderful place to work and the fact that we are hiring right now.  We got to put our little ad into the video because we sponsored it and the next several RailsEnvy podcasts.  We figured it was the best way to reach top notch rails developers as well as it being a great thing to support RailsEnvy because <a href='http://www.railsenvy.com/podcast'>their weekly podcast</a> is such a great contribution to the rails community.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cloudspace.com/blog/2008/11/26/ruby-conf-wrap-up-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About to head out to ORUG</title>
		<link>http://www.cloudspace.com/blog/2008/10/16/about-to-head-out-to-orug/</link>
		<comments>http://www.cloudspace.com/blog/2008/10/16/about-to-head-out-to-orug/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 21:08:53 +0000</pubDate>
		<dc:creator>michaelorr</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://www.cloudspace.com/blog/?p=36</guid>
		<description><![CDATA[Tim and I are just about to head out to the Orlando Ruby Users Group meeting. This month Matthew Williams will be talking about Ruby Rad (using Arduinos to control electronic in Ruby). So if you ever wanted to build &#8230; <a href="http://www.cloudspace.com/blog/2008/10/16/about-to-head-out-to-orug/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Tim and I are just about to head out to the <a href='http://www.orug.org/articles/2008/10/06/meeting-october-16th'>Orlando Ruby Users Group meeting</a>.</p>
<blockquote><p>This month <strong>Matthew Williams</strong> will be talking about <a href="http://rad.rubyforge.org/"><strong>Ruby Rad</strong></a> (using Arduinos to control electronic in Ruby). So if you ever wanted to build a robot, or maybe just your own personal electronics, you won’t want to miss this meeting. Matthew will have live demos of his electronics in action which should be fun to see.</p></blockquote>
<p>Exciting!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cloudspace.com/blog/2008/10/16/about-to-head-out-to-orug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RubyConf!</title>
		<link>http://www.cloudspace.com/blog/2008/09/15/rubyconf/</link>
		<comments>http://www.cloudspace.com/blog/2008/09/15/rubyconf/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 14:30:01 +0000</pubDate>
		<dc:creator>Tim Rosenblatt</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.cloudspace.com/blog/?p=31</guid>
		<description><![CDATA[RubyConf &#8217;08 is on! One of the nice parts of being in Orlando is that conventions come to you. Vacationing family members also come to you, and that&#8217;s usually a good thing. Usually. Michael and I already picked up tickets &#8230; <a href="http://www.cloudspace.com/blog/2008/09/15/rubyconf/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rubyconf.org/">RubyConf &#8217;08</a> is on! One of the nice parts of being in Orlando is that conventions come to you. Vacationing family members also come to you, and that&#8217;s usually a good thing. <em>Usually.</em></p>
<p>Michael and I already picked up tickets to the conference.  The very awesome <a href="http://www.rubyconf.org/talks/2">Gregg Pollack</a> of Orlando&#8217;s own <a href="http://www.orug.org/">Ruby User Group</a> will be giving the very first presentation of the conference. Tickets are gonna go fast, so if you&#8217;re in the Ruby/Rails scene, sign up soon. And, if you go, look for us. We&#8217;ll be the cool kids in the back of the room. <img src='http://www.cloudspace.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cloudspace.com/blog/2008/09/15/rubyconf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

