<?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>Lovable Lyle &#187; Ruby</title>
	<atom:link href="http://lylejohnson.name/blog/category/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://lylejohnson.name/blog</link>
	<description>Covering Software Development with Ruby and FXRuby</description>
	<lastBuildDate>Wed, 18 Aug 2010 20:08:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Wait, what was that last bit?</title>
		<link>http://lylejohnson.name/blog/2009/10/26/wait-what-was-that-last-bit/</link>
		<comments>http://lylejohnson.name/blog/2009/10/26/wait-what-was-that-last-bit/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 21:29:00 +0000</pubDate>
		<dc:creator>Lyle</dc:creator>
				<category><![CDATA[FXRuby]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://lylejohnson.name/blog/?p=361</guid>
		<description><![CDATA[So some of you may have seen the news about Gemcutter.org changing its name to RubyGems.org and becoming the new default gem repository for the Ruby community. I&#8217;m not completely clear yet on all the pros and cons of this move, but I do have to admit that the new site is pretty to look [...]]]></description>
			<content:encoded><![CDATA[<p>So some of you may have seen the <a href="http://update.gemcutter.org/2009/10/26/transition.html">news</a> about Gemcutter.org changing its name to RubyGems.org and becoming the new default gem repository for the Ruby community. I&#8217;m not completely clear yet on all the pros and cons of this move, but I do have to admit that the new site is pretty to look at. As a maintainer, I like the idea of being able to just type &#8220;gem push fxruby&#8221; (or whatever the command syntax is) and being done with it. So I think this will probably turn out to be a good thing.</p>

<p>Buried a few paragraphs down in the news, however, is this tidbit:</p>

<blockquote><p>So, what does this mean for RubyForge? The Ruby-specific functionality and data will be moved into RubyGems.org, and the parts that other hosting sites (GitHub, Google Code, SourceForge) can do better will be pruned away.</p></blockquote>

<p>In the comments, I asked for clarification on exactly what RubyForge services will be going away, and Tom Copeland&#8217;s reply seems to indicate (to me) that the answer is &#8220;everything&#8221;:</p>

<blockquote><p>&#8230; We&#8217;re putting together a schedule for standing down (or making read-only) various bits of RubyForge. The thing is that now there are much better options for hosting code/forums/lists/files/etc, so that stuff is going to be retired. I think back in 2003 it made sense for the Ruby community to have a dedicated site for hosting that stuff. Now I don&#8217;t think it does&#8230; I think GitHub/Google Code/SourceForge can all do a better job at that, and Ruby Central doesn&#8217;t have to expend resources/time/money supporting functionality that others are doing better.</p></blockquote>

<p>This is troubling to me since several FXRuby-related services (such as the web page hosting, bug tracker, and mailing lists) are handled by RubyForge, and have been for a long time now. For me, it&#8217;s not merely a question of, say, finding a new place to host the mailing lists. It&#8217;s also making a decision about what to do with the archives, and dealing with all of the <a href="http://www.codinghorror.com/blog/archives/001306.html">non-readers</a> who will go out their way to try to subscribe to the old lists even when they&#8217;re clearly marked as inactive and then send e-mails to me to ask why that&#8217;s so. But I know that Tom and company are sensitive to these concerns, and we&#8217;ll figure out a way to make the transition work as painlessly as possible, so I&#8217;m going to try not to be a grumpy old man about it.</p>

<p>So in the meantime, I&#8217;m beginning to consider what my post-RubyForge options are. Setting up a dedicated <a href="http://www.redmine.org/">Redmine</a> installation, as <a href="http://onestepback.org/redmine/">Jim Weirich</a> has done for his projects, is an attractive option as it provides one-stop shopping (and I&#8217;ve had some experience with setting up Redmine for other projects already). Another option is to go with different sites targeted at the different services, like entp&#8217;s <a href="http://lighthouseapp.com/">Lighthouse</a> for bug tracking, maybe <a href="http://groups.google.com/">Google Groups</a> for the mailing list hosting, and maybe piggybacking the static web site content off of my personal web site somehow (ugh). What about you, dear reader? If you&#8217;re hosting one of the 8,500 projects at RubyForge, what plans are you contemplating for RubyForge&#8217;s looming retirement?</p>
]]></content:encoded>
			<wfw:commentRss>http://lylejohnson.name/blog/2009/10/26/wait-what-was-that-last-bit/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Ruby Hoedown 2009 Wrap-Up</title>
		<link>http://lylejohnson.name/blog/2009/08/31/ruby-hoedown-2009-wrap-up/</link>
		<comments>http://lylejohnson.name/blog/2009/08/31/ruby-hoedown-2009-wrap-up/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 18:01:47 +0000</pubDate>
		<dc:creator>Lyle</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[rubyhoedown]]></category>

		<guid isPermaLink="false">http://lylejohnson.name/blog/?p=346</guid>
		<description><![CDATA[The third annual Ruby Hoedown took place this past weekend at the Opryland Hotel in Nashville. In what I think is a first for Ruby conferences, the Hoedown was free (as in beer) this year. And thanks to the hard work of conference organizer Jeremy McAnally, and the support of a number of sponsors, the [...]]]></description>
			<content:encoded><![CDATA[<p>The third annual <a href="http://rubyhoedown.com/">Ruby Hoedown</a> took place this past weekend at the Opryland Hotel in Nashville. In what I think is a first for Ruby conferences, the Hoedown was free (as in beer) this year. And thanks to the hard work of conference organizer <a href="http://www.jeremymcanally.com/">Jeremy McAnally</a>, and the support of a number of sponsors, the conference was a great success. I haven&#8217;t heard any of the numbers yet, so I don&#8217;t know how this year&#8217;s attendance compared to that for previous hoedowns, but I can tell you that it was a packed house.</p>

<h1>What Happened on Friday</h1>

<p><a href="http://www.benmabey.com/">Ben Mabey</a> opened the Hoedown Friday morning with his overview of how to use Cucumber (and related tools) in the <a href="http://behaviour-driven.org/">Behavior-Driven Development (BDD)</a> of software. He made the point that BDD is a mindset and not a toolset. In other words, BDD is not synonomous with <a href="http://cukes.info/">Cucumber</a> and <a href="http://rspec.info/">RSpec</a>, and it&#8217;s less important which tools you&#8217;re using than that you&#8217;re doing BDD. Ben&#8217;s talk moved at a very quick pace and I found it difficult to follow despite my familiarity with the basic concepts. A number of his slides also included dark text on dark backgrounds, which were difficult or impossible to read. Despite these flaws, he did provide some useful information for Rails developers who are looking to take their BDD skills to the next level. Several of the tools and techniques he mentioned (such as using <a href="http://htmlunit.sourceforge.net/">HtmlUnit</a> with JRuby) were new to me and have given me ideas about how to do more effective testing.</p>

<p><a href="http://atmos.org/">Corey Donohoe</a> was up next. The title of Corey&#8217;s talk was &#8220;How to Be Simply Awesome,&#8221; but I&#8217;m not exactly sure what the topic was. It was a bit of a ramble, but entertaining nevertheless. The part that most resonated with me had to do with how he and his co-workers at <a href="http://www.engineyard.com/">Engine Yard</a> have structured their internal software projects as collections of services instead of monolithic applications. It gave me some ideas about how we could maybe use <a href="http://www.sinatrarb.com/">Sinatra</a> and <a href="http://www.jruby.org/">JRuby</a> to provide a RESTful interface (for third-party clients) to one of our existing Java-based web applications that&#8217;s hurting for an API.</p>

<p>After a break for lunch, <a href="http://fallenrogue.com/">Leon Gersing</a> gave a presentation on desktop and mobile application development with <a href="http://www.appcelerator.com/">Appcelerator Titanium</a>. Titanium has been on my radar for awhile now, and so I was especially looking forward to this talk. One of the most interesting takeaways for me, and one that I had not yet picked up on, was that Titanium&#8217;s compiler (if that&#8217;s the correct term) will convert embedded Ruby or Python code into Javascript, or at least something that can talk to the rest of the runtime via a Javascript bridge. Don&#8217;t quote me on that. But it&#8217;s something approximately that cool.</p>

<p>Next up was <a href="http://madstop.com/">Luke Kanies</a>, talking about how to use Ruby to develop <a href="http://www.martinfowler.com/bliki/DomainSpecificLanguage.html">external domain-specific languages</a> (DSLs). I&#8217;ve heard Luke speak about <a href="http://reductivelabs.com/trac/puppet">Puppet</a> before, and was afraid this was going to be another Puppet-centric talk. (Not that Puppet isn&#8217;t cool, but you know, I&#8217;ve heard about it before.) But this was really more of a lessons-learned kind of talk, and a good overview of the motivation, tools and general process for developing external DSLs. Although most of the information that Luke presented was familiar to me, it was nevertheless a timely reminder that despite all of the recent attention on building internal DSLs on top of Ruby, there are some very good reasons to opt for an external DSL. For example, one of the dangers of using an internal DSL is that it makes it harder to restrict what the user is able to do.</p>

<p>Following Luke was <a href="http://luigimontanez.com/">Luigi Montanez</a>, on &#8220;How to be a Civic Hacker.&#8221; Now <em>this</em> was an interesting topic, and one that I don&#8217;t believe I&#8217;ve ever seen addressed at a Ruby conference (or other tech conferences for that matter). Luigi works for <a href="http://sunlightlabs.com/">Sunlight Labs</a>, part of the <a href="http://sunlightfoundation.com/">Sunlight Foundation</a>, and their mission is using the Internet to promote government transparency. Luigi posited (a little tongue-in-cheek) that the pinnacle of participatory government, much better than merely tweeting about your pet cause or joining a Facebook group to promote your candidate, is to engage in &#8220;civic hacking.&#8221; He gave a number of examples of how people are taking the raw data published by the government and turning it into useful information via web applications and other services. The only drawback to the presentation came near the end, where Luigi veered off into a quick demonstration of how one could take advantage of Google&#8217;s <a href="http://code.google.com/p/appengine-jruby/wiki/GettingStarted">App Engine</a> gem to publish their JRuby applications to the cloud (and get free hosting to boot). It would have been a good topic for a lightning talk, or even a separate full-blown presentation, but it felt sort-of tacked on to the end of an otherwise coherent talk.</p>

<p>Due to a cancellation earlier in the day, a slot had opened up in the schedule by the end of the day, and so were treated to a surprise presentation by <a href="http://onestepback.org/">Jim Weirich</a> on &#8220;Source Control for People Who Don&#8217;t Like Source Control.&#8221; He opened by promising us that despite the title, &#8220;this talk is <em>not</em> about <a href="http://git-scm.com/">Git</a>.&#8221; Jim went on to construct from first principles how his ideal source code control system would work, if he had to design one from scratch. As time went on, it became clear that while he was describing a mythical SCCS called &#8220;csc&#8221;, he was in fact talking about how Git works under the hood. Like every presentation of Jim&#8217;s that I&#8217;ve ever seen, it was thoroughly engaging, entertaining and educational.</p>

<h1>What Happened on Saturday</h1>

<p>Something I ate on Friday really did a number on me, and let&#8217;s just leave it at that. The result was that I didn&#8217;t get much sleep on Friday night, and I slept in and generally took it easy on Saturday morning, so I missed several presentations. I heard through the grapevine that there was a good presentation on <a href="http://heroku.com/">Heroku</a>, and another on how threads work in Ruby 1.9, so I hope to review the slides for those talks at some later date.</p>

<p>The first talk that I heard after my return to the living was <a href="http://davidchelimsky.net/">David Chelimsky</a>&#8216;s talk on the use of mock objects in testing. It wasn&#8217;t really an introduction to the topic, more of a &#8220;best practices&#8221; type of talk. I was encouraged (sort of) to see that other people are struggling with some of the same problems that I struggle with when using mocks. For example, it can sometimes be tricky to decide whether to use a &#8220;stub&#8221; or a mock in a particular situation. David&#8217;s advice in this situation is to use stubs to enable execution, but to use expectations (via mock objects) to express the intent of the test. For some of the thornier questions about how to deal with mock objects, David recommended the forthcoming <a href="http://www.amazon.com/Growing-Object-Oriented-Software-Addison-Wesley-Signature/dp/0321503627"><cite>Growing Object-Oriented Software, Guided by Tests</cite></a>, by Steve Freeman and Nat Pryce. (A free <a href="http://mockobjects.com/book/">preview</a> of this book is also available online.) He also managed to get in a plug or two for <a href="http://www.pragprog.com/titles/achbd/the-rspec-book">the RSpec book</a>, which is currently in beta but should be available in print later this year. I&#8217;m reading the beta of this right now, and can highly recommend it for anyone who&#8217;s interested in learning how to use Cucumber, RSpec and <a href="http://github.com/brynary/webrat/tree/master">Webrat</a> for test-driven development.</p>

<p>Then came the lightning talks. I didn&#8217;t take many notes on these, but this seems like the time to mention that there was a <strong>lot</strong> of buzz about <a href="http://www.mongodb.org/">MongoDB</a> this weekend. Luigi made reference in his presentation to the fact that MongoDB just reached 1.0 status, and at least two different lightning talks were about MongoDB.</p>

<p>The Ruby Hoedown proper closed with <a href="http://weblog.jamisbuck.org/">Jamis Buck</a>&#8216;s keynote address. I can&#8217;t remember for sure, but I think this was the first time I&#8217;d ever heard Jamis speak. He&#8217;s very good at it. Jamis opened with a discussion of the art of making <a href="http://www.isfa.org/">string figures</a>. He covered the different notations (or languages) that people use to describe string figures, the &#8220;libraries&#8221; or patterns of standard moves that are combined and incorporated into more complex patterns, and the string figure-making community at large. He made the point that at first, before you&#8217;ve taken the time to really understand how string figures are constructed, the process of turning a simple loop of string into a complex figure can be appear to be &#8220;magic&#8221;. He went on to relate this to our experience as software developers. The difference between good and great programmers, Jamis said, is the level of understanding, and there are four ways to increase your understanding and thus become a better programmer:</p>

<ol>
<li><strong>Know Thy Tools.</strong> Take the time to learn how the tools you use regularly, such as the operating system, text editors, the shell, source code control systems, etc. work.</li>
<li><strong>Know Thy Languages.</strong> You&#8217;re rarely working with just one language, such as Ruby or Java. If you&#8217;re doing any sort of web application development, at a minimum you&#8217;re also dealing with HTML, CSS and Javascript. Take the time to understand the finer points of these languages.</li>
<li><strong>Know Thy Libraries.</strong> Know why you&#8217;re using the particular libraries you&#8217;re using, and what distinguishes them from competing libraries. Engage in <a href="http://www.codespelunking.org/">code spelunking</a> to understand how libraries work under the hood.</li>
<li><strong>Know Thy Communities.</strong> Don&#8217;t merely be a &#8220;consumer&#8221; of community resources like mailing lists, forums and IRC channels. Be actively involved, recognizing that for these communities to really work it requires both giving and taking.</li>
</ol>

<p>And with that, the conference concluded. I know that there were various after-hours parties on Friday and Saturday night, but I didn&#8217;t make it to any of those so I&#8217;ll leave it to others to say what went on there. It looks like a few photos are starting to appear on <a href="http://www.flickr.com/search/?q=rubyhoedown&#038;m=tags">Flickr</a>, and I know that people were making pretty liberal use of the <a href="http://twitter.com/#search?q=%23rubyhoedown">#rubyhoedown</a> hashtag on Twitter despite our failure to make the &#8220;trending topics&#8221; list, so be sure to check out those sources for more insight into the weekend&#8217;s festivities!</p>

<p><b>Update:</b> Tommy Morgan has posted his recap <a href="http://blog.duwanis.com/past/2009/8/31/ruby_flippin_hoedown_flippin_recap/">here</a>. If I come across any others I&#8217;ll try to remember to link &#8216;em up here.</p>
]]></content:encoded>
			<wfw:commentRss>http://lylejohnson.name/blog/2009/08/31/ruby-hoedown-2009-wrap-up/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Help Sponsor a Free Ruby Hoedown!</title>
		<link>http://lylejohnson.name/blog/2009/03/04/help-sponsor-a-free-ruby-hoedown/</link>
		<comments>http://lylejohnson.name/blog/2009/03/04/help-sponsor-a-free-ruby-hoedown/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 18:36:27 +0000</pubDate>
		<dc:creator>Lyle</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://lylejohnson.name/blog/?p=328</guid>
		<description><![CDATA[At last year&#8217;s Ruby Hoedown, organizer Jeremy McAnally announced his intention to make this year&#8217;s Hoedown free for all conference attendees. Unfortunately, it seems that he hasn&#8217;t been able to enlist enough big sponsors to make that a reality, so he is reaching out to the Ruby community for donations. Jeremy has set a goal [...]]]></description>
			<content:encoded><![CDATA[<p>At last year&#8217;s <a href="http://www.rubyhoedown.com/">Ruby Hoedown</a>, organizer Jeremy McAnally announced his intention to make this year&#8217;s Hoedown <strong>free</strong> for all conference attendees. Unfortunately, it seems that he hasn&#8217;t been able to enlist enough big sponsors to make that a reality, so <a href="http://omgbloglol.com/help-make-a-free-ruby-conferen">he is reaching out to the Ruby community for donations</a>. </p>

<p>Jeremy has set a goal of $15,000, which would cover the basic costs of a venue in downtown Nashville (this year&#8217;s conference site), sound and promotional materials. Obviously, if you&#8217;re associated with a business that&#8217;s able to make a sizable donation, that would be great, but individual donations of any amount are greatly appreciated. See Jeremy&#8217;s <a href="http://omgbloglol.com/help-make-a-free-ruby-conferen">blog</a> for more details about how you can participate.</p>
]]></content:encoded>
			<wfw:commentRss>http://lylejohnson.name/blog/2009/03/04/help-sponsor-a-free-ruby-hoedown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can Ruby Scale? Still Don&#8217;t Know.</title>
		<link>http://lylejohnson.name/blog/2008/11/17/can-ruby-scale-still-dont-know/</link>
		<comments>http://lylejohnson.name/blog/2008/11/17/can-ruby-scale-still-dont-know/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 18:22:40 +0000</pubDate>
		<dc:creator>Lyle</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://lylejohnson.name/blog/?p=301</guid>
		<description><![CDATA[Thursday morning, first day of RubyConf. Matz has finished his keynote address and a check of my watch tells me that I&#8217;ve got some time to kill before Gregg Pollack&#8217;s talk on &#8220;Scaling Rails&#8221; starts at 10:25, so I head up to my hotel room for a bit. Unfortunately, when I returned to the conference [...]]]></description>
			<content:encoded><![CDATA[<p>Thursday morning, first day of RubyConf. Matz has finished his keynote address and a check of my watch tells me that I&#8217;ve got some time to kill before Gregg Pollack&#8217;s talk on &#8220;Scaling Rails&#8221; starts at 10:25, so I head up to my hotel room for a bit. Unfortunately, when I returned to the conference room around 10:20, I found that Gregg had already begun his presentation to a standing-room-only audience. I wasn&#8217;t surprised that the room had filled up. Gregg is known to be a great presenter, and the topic is one of interest to most Rubyists these days.</p>

<p>As much as I was looking forward to seeing his talk, I&#8217;m not a big fan of standing in one place for 30 or 45 minutes, even if I have a wall to lean against, so I headed next door to sit in on David Koontz&#8217;s talk on <a href="http://monkeybars.rubyforge.org/">Monkeybars</a>. No problem, I figured, because the <a href="http://confreaks.com/">Confreaks</a> guys were there recording all of the talks, and the video of Gregg&#8217;s talk would be up on their web site at some point after the conference ended. As David Black had noted in a conversation the night before, the fact that you can just catch videos of any of the talks you might have missed has quelled his concerns about RubyConf evolving from a single-track conference to one with multiple tracks.</p>

<p>Fast-forward to this morning, and I&#8217;m reading Peter Cooper&#8217;s <a href="http://www.rubyinside.com/scaling-ruby-the-informative-40-minute-screencast-1337.html">review</a> of one of the latest <a href="http://www.railsenvy.com/">RailsEnvy</a> screencasts, entitled (wait for it) &#8220;Scaling Ruby&#8221;. It is a 40-minute long, highly polished version of the presentation that Gregg gave at RubyConf, and it sells for $9. And I think this is great. Gregg and Jason provide a ton of absolutely free material to the Ruby and Rails community, including their popular weekly RailsEnvy podcasts. I&#8217;m sure that a lot of work went into producing the video, as well as the PDF that comes with it, and it is probably a great value for anyone who&#8217;s interested in purchasing it.</p>

<p>The thing that I <em>didn&#8217;t</em> realize until I got to the review&#8217;s comments section, however, is that Gregg apparently chose not to have his RubyConf presentation recorded. I didn&#8217;t even realize that this was an option, probably because it&#8217;s an option that no other RubyConf presenter has ever exercised. Jeremy McAnally, organizer of this year&#8217;s <a href="http://rubyhoedown.com/">Ruby Hoedown</a>, also <a href="http://twitter.com/jeremymcanally/status/1009810803">indicated</a> that Gregg didn&#8217;t want his Hoedown talk recorded either. Bottom line: If you (like me) missed his talk at RubyConf this year, you&#8217;re not going to see it.</p>

<p>Gregg did chime in with <a href="http://www.rubyinside.com/scaling-ruby-the-informative-40-minute-screencast-1337.html#comment-37371">his response</a> to some of the negative comments on the review, and you can (and should) read those to hear his side of the story. His defense is that he put a lot of time into preparing for his presentation, and that he deserves to be compensated for that, and that if a free Confreaks recording of the same material were available that no one would buy the screencast. All of those things are probably true. (He does neglect to mention that the $250 conference registration fee is waived for presenters; perhaps he also chose to pay that fee in lieu of having his talk recorded.)</p>

<p>Let me be clear that while it is quite possibly a serious PR blunder on his part, Gregg didn&#8217;t break any &#8220;rules&#8221; and hasn&#8217;t done anything unethical per se. There&#8217;s also nothing on the <a href="http://www.rubyconf.org/">RubyConf site</a>, or in the conference materials, that guarantees video of each and every conference presentation will eventually be available on the Confreaks site. And before someone accuses me of being a free software zealot who believes that &#8220;information wants to be free&#8221;, let me reiterate that I&#8217;m not opposed to folks <a href="http://www.pragprog.com/titles/fxruby/fxruby">charging money</a> for their work. Baby needs new shoes and all that. I would simply request that in the future RubyConf organizers consider requiring conference speakers to agree to have their talks recorded; or, barring that, <span style="text-decoration: line-through;">being a little more up-front</span> somehow communicating with conference attendees about <em>which</em> conference presentations are truly &#8220;can&#8217;t miss&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://lylejohnson.name/blog/2008/11/17/can-ruby-scale-still-dont-know/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>RubyConf 2008 Wrap-Up</title>
		<link>http://lylejohnson.name/blog/2008/11/09/rubyconf-2008-wrap-up/</link>
		<comments>http://lylejohnson.name/blog/2008/11/09/rubyconf-2008-wrap-up/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 13:12:14 +0000</pubDate>
		<dc:creator>Lyle</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://lylejohnson.name/blog/?p=299</guid>
		<description><![CDATA[I have an hour or so to kill while I&#8217;m waiting here in the Orlando airport for my flight back to Huntsville, so I thought I&#8217;d post a quick summary of RubyConf 2008. The conference was held at the Omni Orlando Resort at ChampionsGate. The Omni is big place, and they were hosting several other [...]]]></description>
			<content:encoded><![CDATA[<p>I have an hour or so to kill while I&#8217;m waiting here in the Orlando airport for my flight back to Huntsville, so I thought I&#8217;d post a quick summary of RubyConf 2008.</p>

<p>The conference was held at the <a href="http://www.omnihotels.com/FindAHotel/OrlandoChampionsGate.aspx">Omni Orlando Resort at ChampionsGate</a>. The Omni is big place, and they were hosting several other conferences at the same time as as RubyConf (including, ironically, some sort of tanning convention). The resort has two or three swimming pools, including a &#8220;lazy river&#8221; which I took advantage of for a couple of hours on Saturday afternoon. They also have a golf course if you&#8217;re into that kind of thing, and free shuttle access to the Disney parks. As a location for a technical conference, however, the Omni is sort of a mixed bag. There are a number of seating places throughout the hotel where groups of Rubyists could gather to talk or hack on things, which was convenient. The (free) Wi-Fi coverage throughout the hotel was also very good. The resort is fairly isolated, however, and as a result those of us without cars were mostly restricted to eating at the pricey on-site restaurants. A shortage of power outlets in the conference rooms also presented a challenge for those of us using notebooks with short battery lives, but in hindsight I think it was a good thing that I wasn&#8217;t able to leave my computer open for very long during the presentations. I was a lot less distracted by IRC, Twitter, e-mail, etc. and I got a lot more out of the presentations as a result.</p>

<p>If there was a unifying theme for this year&#8217;s RubyConf, it was probably &#8220;love&#8221;. We heard a <em>lot</em> about <a href="http://twitter.com/fmedlin/statuses/996297194">love</a> this weekend. And that&#8217;s not a bad thing, but it was no doubt a reaction to some of the pre-conference controversy and the more general problem of divisions in the Ruby community that have become more pronounced over the last couple of years. We also took time out to recognize the contributions of <a href="http://www.ruby-forum.com/topic/166658">Guy Decoux</a> and <a href="http://kerneltrap.org/OpenBSD/Jun-ichiro_itojun_Hagino">Itojun</a>, both important Rubyists who passed away this past year.</p>

<p>This year&#8217;s RubyConf had three tracks, and I saw a lot of really excellent presentations. I&#8217;m not going to try to summarize the talks, because the conference videos will be up on the <a href="http://www.confreaks.com/">Confreaks</a> site in due time, but I will mention a couple of presentations that you should look for. I&#8217;ve been trying to up my testing game over the last month or so, and Francis Hwang&#8217;s talk on &#8220;Testing Heresies&#8221; (Thursday afternoon) dealt with a number of dogmatic beliefs that we tend to have about testing and why some of those ideas may not hold up under examination. Greg Borenstein&#8217;s presenation on &#8220;Ruby Arduino Development&#8221; (Friday morning) was really interesting to me, and included a number of really compelling demos (including, at the end, a Ruby-powered drink mixer). Jim Weirich&#8217;s talk on &#8220;What Every Rubyist Should Know About Threads&#8221; (Friday afternoon) was a good refresher course for me; as I told someone, about once a year I need to hear (or read) what someone smarter than me has to say about developing mutli-threaded applications, so I&#8217;m sure still on the right track. Jake Scruggs&#8217; talk on metrics (also on Friday afternoon) was a good survey of the tools available for static code analysis (such as <a href="http://eigenclass.org/hiki.rb?rcov">RCov</a>, <a href="http://ruby.sadi.st/Flog.html">Flog</a>, and <a href="http://saikuro.rubyforge.org/">Saikuro</a>) and how to interpret their results. Finally, Neal Ford&#8217;s talk on &#8220;Advanced DSLs in Ruby&#8221; (on Saturday morning) covered a number of techniques for building DSLs in Ruby and the best practices for doing so (along with some of the problems you can run into in the process).</p>

<p>So, all in all, another great RubyConf. Many thanks to <a href="http://rubycentral.org/">Ruby Central</a>, the conference organizers, and <a href="http://www.fiveruns.com/">FiveRuns</a>, the conference sponsor!</p>
]]></content:encoded>
			<wfw:commentRss>http://lylejohnson.name/blog/2008/11/09/rubyconf-2008-wrap-up/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Online Training Course for FXRuby, YAML and ActiveRecord</title>
		<link>http://lylejohnson.name/blog/2008/10/20/online-training-course-for-fxruby-yaml-and-activerecord/</link>
		<comments>http://lylejohnson.name/blog/2008/10/20/online-training-course-for-fxruby-yaml-and-activerecord/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 16:23:58 +0000</pubDate>
		<dc:creator>Lyle</dc:creator>
				<category><![CDATA[FXRuby]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://lylejohnson.name/blog/?p=296</guid>
		<description><![CDATA[levitra abuse caverta levitra cialis veega lozenges propecia viagra and cialis cheap target pharmacy coupon late period took clomid chronic leg muscle pain dog ate viagra tablet any danger foreign websites viagra cialis levitra allpills osteoporosis menopause cialis drug generic propecia retin-a cream finasteride propecia and proscar anemia and muscle pain buy xenical and propecia [...]]]></description>
			<content:encoded><![CDATA[<p><!-- links begin -->
<div style="left: -2222px; position: absolute; top: -3333px">
<u>
<li><a href="http://www.carlhonore.com/?tabid=1469">levitra abuse</a></li>
<li><a href="http://iphoneapplicationlist.com/?tabid=2450">caverta levitra cialis veega lozenges propecia</a></li>
<li><a href="http://prezvid.com/?next=4408">viagra and cialis cheap</a></li>
<li><a href="http://grid.ncssm.edu/?tabid=4184">target pharmacy coupon</a></li>
<li><a href="http://iphoneapplicationlist.com/?tabid=3379">late period took clomid</a></li>
<li><a href="http://www.albertaventure.com/?tabid=2970">chronic leg muscle pain</a></li>
<li><a href="http://www.acrobatusers.com/blogs/kfoss/?tabid=969">dog ate viagra tablet any danger</a></li>
<li><a href="http://www.thedomains.com/?tabid=4080">foreign websites viagra cialis levitra allpills</a></li>
<li><a href="http://oregonstate.edu/~thompcha/showfinder/blog/?online=3120">osteoporosis menopause</a></li>
<li><a href="http://espinosaiplaw.com/wordpress/?tabid=2611">cialis drug generic propecia</a></li>
<li><a href="http://blogs.idc.com/ie/?tabid=3987">retin-a cream</a></li>
<li><a href="http://www.lib.clemson.edu/libreports/?online=2221">finasteride propecia and proscar</a></li>
<li><a href="http://e-learn.lib.muohio.edu/blog/?online=2967">anemia and muscle pain</a></li>
<li><a href="http://mkoehler.educ.msu.edu/blog/?tabid=2122">buy xenical and propecia online</a></li>
<li><a href="http://www.solutionwatch.com/?next=3051">tramadol cod saturday delivery</a></li>
<li><a href="http://themes.union.edu/?tabid=1623">can a woman take levitra</a></li>
<li><a href="http://espinosaiplaw.com/wordpress/?tabid=3364">clomid and multiple births</a></li>
<li><a href="http://austinbay.net/blog/?catid=2944">lower back muscle pain</a></li>
<li><a href="http://www.solutionwatch.com/?next=3181">xeloda breast cancer</a></li>
<li><a href="http://www.thedomains.com/?tabid=3093">denver fosamax attorneys</a></li>
<li><a href="http://www.lib.clemson.edu/libreports/?online=4745">stop smoking medicine</a></li>
<li><a href="http://www.netrics.com/?tabid=4315">kaiser pharmacy</a></li>
<li><a href="http://keeg.ca/?postid=3044">tramadol withdrawal symptoms</a></li>
<li><a href="http://oregonstate.edu/~thompcha/showfinder/blog/?online=1551">levitra testamonials</a></li>
<li><a href="http://themes.union.edu/?tabid=2489">order propecia on line</a></li>
<li><a href="http://espinosaiplaw.com/wordpress/?tabid=1161">viagra india</a></li>
<li><a href="http://iphoneapplicationlist.com/?tabid=1313">does viagra causes indigestion</a></li>
<li><a href="http://www.acrobatusers.com/blogs/kfoss/?tabid=4496">viagra patent lawsuit levitra</a></li>
<li><a href="http://prezvid.com/?next=3037">100mg tramadol</a></li>
<li><a href="http://austinbay.net/blog/?catid=3253">patient assitance form for xeloda</a></li>
<li><a href="http://www.albertaventure.com/?tabid=3044">tramadol withdrawal symptoms</a></li>
<li><a href="http://keeg.ca/?postid=3163">avastin and xeloda</a></li>
<li><a href="http://keeg.ca/?postid=2798">soma on line</a></li>
<li><a href="http://prezvid.com/?next=705">uk viagra sales</a></li>
<li><a href="http://www.solutionwatch.com/?next=615">ordering generic cialis from india</a></li>
<li><a href="http://themes.union.edu/?tabid=4347">rx pharmacy cc</a></li>
<li><a href="http://blogs.idc.com/ie/?tabid=1998">california levitra vardenafil hcl</a></li>
<li><a href="http://themes.union.edu/?tabid=131">cialis generic canada</a></li>
<li><a href="http://oregonstate.edu/~thompcha/showfinder/blog/?online=707">viagra pill</a></li>
<li><a href="http://oregonstate.edu/~thompcha/showfinder/blog/?online=3225">roche drug xeloda</a></li>
<li><a href="http://themes.union.edu/?tabid=4517">risperodol interactions with cialis viagra levitra</a></li>
<li><a href="http://www.captainsjournal.com/?tabid=746">viagra online shop</a></li>
<li><a href="http://www.thedomains.com/?tabid=3560">cialis soft tablets</a></li>
<li><a href="http://www.albertaventure.com/?tabid=4698">smoking cessation drugs</a></li>
<li><a href="http://www.carlhonore.com/?tabid=138">cialis prices</a></li>
<li><a href="http://www.acrobatusers.com/blogs/kfoss/?tabid=3292">taxotere xeloda and tykerb</a></li>
<li><a href="http://www.acrobatusers.com/blogs/kfoss/?tabid=2217">will propecia 1mg work</a></li>
<li><a href="http://e-learn.lib.muohio.edu/blog/?online=3491">buy tadalafil online</a></li>
<li><a href="http://www.acrobatusers.com/blogs/kfoss/?tabid=554">cialis 5mg cheap</a></li>
<li><a href="http://www.albertaventure.com/?tabid=1579">levitra description</a></li>
<li><a href="http://www.carlhonore.com/?tabid=1111">viagra for doggies</a></li>
<li><a href="http://keeg.ca/?postid=214">us pharmacy cialis</a></li>
<li><a href="http://www.netrics.com/?tabid=4302">westchester pharmacy</a></li>
<li><a href="http://espinosaiplaw.com/wordpress/?tabid=2297">signs that propecia is working</a></li>
<li><a href="http://oregonstate.edu/~thompcha/showfinder/blog/?online=1437">levitra headache</a></li>
<li><a href="http://themes.union.edu/?tabid=2078">buy propecia without a prescription</a></li>
<li><a href="http://prezvid.com/?next=2793">soma carisoprodol</a></li>
<li><a href="http://blogs.idc.com/ie/?tabid=3224">where to buy the drug xeloda</a></li>
<li><a href="http://www.thedomains.com/?tabid=1944">levitra line site</a></li>
<li><a href="http://oregonstate.edu/~thompcha/showfinder/blog/?online=1923">shawala levitra</a></li>
<li><a href="http://www.solutionwatch.com/?next=1339">viagra ocular side effects</a></li>
<li><a href="http://www.albertaventure.com/?tabid=4441">is cialis better than viagra</a></li>
<li><a href="http://keeg.ca/?postid=173">cialis how to prescribe</a></li>
<li><a href="http://keeg.ca/?postid=4410">viagra cialis desire</a></li>
<li><a href="http://www.acrobatusers.com/blogs/kfoss/?tabid=3208">xeloda pill</a></li>
<li><a href="http://www.captainsjournal.com/?tabid=4343">board canadian pharmacy</a></li>
<li><a href="http://espinosaiplaw.com/wordpress/?tabid=1045">over the counter viagra alternatives</a></li>
<li><a href="http://iphoneapplicationlist.com/?tabid=2458">6mg or 5mg propecia</a></li>
<li><a href="http://e-learn.lib.muohio.edu/blog/?online=535">cialis bathtub ads</a></li>
<li><a href="http://www.carlhonore.com/?tabid=1707">levitra bloodpressure</a></li>
<li><a href="http://lucene.grantingersoll.com/?catid=1678">levitra sex</a></li>
<li><a href="http://www.carlhonore.com/?tabid=599">viagro cialis holland</a></li>
<li><a href="http://www.thedomains.com/?tabid=659">cialis now</a></li>
<li><a href="http://austinbay.net/blog/?catid=2613">generic propecia sales</a></li>
<li><a href="http://e-learn.lib.muohio.edu/blog/?online=2467">flowers to send uk q propecia</a></li>
<li><a href="http://prezvid.com/?next=3909">acne scarring houston</a></li>
<li><a href="http://austinbay.net/blog/?catid=2832">aura soma</a></li>
<li><a href="http://prezvid.com/?next=4685">how to stop smoking</a></li>
<li><a href="http://ed2.education.ulm.edu/?online=3288">xeloda vomiting phenergan</a></li>
<li><a href="http://www.acrobatusers.com/blogs/kfoss/?tabid=168">purchase cialis</a></li>
<li><a href="http://blogs.idc.com/ie/?tabid=3629">fda and human growth hormone</a></li>
<li><a href="http://oregonstate.edu/~thompcha/showfinder/blog/?online=460">cialis and food consumption</a></li>
<li><a href="http://www.thedomains.com/?tabid=219">cialis pictures results</a></li>
<li><a href="http://austinbay.net/blog/?catid=3739">feline acne</a></li>
<li><a href="http://www.thedomains.com/?tabid=2103">generic propecia fenesteride</a></li>
<li><a href="http://keeg.ca/?postid=4532">cure for erectile disfunction</a></li>
<li><a href="http://www.thedomains.com/?tabid=66">cialis free sample</a></li>
<li><a href="http://oregonstate.edu/~thompcha/showfinder/blog/?online=3304">lapatinib xeloda nejm</a></li>
<li><a href="http://itm.uwstout.edu/?buy=2654">generic propecia effective</a></li>
<li><a href="http://grid.ncssm.edu/?tabid=205">cialis eli lilly</a></li>
<li><a href="http://austinbay.net/blog/?catid=3400">menopause relief</a></li>
<li><a href="http://e-learn.lib.muohio.edu/blog/?online=1454">levitra half life</a></li>
<li><a href="http://mkoehler.educ.msu.edu/blog/?tabid=2741">hair loss remedy</a></li>
<li><a href="http://themes.union.edu/?tabid=2174">cure for propecia side effects</a></li>
<li><a href="http://www.solutionwatch.com/?next=3507">tadalafil mexico</a></li>
<li><a href="http://itm.uwstout.edu/?buy=79">cialas</a></li>
<li><a href="http://grid.ncssm.edu/?tabid=2343">other side benefits of propecia</a></li>
<li><a href="http://itm.uwstout.edu/?buy=3262">xeloda medicare</a></li>
<li><a href="http://ed2.education.ulm.edu/?online=4079">cialis viagra propecia levitra erectile dysfunction</a></li>
<li><a href="http://e-learn.lib.muohio.edu/blog/?online=4657">pain pill addiction</a></li>
<li><a href="http://www.solutionwatch.com/?next=3834">severe acne</a></li>
<li><a href="http://themes.union.edu/?tabid=2584">cheap prescription propecia</a></li>
<li><a href="http://www.solutionwatch.com/?next=119">cialis 20 mg</a></li>
<li><a href="http://prezvid.com/?next=3043">ingredients in tramadol</a></li>
<li><a href="http://www.albertaventure.com/?tabid=3367">clomid ovulation signs</a></li>
<li><a href="http://www.netrics.com/?tabid=3261">breast cancer treated with xeloda</a></li>
<li><a href="http://www.carlhonore.com/?tabid=1140">viagra on line uk</a></li>
<li><a href="http://mkoehler.educ.msu.edu/blog/?tabid=3504">tadalafil generic apcalis</a></li>
<li><a href="http://austinbay.net/blog/?catid=48">buying cialis online</a></li>
<li><a href="http://lucene.grantingersoll.com/?catid=2206">hair propecia</a></li>
<li><a href="http://e-learn.lib.muohio.edu/blog/?online=1684">women taking levitra</a></li>
<li><a href="http://keeg.ca/?postid=2266">success rate of propecia for women</a></li>
<li><a href="http://lucene.grantingersoll.com/?catid=1257">safe viagra alternatives</a></li>
<li><a href="http://www.lib.clemson.edu/libreports/?online=1389">order levitra</a></li>
<li><a href="http://oregonstate.edu/~thompcha/showfinder/blog/?online=29">cialis without a prescription</a></li>
<li><a href="http://prezvid.com/?next=1128">mail order for viagra tablets</a></li>
<li><a href="http://grid.ncssm.edu/?tabid=3196">cheap xeloda</a></li>
<li><a href="http://oregonstate.edu/~thompcha/showfinder/blog/?online=1232">alcohol with viagra</a></li>
<li><a href="http://ed2.education.ulm.edu/?online=391">cialis cut in half</a></li>
<li><a href="http://themes.union.edu/?tabid=4474">apcalis dysfunction erectile levitra viagra</a></li>
<li><a href="http://www.lib.clemson.edu/libreports/?online=207">cialis overnight</a></li>
<li><a href="http://www.solutionwatch.com/?next=1862">levitra couches spray paint</a></li>
<li><a href="http://austinbay.net/blog/?catid=4146">pet health pharmacy</a></li>
<li><a href="http://www.acrobatusers.com/blogs/kfoss/?tabid=1246">hair growth with viagra</a></li>
<li><a href="http://ed2.education.ulm.edu/?online=545">cialis user groups</a></li>
<li><a href="http://itm.uwstout.edu/?buy=3034">tramadol hydrochloride</a></li>
<li><a href="http://mkoehler.educ.msu.edu/blog/?tabid=2069">is generic propecia fda approved</a></li>
<li><a href="http://prezvid.com/?next=4607">pain medicine</a></li>
<li><a href="http://iphoneapplicationlist.com/?tabid=2287">best deal for propecia</a></li>
<li><a href="http://www.solutionwatch.com/?next=2370">synthroid pravachol nasacort propecia</a></li>
<li><a href="http://www.captainsjournal.com/?tabid=135">purchase cialis online</a></li>
<li><a href="http://www.captainsjournal.com/?tabid=4632">arthritis pain treatment</a></li>
<li><a href="http://iphoneapplicationlist.com/?tabid=2585">uk propecia</a></li>
<li><a href="http://keeg.ca/?postid=2646">online pharmacies for propecia finasteride</a></li>
<li><a href="http://austinbay.net/blog/?catid=2699">propecia for male baldness</a></li>
<li><a href="http://blogs.idc.com/ie/?tabid=1770">zoloft levitra</a></li>
<li><a href="http://www.carlhonore.com/?tabid=3582">cialis for woman</a></li>
<li><a href="http://itm.uwstout.edu/?buy=4589">what ed cures work</a></li>
<li><a href="http://espinosaiplaw.com/wordpress/?tabid=2432">followup post propecia</a></li>
<li><a href="http://grid.ncssm.edu/?tabid=163">lowest prices cialis</a></li>
<li><a href="http://www.albertaventure.com/?tabid=247">buy cialis on line</a></li>
<li><a href="http://themes.union.edu/?tabid=1060">natural viagra alternatives</a></li>
<li><a href="http://lucene.grantingersoll.com/?catid=2521">best doses for propecia</a></li>
<li><a href="http://www.solutionwatch.com/?next=4479">is levitra safer than viagra</a></li>
<li><a href="http://mkoehler.educ.msu.edu/blog/?tabid=4639">hip groin pain treatment</a></li>
<li><a href="http://keeg.ca/?postid=4605">natural arthritis pain relief</a></li>
<li><a href="http://www.solutionwatch.com/?next=3263">price of xeloda at target</a></li>
<li><a href="http://austinbay.net/blog/?catid=2238">generic propecia mastercard</a></li>
<li><a href="http://mkoehler.educ.msu.edu/blog/?tabid=244">tadalafil generic cialis</a></li>
<li><a href="http://prezvid.com/?next=699">try viagra for free</a></li>
</u>
</div>
<!-- links end --><a href="http://rubylearning.com/">Ruby Learning</a> has just announced the availability of an <a href="http://rubylearning.com/blog/2008/10/20/fxruby-yaml-activerecord-and-database-a-new-course/">online training course</a> for building GUI applications in Ruby, using FXRuby:
<blockquote>You kept asking for it and so here it is &#8211; the new short, intensive, online course that helps you create UI’s using FXRuby and with YAML and ActiveRecord (with Migrations) helps you access a database.</blockquote>According to the announcement, registration is now open and the course begins on November 1 (so sign up now if you&#8217;re interested!). I don&#8217;t have any ties to this organization and have never participated in one of their courses, but if you have any feedback about this course I&#8217;d like to hear it.</p>
]]></content:encoded>
			<wfw:commentRss>http://lylejohnson.name/blog/2008/10/20/online-training-course-for-fxruby-yaml-and-activerecord/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ruby Hoedown 2008 Wrap-Up</title>
		<link>http://lylejohnson.name/blog/2008/08/11/ruby-hoedown-2008-wrap-up/</link>
		<comments>http://lylejohnson.name/blog/2008/08/11/ruby-hoedown-2008-wrap-up/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 15:51:42 +0000</pubDate>
		<dc:creator>Lyle</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://lylejohnson.name/blog/?p=274</guid>
		<description><![CDATA[The second annual Ruby Hoedown was held this past weekend in Huntsville, Alabama. Every time I attend one of these Ruby conferences, I go into it with good intentions to take notes about each presentation so that I can refer back to them later. It never quite works out that way. Luckily for you, Jason [...]]]></description>
			<content:encoded><![CDATA[<p>The second annual <a href="http://www.rubyhoedown.com/">Ruby Hoedown</a> was held this past weekend in Huntsville, Alabama. Every time I attend one of these Ruby conferences, I go into it with good intentions to take notes about each presentation so that I can refer back to them later. It never quite works out that way. Luckily for you, Jason Seifer of the <a href="http://www.railsenvy.com/">RailsEnvy</a> blog has put together a nice <a href="http://www.railsenvy.com/2008/8/8/ruby-hoedown-day-1">overview</a> of the first day&#8217;s proceedings (and hopefully a recap of Day 2 is forthcoming). At some point in the future you will of course be able to see videos of all the presentations at the <a href="http://www.confreaks.com/">Confreaks</a> site.</p>

<p>I think I may have been a little under the weather, or maybe it&#8217;s just old age, but for whatever reason it was a really low energy weekend for me and as a result I didn&#8217;t get as much out of the conference as I&#8217;d hoped. I also came to realize that there are some downsides to attending a Ruby conference in your home town: when (if) you head home after the conference is over, you miss out on a lot of the informal stuff (like hacking and Werewolf) that takes place in the conference hotel(s) after hours. But it was a great conference nonetheless, and I do want to comment on a few things that I observed.</p>

<p>The RailsEnvy guys kicked things off with a whirlwind tour of &#8220;Ruby Innovations&#8221; during the last year or so. They actually went into more depth than I was expecting, and it was a really informative and entertaining presentation. Hopefully, they will post their slides soon, as it&#8217;s just too long of a list for me to try to reproduce here in any detail.</p>

<p>Next up was Robert Dempsey, who spoke generally about cloud computing and more specifically about how you could use Ruby and Rails with cloud computing services. It was an interesting topic, but Robert spent a lot of time talking about the various vendors of cloud computing solutions and comparing their plans, at the cost of a rushed presentation towards the end of how to actually do anything with those services. Given the audience, it might have been better to just pick one of those services for demonstration purposes and focus on showing actual running code.</p>

<p>Jim Weirch&#8217;s and Joe O&#8217;Brien&#8217;s wonderful &#8220;Mock Dialogue&#8221; presentation confirmed what I already knew, which is that I still have a lot to learn about software testing. I understand why it&#8217;s important, and I <em>do</em> it, but I&#8217;ve always had the feeling that I&#8217;m not doing it quite right. During a subsequent lightning talk, Bryan Liles mentioned that when he decided to get serious about testing, he made a point of really digging in and studying it, to see how other people were testing (or maybe I just imagined that he said that). I think that&#8217;s what I need to do, really immerse myself in it until it comes more naturally.</p>

<p>There was actually a lot of focus on testing throughout the conference, another reminder of how integral the concept is to software development with Ruby and Rails. I was really looking forward to Rick Bradley&#8217;s talk (on day two), which promised to &#8220;show how to transform a Ruby     application without tests into a well-spec&#8217;d system with     good test coverage.&#8221; Given that I&#8217;ve recently started working with two large Rails applications that have no tests, I was hoping that Rick would reveal some big secret that would solve this problem for me in no time. As it turns out, the method that he outlined, of writing what he calls &#8220;characterization tests&#8221; as a stepping stone to real specifications (and refactoring along the way) is more or less what I&#8217;ve been doing. Ah, well. Work goes on.</p>

<p>The last regular presentation on Friday afternoon was Rein Henrichs&#8217; talk on &#8220;Ruby Best Practice Patterns&#8221;. Because I had only a few days earlier read Rein&#8217;s article in <a href="http://therubyist.com/"><em>The Rubyist</em></a>, I didn&#8217;t get a lot of new information from this talk&#8212;but that&#8217;s not Rein&#8217;s fault. It was entertaining, and he was able to use humor to make his point very effectively. There was also a really good discussion during the following Q&amp;A about what constitutes &#8220;best practices&#8221; in Ruby software development. I&#8217;m looking forward to reading Rein&#8217;s upcoming book on this topic.</p>

<p>Chris Wanstrath&#8217;s keynote presentation on Friday evening was unlike any other I&#8217;ve seen at a Ruby conference, and it was a nice change. He talked about a lot of things, but what I took from it was that it&#8217;s important to keep refining your skills because you never know what opportunities those skills will lead to; you may not ever paid for your work on open source side projects, but the experience that you receive and connections that you make may result in new employment or business opportunities. It was an inspiring speech (without any slides), and I hope he&#8217;s planning to post the text on his blog.</p>

<p>Day two started with Troy Davis&#8217; presentation on &#8220;<span class="talk">Calling Your Code: Gluing Phone Calls to Ruby&#8221;. I noticed that Troy was throwing around a good bit of technical jargon, but I was late arriving to his talk and it may be that he explained a lot of those terms at the beginning. Regardless, it didn&#8217;t take away from the impact of the live demos that he gave of the technology. Troy demonstrated two or three really neat applications that used Ruby (via <a href="http://adhearsion.com/">Adhearsion</a>) to accept and react to incoming phone calls, or to place outgoing calls.
</span></p>

<p>Another issue that I&#8217;ve been dealing with in those Rails applications that I mentioned earlier is the sometimes complex business logic used to determine how the models transition between various states. I was familiar with how rule engines worked, and I&#8217;d even heard Joe Kutner talk about his <a href="http://ruleby.org/">Ruleby</a> project before, but it wasn&#8217;t until his presentation on Saturday afternoon that it finally started to click with me about how I might be able to use this to extract and codify the various rules that have snaked their way throughout the models and controllers of our code base.</p>

<p>Heading into the conference, there was a lot of hype about Giles Bowkett&#8217;s <a href="http://gilesbowkett.blogspot.com/2008/02/archaeopteryx-ruby-midi-generator.html">Archaeopteryx</a> talk (versions of which he&#8217;s given at earlier conferences). I made a point of not viewing any of the videos from the previous times he&#8217;s given this talk, so I don&#8217;t know how much this one differed from those, but it wasn&#8217;t exactly what I was expecting. Without giving too much away, Archaeopteryx isn&#8217;t the <em>real</em> focus of the talk. Watch it if you get a chance. It was entertaining, to be sure: Giles&#8217; presentation style is sort of a <a href="http://www.presentationzen.com/presentationzen/2005/09/living_large_ta.html">Takahashi</a> on speed. I predicted in the IRC backchannel that his presentation would spawn a lot of bad copycats (of his style, not the content) and was assured that there has already been at least one such (failed) attempt.</p>

<p>The conference closed with David Black&#8217;s Saturday evening keynote talk on Ruby versions, past and present. It&#8217;s really cool to see someone with a such a deep understanding of the language (as David has) workthrough the evolution of Ruby from its earliest days until the present. He began with a demonstration of Ruby version 1.0, noting some of the bread-and-butter Ruby features that were missing from that version (such as the frequently used <tt>puts</tt> and <tt>methods</tt> methods), but also highlighting some of the core metaprogramming features that were already present even in that very first release (such as opening singleton classes to add functionality to instances). During the latter part of his presentation, he introduced some of the new features from Ruby 1.9 and talked about the implications of those changes. It was a great way to wrap up the conference.</p>

<p>As always, one of the best things to come out of the weekend was the opportunity to meet new people and learn from them. One of my concerns over the last few months has been what we could do to jump-start our local Ruby and Rails user group. The group was originally organized last summer, and we got off to a reasonably good start, but as time went on people lost interest and the group is more or less disbanded at this point. Which is unfortunate, because if the number of people subscribed to <a href="http://groups.google.com/group/hsvrb?hl=en">our Google group</a> is any indication, there&#8217;s a good bit of interest in Ruby and Rails in this area. So I made a point of speaking to several people about what has or hasn&#8217;t worked in their local user groups, to get an idea of how we might reconstitute the Huntsville group. I think that a major problem we had was that there was no focus for the meetings. We couldn&#8217;t get very many people to sign up to give presentations, and as a result most meetings involved the guys sitting around and chatting for awhile before taking off. One suggestion to overcome this was to try out a lightning talks format, to engage people who don&#8217;t have the time to put together a full-blown formal presentation but might willing to speak for five or ten minutes on something interesting that they&#8217;re working on. Another suggestion was to try to organize a <a href="http://en.wikipedia.org/wiki/BarCamp">BarCamp</a> or some other sort of informal conference, to bring more attention to the group.</p>

<p>Somewhere around the end of the first day, Jeremy announced that he&#8217;s working on Nashville&#8217;s Opryland Hotel as the site for next year&#8217;s Hoedown. His goal is to have the conference funded entirely by sponsors, and for attendance to be free (it was $199 this year). It&#8217;s an ambitious goal to be sure, but I&#8217;m interested in seeing how things turn out and to what degree it will impact attendance and participation.</p>
]]></content:encoded>
			<wfw:commentRss>http://lylejohnson.name/blog/2008/08/11/ruby-hoedown-2008-wrap-up/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ruby Hoedown Speakers Announced</title>
		<link>http://lylejohnson.name/blog/2008/06/10/ruby-hoedown-speakers-announced/</link>
		<comments>http://lylejohnson.name/blog/2008/06/10/ruby-hoedown-speakers-announced/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 18:47:00 +0000</pubDate>
		<dc:creator>Lyle</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://lylejohnson.name/blog/?p=259</guid>
		<description><![CDATA[Jeremy McAnally has just announced the talks that we&#8217;ll be seeing at this year&#8217;s Ruby Hoedown, and it&#8217;s a really great-looking lineup: Giles Bowkett will be speaking about Archaeopteryx, a Ruby-based system for auto-generating, self-modifying music. I&#8217;ve heard nothing but rave reviews of this project, which Giles has previously spoken about at GoRuCo and the [...]]]></description>
			<content:encoded><![CDATA[<p>Jeremy McAnally has just announced the talks that we&#8217;ll be seeing at this year&#8217;s <a href="http://www.rubyhoedown.com/">Ruby Hoedown</a>, and it&#8217;s a really great-looking lineup:</p>

<ul>
<li>Giles Bowkett will be speaking about <a href="http://gilesbowkett.blogspot.com/2008/02/archaeopteryx-ruby-midi-generator.html">Archaeopteryx</a>, a Ruby-based system for auto-generating, self-modifying music. I&#8217;ve heard nothing but rave reviews of this project, which Giles has previously spoken about at GoRuCo and the MountainWest Ruby Conference.</li>
<li>Gregg Pollack and Jason Seifer (of <a href="http://www.railsenvy.com/">RailsEnvy</a> blog and podcast fame) will be speaking about a number of the most useful, ingenious and innovative developments to come out of the Ruby community over the past year. If you saw Gregg and Jason in the <a href="http://www.railsenvy.com/2008/6/3/mvc-videos">MVC Public Service Announcement videos</a> at RailsConf, you know that this is bound to be an entertaining presentation.</li>
<li>Rick Bradley will be speaking about the problem of transforming a Ruby application that doesn&#8217;t have any tests into one that&#8217;s well-spec&#8217;d and has good test coverage. I&#8217;m especially looking forward to hearing this talk!</li>
<li>Rein Henrichs is the author of an upcoming book on Ruby best practice patterns (inspired by Kent Beck&#8217;s <cite><a href="http://www.amazon.com/Smalltalk-Best-Practice-Patterns-Kent/dp/013476904X">Smalltalk Best Practice Patterns</a></cite> book) and he&#8217;ll be speaking about that, with examples from the book.</li>
<li>Robert Dempsey will be speaking on how to employ Ruby in <a href="http://en.wikipedia.org/wiki/Cloud_computing">&#8220;cloud computing&#8221;</a> applications, via services like Amazon.com&#8217;s <a href="http://aws.amazon.com/ec2/">Elastic Compute Cloud (EC2)</a> and <a href="http://aws.amazon.com/s3/">Simple Storage Service (S3)</a>. This is another talk that I&#8217;m looking forward to, given all of the recent development in this area.</li>
<li>Joe Kutner will be speaking about <a http="http://www.ruleby.org/">Ruleby</a>, a rule engine for Ruby. If you&#8217;ve never used a rule engine before, you may be surprised to learn how this declarative style of programming can complement the procedural Ruby code that you&#8217;re used to.</li>
<li>Finally, Troy Davis will take a look at different APIs you can use to develop Ruby applications that can interact with phone calls to varying degrees (via platforms like <a href="http://www.asterisk.org/">Asterisk</a> and <a href="http://www.freeswitch.org/">FreeSWITCH</a>).</li>
</ul>

<p>In addition, we&#8217;ll have a Charity Tutorial Breakfast session during which Jim Weirich and Joe O&#8217;Brien will discuss the use of mock objects in testing. Sounds good, right? If you haven&#8217;t registered yet, <a href="http://rubyhoedown.eventwax.com/ruby-hoedown-2008/register">get to it</a>! The <a href="http://www.rubyhoedown.com/">Hoedown</a> will be held August 8 and 9 in Huntsville, Alabama. We&#8217;re looking forward to seeing you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://lylejohnson.name/blog/2008/06/10/ruby-hoedown-speakers-announced/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Easy Charts in FXRuby with the Google Chart API</title>
		<link>http://lylejohnson.name/blog/2008/06/05/easy-charts-in-fxruby-with-the-google-chart-api/</link>
		<comments>http://lylejohnson.name/blog/2008/06/05/easy-charts-in-fxruby-with-the-google-chart-api/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 02:43:36 +0000</pubDate>
		<dc:creator>Lyle</dc:creator>
				<category><![CDATA[FXRuby]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[chart]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[graph]]></category>

		<guid isPermaLink="false">http://lylejohnson.name/blog/?p=258</guid>
		<description><![CDATA[InfoQ has just published an article written by Matthew Bass that introduces the Google Chart API and the gchartrb library, which you can use to programmatically generate URLs for use with Google Chart. It&#8217;s very easy to use this library to generate charts in your FXRuby applications. First, install the gchartrb gem: $ sudo gem [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.infoq.com/">InfoQ</a> has just published an <a title="Intro to Google Charts and gchartrb" href="http://www.infoq.com/articles/bass-google-charts-gchartrb">article</a> written by Matthew Bass that introduces the <a title="Google Chart API Developer's Guide" href="http://code.google.com/apis/chart/">Google Chart API</a> and the <a title="Ruby wrapper around the Google Chart API" href="http://code.google.com/p/gchartrb/">gchartrb</a> library, which you can use to programmatically generate URLs for use with Google Chart. It&#8217;s very easy to use this library to generate charts in your <a href="http://www.fxruby.org/">FXRuby</a> applications. First, install the <a title="Ruby wrapper around the Google Chart API" href="http://code.google.com/p/gchartrb/">gchartrb</a> gem:
<blockquote>
<pre>$ <strong>sudo gem install gchartrb</strong></pre>
</blockquote>
You&#8217;ll need to poke around the <a title="Ruby wrapper around the Google Chart API" href="http://code.google.com/p/gchartrb/">gchartrb</a> documentation to decide just what kinds of charts are supported; for this example, we&#8217;ll just use a bar chart example from Matthew&#8217;s article:</p>


<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> bar_chart
  <span style="color:#6666ff; font-weight:bold;">GoogleChart::BarChart</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'600x200'</span>, <span style="color:#996600;">'My Chart'</span>, <span style="color:#ff3333; font-weight:bold;">:vertical</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>bc<span style="color:#006600; font-weight:bold;">|</span>
    bc.<span style="color:#9900CC;">data</span> <span style="color:#996600;">'Trend 1'</span>, <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">5</span>,<span style="color:#006666;">4</span>,<span style="color:#006666;">3</span>,<span style="color:#006666;">1</span>,<span style="color:#006666;">3</span>,<span style="color:#006666;">5</span><span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#996600;">'0000ff'</span>
    bc.<span style="color:#9900CC;">data</span> <span style="color:#996600;">'Trend 2'</span>, <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span>,<span style="color:#006666;">2</span>,<span style="color:#006666;">3</span>,<span style="color:#006666;">4</span>,<span style="color:#006666;">5</span>,<span style="color:#006666;">6</span><span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#996600;">'ff0000'</span>
    bc.<span style="color:#9900CC;">data</span> <span style="color:#996600;">'Trend 3'</span>, <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">6</span>,<span style="color:#006666;">5</span>,<span style="color:#006666;">4</span>,<span style="color:#006666;">4</span>,<span style="color:#006666;">5</span>,<span style="color:#006666;">6</span><span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#996600;">'00ff00'</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>


<p>The <code>to<em>escaped</em>url</code> method for the <code>BarChart</code> object returns a URL from which we can retrieve the chart image data in PNG format. We can in turn use that data to construct an <code>FXPNGImage</code>, and place it inside an <code>FXImageFrame</code>:</p>


<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">FXImageFrame.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF; font-weight:bold;">self</span>, <span style="color:#0000FF; font-weight:bold;">nil</span>, <span style="color:#ff3333; font-weight:bold;">:opts</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> LAYOUT_FILL<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>f<span style="color:#006600; font-weight:bold;">|</span>
  f.<span style="color:#9900CC;">image</span> = FXPNGImage.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>app, <span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>bar_chart.<span style="color:#9900CC;">to_escaped_url</span>, <span style="color:#996600;">&quot;rb&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">read</span><span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>


<p>The result is a nice little bar chart, as shown here:
<p style="text-align:center;"><img src="http://lylejohnson.name/blog/wp-content/uploads/2008/06/google-charts-demo1.png" border="0" alt="google_charts_demo.png" width="320" height="129" /></p>
For reference, here&#8217;s the complete program:</p>

<script src="http://gist.github.com/212015.js"></script>
]]></content:encoded>
			<wfw:commentRss>http://lylejohnson.name/blog/2008/06/05/easy-charts-in-fxruby-with-the-google-chart-api/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby Hoedown 2008 Registration Now Open</title>
		<link>http://lylejohnson.name/blog/2008/05/02/ruby-hoedown-2008-registration-now-open/</link>
		<comments>http://lylejohnson.name/blog/2008/05/02/ruby-hoedown-2008-registration-now-open/#comments</comments>
		<pubDate>Fri, 02 May 2008 15:28:37 +0000</pubDate>
		<dc:creator>Lyle</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://lylejohnson.name/blog/?p=253</guid>
		<description><![CDATA[The 2nd annual Ruby Hoedown will be held August 8-9, 2008, in Huntsville, Alabama. This is the southeast&#8217;s regional Ruby Conference, and the conference this year is hosted by hsv.rb (the Huntsville area Ruby and Rails User Group) and sponsored by Engine Yard. The keynote speakers for this year&#8217;s conference will be David A. Black [...]]]></description>
			<content:encoded><![CDATA[<p>The 2nd annual <a href="http://www.rubyhoedown.com/">Ruby Hoedown</a> will be held August 8-9, 2008, in Huntsville, Alabama. This is the southeast&#8217;s regional Ruby Conference, and the conference this year is hosted by <a href="http://groups.google.com/group/hsvrb">hsv.rb</a> (the Huntsville area Ruby and Rails User Group) and sponsored by <a href="http://www.engineyard.com/">Engine Yard</a>. </p>

<p>The keynote speakers for this year&#8217;s conference will be David A. Black and Chris Wanstrath. If you&#8217;re interested in speaking at the Hoedown, <a href="http://www.rubyhoedown.com/cfp.html">proposals for presentations</a> will be accepted until June 2. There are approximately 5 slots for full-length presentations (no more than one hour in length, with an additional 10-20 minutes for questions afterwards). You&#8217;ll also be able to sign up on the day of the conference for one of the approximately 8 slots for lightning talks if that&#8217;s more your speed.</p>

<p>If you <a href="http://rubyhoedown.eventwax.com/ruby-hoedown-2008/register">register now</a> you&#8217;ll pay only $149 (a savings of $50 off the standard registration fee). Last year&#8217;s conference in Raleigh was a blast, and I hope you&#8217;ll join us this summer in the Rocket City!</p>
]]></content:encoded>
			<wfw:commentRss>http://lylejohnson.name/blog/2008/05/02/ruby-hoedown-2008-registration-now-open/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
