<?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>Zen and the Art of Programming &#187; Merb</title>
	<atom:link href="http://programmingzen.com/category/merb/feed/" rel="self" type="application/rss+xml" />
	<link>http://programmingzen.com</link>
	<description>Meditations on programming, startups, and technology</description>
	<lastBuildDate>Wed, 09 May 2012 07:52:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Recommended Ruby and Rails books (August 2009)</title>
		<link>http://programmingzen.com/2009/08/24/recommended-ruby-and-rails-books/</link>
		<comments>http://programmingzen.com/2009/08/24/recommended-ruby-and-rails-books/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 12:46:10 +0000</pubDate>
		<dc:creator>Antonio Cangiano</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Merb]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://antoniocangiano.com/?p=1087</guid>
		<description><![CDATA[I finally got around to updating the Ruby and Rails book pages. The existing list was getting a bit obsolete and I didn&#8217;t like the idea of recommending old books to newcomers. I also had some interesting new entries. Without further ado: Recommended Ruby Books Recommended Rails Books A few people may disagree with the [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>I finally got around to updating the Ruby and Rails book pages. The existing list was getting a bit obsolete and I didn&#8217;t like the idea of recommending old books to newcomers. I also had some interesting new entries.</p>
<p>Without further ado:</p>
<ul>
<li><big><a href="http://antoniocangiano.com/ruby-and-rails-recommended-books/">Recommended Ruby Books</a></big></li>
<li><big><a href="http://antoniocangiano.com/rails-books/">Recommended Rails Books</a></big></li>
</ul>
<p>A few people may disagree with the choices, but I think most experienced Ruby and Rails programmers, who&#8217;ve read those books, will concur with my recommendations. I&#8217;m quite confident that these are, all things considered, some of the best books available on the subject.</p>
<p><strong>A word to the publishers</strong></p>
<p>As tempting as it is to collect Ruby and Rails books, these days I don&#8217;t feel I can economically justify the act of purchasing every Ruby or Rails book put out there. So if you are a publisher or an author, and you&#8217;d like for me to consider your book, you are certainly welcome to <a href="mailto:info@antoniocangiano.com?subject=Review copy">send me a review copy</a>. I will definitely read it, but only include it on these lists if it&#8217;s either outstanding or as good as the existing ones. If it&#8217;s a programming book that&#8217;s not related to Ruby/Rails, yet is really good, I would consider reviewing it on my blog.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://programmingzen.com/2009/08/24/recommended-ruby-and-rails-books/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Learn Merb</title>
		<link>http://programmingzen.com/2008/12/13/learn-merb/</link>
		<comments>http://programmingzen.com/2008/12/13/learn-merb/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 16:34:00 +0000</pubDate>
		<dc:creator>Antonio Cangiano</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Merb]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://antoniocangiano.com/?p=450</guid>
		<description><![CDATA[The most effective martial artists specialize in their discipline, but are not afraid to cross-train in others. Bruce Lee&#8212;arguably the most famous and influential martial artist of the past century&#8212;trained first in Tai Chi Chuan, then Gung Fu, and boxing, as well as learning western fencing. The insight taken from so many disciplines led him [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><img src="http://antoniocangiano.com/images/merb.png" alt="Merb's logo" align="right" />The most effective martial artists specialize in their discipline, but are not afraid to cross-train in others. Bruce Lee&mdash;arguably the most famous and influential martial artist of the past century&mdash;trained first in Tai Chi Chuan, then Gung Fu, and boxing, as well as learning western fencing. The insight taken from so many disciplines led him to create the Jeet Kune Do form of combat.</p>
<p>Programmers are not all that different. Cross-training in other languages and frameworks can only improve one&#8217;s overall mastery of the craft. When it comes to Ruby frameworks, the two most popular choices are Ruby on Rails and Merb. They&#8217;re often seen as being contenders, but this truly isn&#8217;t a zero-sum game; learning both is a very sensible move. They both enable you to write web applications in Ruby, and are somewhat similar, so learning one after you know the other shouldn&#8217;t be very challenging. In the many cases people learn Merb after they&#8217;ve had some experience with Rails, but either way, acquiring a solid grasp of both frameworks provides developers with extra flexibility. Often people who learn both, will end up mostly just using one or another, depending on their individual preferences. But it&#8217;s worth knowing them so as to be able to write both CRUD-style applications that fall within Rails&#8217; solution space, and more complex, edge cases where Rails&#8217; opinions will end up contending with yours.</p>
<p>Among the reasons to give Merb a chance, is its focus on performance, a smaller memory footprint and an extreme level of modularity, which enables you to pick and choose which components you&#8217;d like to use.</p>
<p>Merb is not as mature as Rails, of course, but it has reached version 1.0.x and with it developers can have greater confidence in a more stabilized API. Now is perhaps the best moment to get involved and learn more about this rising framework. Not surprisingly though, Merb finds itself in a similar spot to the one that Rails was in a couple of years ago (in terms of weakness of documentation when it comes to getting started). Thankfully, this point is being taken seriously and there&#8217;s been some major progress in terms of improving the documentation for Merb. Below are some useful links to get you started with Merb.</p>
<p>Merb has an official <a href="http://merbivore.com/documentation.html">API documentation</a>, a <a href="http://wiki.merbivore.com/">wiki</a>, <a href="http://groups.google.com/group/merb">a google group</a>, and a community site called <a href="http://merbunity.com/"> Merbunity</a> for news, projects and tutorials. The irc.freenode.net #merb channel is also a useful and welcoming spot. Furthermore, there is a Peepcode PDF draft called <a href="http://peepcode.com/products/meet-merb-pdf-draft Meet Merb">Meet Merb</a>. If you want something even more substantial, on the book front there are several titles coming out in the near future. These include <a href="http://manning.com/ivey/">Merb in Action</a>, <a href="http://my.safaribooksonline.com/9780321601636?portal=oreilly">The Merb Way</a>, <a href="http://www.amazon.com/gp/product/1430218231?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1430218231">Beginning Merb</a> and <a href="http://www.amazon.com/gp/product/1430218657?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1430218657">Merb: What You Need To Know</a>. There is also <a href="http://book.merbist.com/">an open source Merb book,</a> whose development is led by Matt Aimonetti. It&#8217;s a work in progress, but probably a very good starting point, which just happens to have the added bonus of being free. And if your interested in Merb, don&#8217;t miss InfoQ&#8217;s <a href="http://www.infoq.com/interviews/katz-merb">interview with Yehuda Katz</a>, who&#8217;s Merb&#8217;s lead developer and one of the sharpest guys we have in the Ruby community.</p>
<p>Finally, if you are a professional developer who wants to quickly progress with Merb and bring their skills to the next level, do not miss your chance to attend a three day <a href="http://merbclass.com">intensive course on Merb</a>, which is being offered by Yehuda and Matt in Phoenix, AZ between January 19 and 21 (2009). Registration has been open for two days already and 20 out of the 30 available spots have already been snapped up. The remaining seats won&#8217;t last more than a day or two, so if you are interested, don&#8217;t delay (sign up now and you&#8217;ll also benefit from an early registration price).</p>
<p>2009 is almost here, so why not take the opportunity to learn Merb this year?</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://programmingzen.com/2008/12/13/learn-merb/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>The Great Ruby Shootout (December 2008)</title>
		<link>http://programmingzen.com/2008/12/09/the-great-ruby-shootout-december-2008/</link>
		<comments>http://programmingzen.com/2008/12/09/the-great-ruby-shootout-december-2008/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 14:08:30 +0000</pubDate>
		<dc:creator>Antonio Cangiano</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Merb]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby Benchmark Suite]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://antoniocangiano.com/?p=407</guid>
		<description><![CDATA[The long awaited Ruby virtual machine shootout is here. In this report I&#8217;ve compared the performances of several Ruby implementations against a set of synthetic benchmarks. The implementations that I tested were Ruby 1.8 (aka MRI), Ruby 1.9 (aka Yarv), Ruby Enterprise Edition (aka REE), JRuby 1.1.6RC1, Rubinius, MagLev, MacRuby 0.3 and IronRuby. Disclaimer Just [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>The long awaited Ruby virtual machine shootout is here. In this report I&#8217;ve compared the performances of several Ruby implementations against a set of synthetic benchmarks. The implementations that I tested were <a hre="http://www.ruby-lang.org/en/">Ruby 1.8</a> (aka MRI), <a href="http://www.ruby-lang.org/en/downloads/">Ruby 1.9</a> (aka Yarv), <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> (aka REE), <a href="http://jruby.codehaus.org/">JRuby 1.1.6RC1</a>, <a href="http://rubini.us/">Rubinius</a>, <a href="http://ruby.gemstone.com/">MagLev</a>, <a href="http://www.macruby.org/trac/wiki/MacRuby">MacRuby 0.3</a> and <a href="http://www.ironruby.net/">IronRuby</a>.</p>
<p><br/></p>
<h4>Disclaimer</h4>
<p><br/></p>
<p>Just as with <a href="http://antoniocangiano.com/2007/12/03/the-great-ruby-shootout/">the previous shootout</a>, before proceeding to the results, I urge you to consider the following important points:</p>
<ul>
<li><a href="http://www.engineyard.com/">Engine Yard</a> sponsors this website, and also happens to sponsor, to a much greater extent, the Rubinius project. Needless to say, there is no bias in the reporting of the data below concerning Rubinius;</li>
<li>Don&#8217;t read too much into this and don&#8217;t draw any final conclusions. Each of these exciting projects has its own reason for being, as well as different pros and cons, which are not considered in this post. They each have a different level of maturity and completeness. Furthermore, not all of them have received the same level of optimization yet. Take this post for what it is: an interesting and fun comparison of Ruby implementations;</li>
<li>The results here may change entirely in a matter of months. There will be other future shootouts on this blog. If you wish, <a href="http://feeds.feedburner.com/ZenAndTheArtOfRubyProgramming">grab the feed and follow along</a>;</li>
<li>The scope of the benchmarks is limited because they can&#8217;t test every single feature of each implementation nor include every possible program. They&#8217;re just a sensible set of micro-benchmarks which give us a general idea of where we are in terms of speed. They aren&#8217;t meant to be absolutely accurate when it comes to predicting real world performance;</li>
<li>Many people are interested in the kind of improvements that the tested VMs can bring to a Ruby on Rails deployment stack. Please do not assume that if VM A is three times faster than VM B, that Rails will serve three times the amount of requests per minute. It won&#8217;t. That said, a faster VM is good news and can definitely affect Rails applications positively in production;</li>
<li>These tests were run on the machines at my disposal, your mileage may vary. Please do test the VMs that interest you on your hardware and against programs you actually need/use;</li>
<li>In this article, I sometimes blur the distinction between &#8220;virtual machine&#8221; and &#8220;interpreter&#8221; by simply calling them &#8220;virtual machines&#8221; for the sake of simplicity;</li>
<li>Some of the benchmarks are more interesting for VM implementers than for end users. That said, if you think the benchmarks being tested are silly/inadequate/lame, feel free to contribute code to the <a href="http://github.com/acangiano/ruby-benchmark-suite/tree/master">Ruby Benchmark Suite</a> and if accepted, they&#8217;ll make it into the next shootout;</li>
<li>Finally, keep in mind that there are three kinds of lies: <a href="http://en.wikipedia.org/wiki/Lies,_damned_lies,_and_statistics">lies, damned lies, and statistics</a>.</li>
</ul>
<p><br/></p>
<h4>Ruby implementations being tested</h4>
<p><br/></p>
<p>All of the Ruby implementations that were able to run the current Ruby Benchmark Suite have been grouped together in one main shootout. This group consists of Ruby 1.8.7 (p72, built from source, and installed through apt-get), Ruby 1.9.1 (from trunk, p5000 revision 20560), Ruby Enterprise Edition (1.8.6-20081205), JRuby 1.1.6RC1 and Rubinius (from trunk), all of them were tested on Ubuntu 8.10 x64, plus Ruby 1.8.6 (p287. from the One-Click Installer) on Windows Vista Ultimate x64. The hardware used for this benchmark was my desktop workstation with an Intel Core 2 Quad Q6600 (2.4 GHz) CPU and 8 GB of RAM. JRuby was run with the -J-server option enabled and by specifying 4 Mb of stack (required to pass certain recursive benchmarks). The best times out of five iterations were reported, and these do not include startup times or the time required to parse and compile classes and method for the first time. Several of these new tests also have variable input sizes.</p>
<p>The MagLev team provided me with an early alpha version of MagLev for the purpose of testing it in this shootout. Since this VM is not mature enough yet to run the Ruby Benchmark Suite, I used custom scripts against an old version of the Ruby Benchmark Suite on Ubuntu 8.10 x64. MagLev was tested, along with Ruby 1.8.6 (p287), on the same machine as that of the main shotoout, though the benchmarks were different (even when they had the same names as the ones in the main shootout).</p>
<p>MacRuby 0.3 and Ruby 1.8.6 (p114) were tested on Mac OS X Leopard using the previous version of the Ruby Benchamrk Suite. Since my MacBook Pro died (sigh), for this benchmark I used a Mac Pro, with two Quad-Core Intel Xeon 2.8 Ghz processors and 18 GB of RAM.</p>
<p>IronRuby (from trunk) and Ruby 1.8.6 (p287) were tested on a previous version of the Ruby Benchmark Suite on Windows Vista x64 on the same quad-core used for the main shootout. The MagLev, MacRuby and IronRuby numbers reported here were the best times out of five iterations, and include startup time. IronRuby on Mono was not tested because I couldn&#8217;t get it to work on my machine, despite having tried several IronRuby versions and two different Mono versions. Please also notice that Ruby 1.8.6 (p287) was tested twice on Windows, once for the main shootout against the current Ruby Benchmark Suite, and a second time to compare it with IronRuby, against the old benchmarks.
<p><b>Note</b>: As tempting as it is, do not compare implementations that belong to different shootouts directly to one another. It would be very disingenuous to directly compare VMs tested with different benchmarks and/or different machines. The only comparisons that make sense are the ones within each of the four groups.</p>
<p><br/></p>
<h4>Main shootout</h4>
<p><br/></p>
<p>The following table shows the run times for the main implementations. The table is fairly wide, so you&#8217;ll have to click on the image to view the data in a new tab.</p>
<div align="center"><a href="http://antoniocangiano.com/images/shootout3/main_time.png" title="Click to enlarge this figure" target="_blank"><img src="http://antoniocangiano.com/images/shootout3/main_time_small.gif" alt="Main Shootout's times" /></a></div>
<p><br/></p>
<p>Green, bold values indicate that the given virtual machine was faster than Ruby 1.8.7 on GNU/Linux (our baseline), whereas a yellow background indicates the absolute fastest implementation for a given benchmark. Values in red are slower than the baseline. Timeout indicates that the script didn’t terminate in a reasonable amount of time and was (automatically) interrupted. The values reported at the bottom are the total amounts of time (in seconds) that it would take to run the common subset of benchmarks which were successfully executed by every virtual machine. When our baseline VM generated an error, others were used, starting with Ruby 1.8.7 on Vista (for color coding purposes only).</p>
<p>The following image shows a bar chart of the total time requested for the common subset of successfully executed benchmarks (those whose names are in blue within the tables):</p>
<div align="center"><img src="http://antoniocangiano.com/images/shootout3/chart_total_time_small.png" alt="Total Time" /></div>
<p><br/></p>
<p>More interestingly, the following table shows the ratios of each Ruby implementation based on the baseline (MRI):</p>
<div align="center"><a href="http://antoniocangiano.com/images/shootout3/main_geomean.png" title="Click to enlarge this figure" target="_blank"><img src="http://antoniocangiano.com/images/shootout3/main_geomean_small.gif" alt="Main Shootout's ratios" /></a></div>
<p><br/></p>
<p>The baseline time is divided by the time at hand to obtain a number that tells us &#8220;how many times faster&#8221; an implementation is for a given benchmark. 2.0 means twice as fast, while 0.5 means half the speed (so twice as slow). The geometric mean at the bottom of the table tells us how much faster or slower a virtual machine was when compared to the main Ruby interpreter, on &#8220;average&#8221;. Just as with the totals above, only those 101 tests, which were successfully run by each VM, where included in the calculation.</p>
<p>More concisely, here is a bar chart showing the geometric mean of the ratios for the various implementations tested:</p>
<div align="center"><img src="http://antoniocangiano.com/images/shootout3/chart_geomean_small.png" alt="Geometric Mean" /></div>
<p><br/></p>
<p>I prefer to let the data speak for itself, but I&#8217;d like to briefly comment on these results. Just a few quick considerations.</p>
<p>Working off of the <a href="http://en.wikipedia.org/wiki/Geometric_mean">geometric mean</a> of the ratios for the successful tests, Ruby MRI compiled from source is twice as fast than the Ruby shipped by Ubuntu, and by the One-Click Installer on Vista. The huge performance gap between ./configure &#038;&#038; make &#038;&#038; sudo make install and sudo apt-get install ruby-full should not be taken lightly when deploying in production. These numbers also reveal what most of us already knew: Ruby is particularly slow on Windows (<a href="http://groups.google.com/group/capistrano/msg/f5213577eaeadc47?pli=1">800-pound gorillas in the room</a>, or not).</p>
<p>Performance-wise Rubinius has more work left to be done to catch up with Ruby 1.8.7 and other faster VMs, particularly if we take into account the number of timeouts. But it has improved in the past year and I think it’s on the right track.</p>
<p>Ruby Enterprise Edition is about as fast as Ruby 1.8.7 compiled from source, which is reasonable considering that it&#8217;s a patched version of Ruby 1.8.6 aimed at the reduction of memory consumption (a parameter which wasn&#8217;t tested within the current shootout).</p>
<p>Speaking of excellent results, Ruby 1.9.1 and JRuby 1.1.6 both did <b>very</b> well. It looks like we finally have a couple of relatively fast alternatives to what is a slow main interpreter. According to the results above, and with the exception of a few tests, on average they are respectively 2.5 and 2 times faster than Ruby 1.8.7 (from source), and 5 and 4 times faster than Ruby 1.8.7 installed through apt-get on Ubuntu or Ruby 1.8.6 installed through the One-Click installer on Vista. Again, this does not mean than every program (particularly Rails) will gain that kind of speed, but these results are very encouraging nevertheless.</p>
<p><br/></p>
<h4>MagLev</h4>
<p><br/></p>
<p>There has been a lot of buzz about MagLev since Avi Bryant&#8217;s first benchmarks were shown a few months ago. Here we finally see it being put to the test. The table below shows the times obtained by running MagLev and Ruby 1.8.6 (p287) against MagLev&#8217;s set of benchmarks based on the old Ruby Benchmark Suite:</p>
<div align="center"><img src="http://antoniocangiano.com/images/shootout3/maglev_time.png" alt="MagLev's times" /></div>
<p><br/></p>
<p>And here are the ratios:</p>
<div align="center"><img src="http://antoniocangiano.com/images/shootout3/maglev_geomean.png" alt="MagLev's ratios" /></div>
<p><br/></p>
<p>You&#8217;ll notice how MagLev swings from being much faster than MRI to being much slower. I believe there is much room for improvement, but at almost twice the speed of MRI, these early results are definitely promising.</p>
<p><br/></p>
<h4>MacRuby</h4>
<p><br/></p>
<p>These are the times for MacRuby 0.3 on Mac OS X 10.5.5:</p>
<div align="center"><img src="http://antoniocangiano.com/images/shootout3/macruby_time.png" alt="MacRuby's times" /></div>
<p><br/></p>
<p>And of course, the ratios against the MRI baseline:</p>
<div align="center"><img src="http://antoniocangiano.com/images/shootout3/macruby_geomean.png" alt="MacRuby's ratios" /></div>
<p><br/></p>
<p>MacRuby is relatively new, so these are not bad results. More work is required, but it&#8217;s a good start.</p>
<p><br/></p>
<h4>IronRuby</h4>
<p><br/></p>
<p>Finally (I promise these are the last ones), here are the two tables for IronRuby and Ruby 1.8.6:</p>
<div align="center"><img src="http://antoniocangiano.com/images/shootout3/ironruby_time.png" alt="IronRuby's times" /></div>
<div align="center"><img src="http://antoniocangiano.com/images/shootout3/ironruby_geomean.png" alt="IronRuby's ratios" /></div>
<p><br/></p>
<p>IronRuby is slower than Ruby 1.8.6 on Windows, which in turn is much slower than Ruby 1.8.7 on GNU/Linux. This is not very surprising. This project has been focusing on integrating with .NET and catching up with the implementation of the language by improving the RSpec pass rate, as opposed to performing any optimizations and/or fine tuning (as per <a href="http://rubyconf2008.confreaks.com/ironruby.html">John Lam&#8217;s presentation</a> at RubyConf 2008). We&#8217;ll measure its improvements in the next shootouts.</p>
<p><br/></p>
<h4>Conclusion</h4>
<p><br/></p>
<p>Overall I think these are great results. Ruby 1.8 (MRI), with its slowness and memory leaks, belongs to the past. It&#8217;s time for the community to move forward and on to something better and faster &#8211; and we don&#8217;t lack interesting alternatives to do so at this stage.</p>
<p>I hope that for the next shootout, MagLev, MacRuby and IronRuby will be able to run the benchmark suite, so that they can all be tested and directly compared with each other. I also hope to include Tim Bray&#8217;s XML benchmark, some sort of &#8220;Pet Shop&#8221; sample Rails and Merb application and, above all, include memory usage statistics.</p>
<p>You can find the Excel file for the main shootout <a href="http://antoniocangiano.com/files/MainShootout3.0.xls">here</a>. That&#8217;s all for now. Feel free to comment, <a href="http://feeds.feedburner.com/ZenAndTheArtOfRubyProgramming">subscribe to my feed</a>, share this link and promote it on <a href="http://news.ycombinator.com/item?id=391301">Hacker News</a>, <a href="http://www.reddit.com/r/programming/comments/7ic05/the_great_ruby_shootout_december_2008/">Reddit</a>, <a href="http://www.dzone.com/links/the_great_ruby_shootout_december_2008.html">DZone</a>, StumbleUpon, <a href="http://twitter.com/">Twitter</a>, and Co. Putting together this shootout was a lot of work, so I definitely appreciate you spreading the word about it. Until next time&#8230;</p>
<p><b>Update (December 10, 2008)</b>: This article has been updated to correct a couple of major issues with yesterday&#8217;s results. I adjusted my commentary as well, in light of the corrected figures.</p>
<p><b>Update (February 7, 2009)</b>: Thanks to Makoto Kuwata, <a href="http://jp.rubyist.net/magazine/?0025-TheGreatRubyShootout">a Japanese version of this article</a> was published in the Rubyist Magazine.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://programmingzen.com/2008/12/09/the-great-ruby-shootout-december-2008/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>Merb, Rails Myths, Language Popularity and other Zenbits</title>
		<link>http://programmingzen.com/2008/11/14/merb-rails-myths-language-popularity-and-other-zenbits/</link>
		<comments>http://programmingzen.com/2008/11/14/merb-rails-myths-language-popularity-and-other-zenbits/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 23:50:53 +0000</pubDate>
		<dc:creator>Antonio Cangiano</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Merb]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby Benchmark Suite]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Zenbits]]></category>

		<guid isPermaLink="false">http://antoniocangiano.com/?p=381</guid>
		<description><![CDATA[Zenbits are posts which include a variety of interesting subjects that I&#8217;d like to talk about briefly, without writing a post for each of them. Merb: A few days ago Merb 1.0 was released. Congratulations to Ezra Zygmuntowicz on this important milestone, the Merb community and Engine Yard (who finances the project). Merb 1.0 wasn&#8217;t [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><em><strong>Zenbits</strong> are posts which include a variety of interesting subjects that I&#8217;d like to talk about briefly, without writing a post for each of them.</em></p>
<p><strong>Merb:</strong> A few days ago <a href="http://brainspl.at/articles/2008/11/08/merb-1-0">Merb 1.0</a> was released. Congratulations to Ezra Zygmuntowicz on this important milestone, the Merb community and <a href="http://engineyard.com">Engine Yard</a> (who finances the project). Merb 1.0 wasn&#8217;t even out yet when some people had already started commenting on the fracturing of the Ruby community that this new framework might bring with this, and the impact that this high visibility &#8220;competitor&#8221; might have on Rails. I believe that having more than one widely adopted web framework will only benefit the Ruby community. Furthermore, it&#8217;s important to remember that this is not a zero-sum game. Ruby programmers are perfectly capable of learning two frameworks and using one or the other, depending on the project at hand. This is particularly true if we consider that Merb, for all of its advantages &#8211; and disadvantages &#8211; when compared to Rails, is not totally different from its forerunner. If you are an expert Rails programmer, you should be able to become proficient in Merb in very little time. To help with this process, the Merb community needs to concentrate on the documentation now, given that the API is finally stable.</p>
<p><strong>Rails Myths:</strong> David Heinemeier Hansson began <a href="http://www.loudthinking.com/posts/29-the-rails-myths">a series of posts about Rails Myths</a>. I like the idea of seeing common myths addressed straight from the horse&#8217;s mouth. Over the past two years, Rails has received quite a bit of backslash and old fashion FUD, so it&#8217;s important to set the record straight, whether the myths are entirely fabricated or if there is some element of truth to them. Whether you agree with David or not, it&#8217;s also nice to hear two sides of the same story. In fact, at the beginning of <a href="http://antoniocangiano.com/my_ruby_on_rails_book.php">my book</a> I debunk a few myths, just to set the record straight regarding what some readers may have heard surrounding the framework. It was a fun part to write.</p>
<p><strong>My Book:</strong> Speaking of my book, <a href="http://antoniocangiano.com/my_ruby_on_rails_book.php">Ruby on Rails for Microsoft Developers</a>, I&#8217;m getting closer to the finish line. I&#8217;m about to complete Chapter 9 (out of eleven chapters). The initial schedule I was provided with has been extended slightly so that there will be sufficient time to properly review the content and ensure that it&#8217;s up to date with the final release of Rails 2.2. Some people wondered what the &#8220;Microsoft Developers&#8221; part means. Is it for people that work at Microsoft? Is it for .NET programmers? Is it for people who develop on Windows?</p>
<p>The truth is that &#8220;Microsoft Developers&#8221; is probably just a marketing term that Wrox selected as a catch-all for of the aforementioned categories of programmers. As an author I&#8217;m trying to serve all of them well, by providing a guide that sneaks in much of the Rails culture and softens the migration path by using an Operating System, and to a certain extent, tools that they&#8217;re already familiar with. In my opinion one of the major obstacles when switching to, or trying, Rails when coming from the Microsoft world, is the culture shock. The documentation and most books assume that you are familiar with *nix systems and tools, and this can be frustrating for those who are forced not only to learn a new language and framework, but also an entirely new set of tools. As it&#8217;s targeted at Microsoft developers, the book obviously makes quite a few references and comparisons to the .NET world, where they fit. This is done so that the many .NET programmers amongst the group of so called &#8220;Microsoft Developers&#8221; will find the book particularly useful. Yet the book remains generic enough so that it can be used by any programmer (particularly Windows users), even those without any knowledge of the Microsoft .NET Framework or ASP.NET.</p>
<p><strong>Python books:</strong> While on the subject of books, I wanted to mention that the final version of the <a href="http://pylonsbook.com/alpha1/toc">Pylons book</a> is available online. Despite the much less fancy UI, the book pretty much does what the <a href="http://djangobook.com/en/1.0/">Django Book</a> did in the past. And both are available in print as well (<a href="http://www.amazon.com/gp/product/1590597257?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1590597257">The Definitive Guide to Django: Web Development Done Right</a> and <a href="http://www.amazon.com/gp/product/1590599349?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1590599349">The Definitive Guide to Pylons</a>). <a href="http://pylonshq.com/">Pylons</a> is a Python web framework that can be viewed as a Ruby on Rails clone, in a far greater way than Django could ever be considered.</p>
<p>Another thing I want to mention is that I received a copy of <a href="http://www.amazon.com/gp/product/184719494X?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=184719494X">Expert Python Programming</a>. I haven&#8217;t gotten to far into it yet, but from what I&#8217;ve seen so far, things look good. I hope to be able to read it through, over a weekend in the near future and then provide a proper review. Stay tuned.</p>
<p><strong>Language Popularity:</strong> If you take a look at the <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html">TIOBE Index</a>, you&#8217;ll notice a few interesting things: Ruby has dropped two positions since last year, and it&#8217;s now the 11th most popular language in the world. This shouldn&#8217;t be cause for concern though, as shown by this <a href="http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html">Ruby graph</a>. Python on the other hand is increasing in popularity and moved from the 7th to the 6th most popular language. Interestingly, according to the index (the results of which are educated guesses only), Python would seem to be more popular than C#. I find this to be true, in terms of online activity within an increasingly vibrant community, but in my opinion, the job market hasn&#8217;t caught up yet. In fact, at least in Toronto, when there&#8217;s a Python opening it&#8217;s pretty much an event that&#8217;s worthy of being discussed on the local Python mailing list. C# openings are much more common. This may be different in Silicon Valley, of course. It would also seem that Delphi has experienced a huge come back, moving from the 11th position last year to the 8th one this time around. It&#8217;s hard to imagine that Delphi has had a similar level of adoption as C# and thus has become more popular than Perl, JavaScript and Ruby. Delphi is a great solution for Win32 programming, but I don&#8217;t quite believe this overly optimistic outlook. And if this is the case, where are all the Delphi jobs and buzz?</p>
<p><strong>DB2:</strong> <a href="http://www.youtube.com/watch?v=W69zLWjpzEo">This interview</a> shows a few good reasons why even smaller and medium sized companies are increasingly adopting DB2. And while the video doesn&#8217;t mention it, IBM is coming out with <a href="http://www.ibm.com/software/data/db2/express/download.html?S_CMP=ECDDWW01&#038;S_TACT=ACDB201">an updated version of DB2 Express-C 9.5</a>. This new version, 9.5.2 or 9.5 FixPack 2, is going to introduce exciting new features, including an engine for full text search.</p>
<p><strong>The Great Ruby Shootout</strong> These days you hear a lot of talk about parallel programming. Intel <a href="http://software.intel.com/en-us/blogs/2008/10/22/sequential-programming-is-dead-so-stop-teaching-it/">promotes it</a> and despite their bias, it&#8217;s plausible that parallel programming will become important as the CPU market heads towards an increasingly larger number of cores, as opposed to focusing on the frequency of said CPUs. In the world of Ruby, this translates into <a href="http://www.igvita.com/2008/11/13/concurrency-is-a-myth-in-ruby/">multiprocessing, as opposed to multithreading</a> due to the infamous GIL (Global Interpreter Lock). This means that Ruby will most likely approach the problem similarly to how Python 2.6 did with the <a href="http://docs.python.org/dev/library/multiprocessing.html">multiprocessing module</a>, which is a process-based interface. The obvious exceptions are JRuby and IronRuby, which establish a 1 to 1 relationship between green threads and OS threads.</p>
<p>For the shootout, it would be interesting to see some multithreaded code, so as to get a better sense of how well JRuby and IronRuby compare to MRI and 1.9, when more cores are available. In fact, the long-promised shootout will be performed on a quad-core machine with 8GB of RAM. If Charles Nutter, John Lam, or any of their team members would like to contribute some programs that are able to take advantage of &#8220;native&#8221; multithreading, I&#8217;d be very happy to include them in the <a href="http://groups.google.com/group/ruby-benchmark-suite?pli=1">Ruby Benchmark Suite</a>, to be used for my shootout.</p>
<p>The repository requires some love and refactoring, since it needs to be split in two types of benchmarks. The simpler one will evaluate the execution time minus the startup time, while the more advanced benchmark will also exclude the time required for parsing and loading modules, classes and methods in the AST. It would also be nice to test each program with variable input sizes and report these results accordingly. Right now I&#8217;m very busy with the book, but as I become more available, I&#8217;ll start working on this.</p>
<p>Finally, I want to point out <a href="http://unweary.com/2008/11/specifying-performance.html">a very interesting article</a> about performance and UIs. Slow is indeed a very relative concept, and it&#8217;s important to understand how to analyze and respond to the user requirements when it comes to the responsiveness of an application as a user interacts with it.</p>
<p><strong>Hardware:</strong> I finally bought a <a href="http://www.amazon.com/gp/product/B00006B9CR?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B00006B9CR">Trackball made by Logitech</a> and the <a href="http://www.amazon.com/gp/product/B000OOY4S6?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B000OOY4S6">Microsoft Ergonomic Keyboard</a> (Microsoft makes great hardware). I don&#8217;t have wrist problems, but I&#8217;d like to see how these two affect my extensive computer usage. I plan to report my experience as soon as I&#8217;ve had a chance to use these input devices for a while, since I know this is a topic that interests lots programmers (many of whom end up being victims of <a href="http://en.wikipedia.org/wiki/Repetitive_strain_injury">RSI</a>, and some of the IRS <img src='http://programmingzen.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> ). I also bought <a href="http://www.amazon.com/gp/product/B000XZ79ME?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B000XZ79ME">a bad-ass color laser printer</a> which is quite handy when you&#8217;re a programmer and you are writing a book. I&#8217;ll let you know how it goes. What I didn&#8217;t buy, but still think is awesome, is the <a href="http://www.amazon.com/gp/product/B001HSOFI2?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=B001HSOFI2">Flip minoHD</a>. It&#8217;s the equivalent of an iPod for the world of camcorders. $235 for a camcorder that&#8217;s so perfectly compact, and yet that can record in HD, is a pretty sweet deal. I&#8217;m considering it for Christmas, assuming it reaches Canada by then.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://programmingzen.com/2008/11/14/merb-rails-myths-language-popularity-and-other-zenbits/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What Arc should learn from Ruby</title>
		<link>http://programmingzen.com/2008/10/26/what-arc-should-learn-from-ruby/</link>
		<comments>http://programmingzen.com/2008/10/26/what-arc-should-learn-from-ruby/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 05:07:06 +0000</pubDate>
		<dc:creator>Antonio Cangiano</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Merb]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://antoniocangiano.com/?p=293</guid>
		<description><![CDATA[There was a lot of buzz surrounding Arc before it was released. Then Paul Graham made an early version available to the public and most people weren&#8217;t too impressed. Paul is a charismatic figure and has his own following, so despite the uncertain welcome that the language received, Arc managed to attract a small community [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p>There was a lot of buzz surrounding Arc before it was released. Then Paul Graham made an early version available to the public and most people weren&#8217;t too impressed. Paul is a charismatic figure and has his own following, so despite the uncertain welcome that the language received, Arc managed to attract a small community of curious developers. Then silence. For a few months, most people hardly heard anything about Arc. Until today. <a href="http://www.arclanguage.org/item?id=8462">A post</a> on news.arc suddenly found its way into the spotlight. In this post, its author tried to summarize the status of the language, its failure to attract new developers or even retain the existing ones, and what is perceived as a lack of leadership for the project and a very uncertain future.</p>
<p>I joked about this and said that &#8220;Arc is the infogami of programming languages&#8221;. <a href="http://infogami.com/">Infogami</a> was a project started by <a href="http://www.aaronsw.com/weblog/">Aaron Swartz</a>, that was claiming it was going to revolutionize the web &#8220;like the Macintosh did for computers&#8221; (if I recall the quote correctly). Despite the great expectations and the grand announcements that were made, the project (launched by what was a <a href="http://ycombinator.com">YCombinator</a> startup) never really flew. But I digress; the point is that Arc, like infogami was wrapped in layers of expectations, like a scallop with <a href="http://bacon.reddit.com">bacon</a>, but the delivery and the outcome were less than stellar.</p>
<p>Don&#8217;t hold this against Paul (or Aaron); projects fail or have rocky starts all the time. It&#8217;s the nature of software and of this business. Don&#8217;t jump to conclusions too quickly and assume that Arc has failed and is dead, either. Paul seems to have long term plans for the language. Many popular languages today were absolutely obscure to most developers for their first several years. Should Arc become the great language many had hoped for, people will have no qualms in adopting it in 1, 3 or even 5 years time.</p>
<p>I think that Paul is trying to distinguish between what the core features of the language are and its libraries, and his aim and focus is currently directed towards the former; a core that he wishes to change and evolve with a certain degree of freedom. From many of his writings, it is apparent that Paul has set out one clear cut criterium for the features of his language: whatever changes are made, need to make Arc concise. Concise doesn&#8217;t mean terse or unreadable, it means powerful and expressive enough to enable the language&#8217;s users to write a certain program with much less code than what&#8217;s required by other commonly adopted languages, and if possible, even by the most popular dialects of Lisp.</p>
<p>This approach to the design of the core language is far from off course. For example, Ruby&#8217;s conciseness is one of its most appreciated characteristics and one of the prominent features that sets it apart from compiled languages like C or Java. But a powerful and well designed programming language is not enough. That&#8217;s not really what developers are after.</p>
<p>Programmers are looking for solutions to existing problems and pains. They want tools, and this includes languages, that are good at helping them while they try to implement certain types of software. The languages may be general purpose, but if they don&#8217;t represent an advantage over other alternatives in a particular domain, they are hardly used.</p>
<p>In short, libraries and the ecosystem surrounding programming languages are often as important as the languages themselves.</p>
<p>In a somewhat <a href="http://news.ycombinator.com/item?id=343594">related &#8220;ask News.YCombinator&#8221; question</a>, <a href="http://clojure.org/">Clojure</a> was mentioned as a possible &#8220;next big thing&#8221; for the Lisp world. As you can imagine, the subject of Arc was brought up and Paul stepped in with a few comments. Two significant ones specifically focused on the subject of libraries, trying to address what is currently perceived as one of Arc&#8217;s big weaknesses, whereas it&#8217;s a strong point for Clojure, which can rely on all the existing code available for the Java world (since Clojure targets the JVM).</p>
<p>The first of these comments included the following quote:</p>
<blockquote><p>Powerful libraries are a cheap way to make a new language the language du jour. (Think Rails.) They&#8217;re not the critical ingredient if you&#8217;re trying to make something to last; they may even hurt. &#8212; Paul Graham</p></blockquote>
<p>And the second one, further explained what his position was:</p>
<blockquote><p>The dangers of libraries are that they distract one&#8217;s attention from the core language, and that they could conceal or perpetuate flaws in the core language. I&#8217;m not saying that languages *shouldn&#8217;t* have powerful libraries, btw, just that they may not be 100% upside. &#8212; Paul Graham</p></blockquote>
<p>Read that first quote again. I agree with the initial part of it, but find the conclusion is not supported by the facts. Paul himself brought up the example of Ruby and Rails, so let&#8217;s explore this further and see what Arc could learn from Ruby&#8217;s experience.</p>
<p>Ruby was a very good programming language that for a long time was hardly used outside of Japan. Beside the scarcity of documentation in English, one of the major untold challenges of the language was that it didn&#8217;t really solve a particular problem. It was a beautiful general purpose language and that was it. Sure, quite a few smart early adopters realized the potential of the language, and it started to gain some momentum amongst Perl developers, as a possible Perl successor. But let&#8217;s face it, for most people Perl was good enough.</p>
<p>Ruby&#8217;s core didn&#8217;t really change in 2006, when a large majority of the development community acknowledged the merits of the language. Ruby in 2000 and Ruby in 2006 were not really that different. What was drastically different about the two was the ecosystem surrounding Ruby. And the fact that Ruby now offered an incredible solution for those developers who desired to address the problem of web development. Matz was right, Rails is Ruby&#8217;s killer application.</p>
<p>But let&#8217;s not stop here. Paul agrees that Ruby&#8217;s growth rate has been exponentially increased thanks to Rails. So much so that he mentioned it as an emblematic example of a &#8220;cheap way&#8221; to bring a language to the front of the class. He concludes however, that this is not really the right approach or the critical ingredient needed to create something that lasts. He even goes so far as to say that it may end up hurting the language. And in this, I absolutely disagree.</p>
<p>I disagree because the history of Ruby and that of a few other programming languages shows how the arrival of a community of interested developers has always had many more benefits than drawbacks, provided that a minimal leadership for the projects existed. Taking an accelerated course in Ruby History 101, we&#8217;d discover that Ruby already had its own group of fans and a growing English speaking community. Ruby was able to stand on its own merits. What Rails did was inject an incredible amount of attention towards Ruby from developers, companies and the tech oriented media.</p>
<p>What was the effect of all this on Ruby? Countless libraries were written for the language; thousands of companies, particularly startups, adopted Ruby as their language of choice. There was a spur of alternative new Ruby web frameworks (like Merb, Ramaze, etc&#8230;) and also a dozen alternative implementations that attempt to improve upon the shortcomings of the language&#8217;s main implementation and, in a few occasions, to integrate Ruby with other existing VMs (e.g. with JRuby and IronRuby). There were a grand total of two generally available books on the topic, yet now bookstores are filled with Ruby-specific books, not just ones about Rails (something I predicted to my wife back in 2004). Perhaps more importantly, Ruby is now also widely used outside of the web development world as the truly general purpose language it was intended to be. Every time a DSL is needed, Ruby delivers. There are very popular conferences for the language held throughout the year and companies (e.g. Engine Yard) and VCs are investing money in the future of Ruby. mod_ruby wasn&#8217;t working for Rails? Along came Mongrel (and several other alternatives) and now even mod_rails to address the deployment issues.</p>
<p>Paul, I&#8217;ll take this flourishing community and ecosystem if its downside is just a sea of newbies asking silly questions in forums. Rails has shown the world what Ruby is capable of, and by doing so, it also presented Ruby&#8217;s faults in a clear light. Only this time, there weren&#8217;t 100 people ready to jump in and fix it; there were 10,000, several companies and millions of dollars to back it up. To me this is a critical ingredient to make something last.</p>
<p>I understand that Paul isn&#8217;t rushing when it comes to Arc, and that he wants to perfect his language before letting a large crowd gather around it, but the risk here is the alienation of early adopters and letting many people who were genuinely interested in the project down. Arc like Ruby did (and unlike Clojure), cannot rely on a wealth of existing code. To ensure its bright future Arc will therefore need to make up for this with, yes, a well designed powerful core, but above all with a growing set of libraries, a growing community and if possible, at least one easily identifiable area where Arc shines in resolving one problem better than other existing languages are capable of doing. Based on the trend of the development world, this killer application will probably come in the form of a Rails or Seaside equivalent for Arc. There isn&#8217;t a mad dash, Arc is still very young after all, but it would be a mistake to underestimate the importance of such a critical component for the future and success of this language.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://programmingzen.com/2008/10/26/what-arc-should-learn-from-ruby/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>This Week in Ruby (June 26, 2008)</title>
		<link>http://programmingzen.com/2008/06/26/this-week-in-ruby-june-26-2008/</link>
		<comments>http://programmingzen.com/2008/06/26/this-week-in-ruby-june-26-2008/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 04:33:19 +0000</pubDate>
		<dc:creator>Antonio Cangiano</dc:creator>
				<category><![CDATA[Merb]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby Benchmark Suite]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[This Week in Ruby]]></category>

		<guid isPermaLink="false">http://antoniocangiano.com/?p=194</guid>
		<description><![CDATA[This is the 11th episode of This Week in Ruby, please consider subscribing to my feed so as to not miss any weekly installments. This edition begins with some bad news: Several vulnerabilities that affect the main Ruby implementation have been discovered. There is no reason to freak out, but they are serious. An ill-intended [...]
Possibly related posts:<ol>
<li><a href='http://programmingzen.com/2008/06/16/this-week-in-ruby-june-16-2008/' rel='bookmark' title='This Week in Ruby (June 16, 2008)'>This Week in Ruby (June 16, 2008)</a></li>
<li><a href='http://programmingzen.com/2008/04/28/this-week-in-ruby-april-28-2008/' rel='bookmark' title='This Week in Ruby (April 28, 2008)'>This Week in Ruby (April 28, 2008)</a></li>
<li><a href='http://programmingzen.com/2008/04/21/this-week-in-ruby-april-21-2008/' rel='bookmark' title='This Week in Ruby (April 21, 2008)'>This Week in Ruby (April 21, 2008)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><em>This is the 11th episode of This Week in Ruby, please consider <a href="http://feeds.feedburner.com/ZenAndTheArtOfRubyProgramming">subscribing to my feed</a> so as to not miss any weekly installments.</em></p>
<p>This edition begins with some bad news: <a href="http://weblog.rubyonrails.com/2008/6/21/multiple-ruby-security-vulnerabilities">Several vulnerabilities</a> that affect the main Ruby implementation have been discovered. There is no reason to freak out, but they are serious. An ill-intended person could take advantage of these vulnerability and execute arbitrary code. Matasano has a few <a href="http://www.matasano.com/log/1070/updates-on-drew-yaos-terrible-ruby-vulnerabilities/">practical examples</a> which illustrate the vulnerabilities in question. To learn more head over to the <a href="http://www.ruby-lang.org/en/news/2008/06/20/arbitrary-code-execution-vulnerabilities/">official advisory</a>. Unfortunately, the suggested upgrades (except those for Ruby 1.8.7) are currently not working for many Rails developers, who&#8217;re reporting segmentation faults. The Phusion team has created <a href="http://blog.phusion.nl/assets/r8ee-security-patch-20080623.txt">a patch</a> that was reported to be working, but it would be nice to see the Ruby Core Team verify and incorporate it quickly. If you&#8217;re running a version of Ruby that shipped with Mac <span class="caps">OS X</span>, don&#8217;t upgrade yet. Instead wait for Apple&#8217;s Software Update.</p>
<p><a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/305855">RubyGems 1.2 was released</a> and it&#8217;s much more responsive than previous versions of it were (no more bulk updates just to install a new gem). To upgrade run: <code>sudo gem update --system</code> (without <code>sudo</code> if you are on Windows). After a substantial refactoring, Mocha 0.9 &#8211; a framework for mocking and stubbing &#8211; was released this week. A new BitNami RubyStack version was released (1.2 beta) as well, which adds <a href="http://bitnami.org/article/new-rubystack-released">a lot of goodies</a> to the package, including but not limited to <span class="caps">NGINX</span>, Thin, Rack, EventMachine and so on. Speaking of EventMachine, check out <a href="http://www.infoq.com/news/2008/06/eventmachine">EventMachine: Fast and Scalable Event-Driven I/O Framework</a> published by InfoQ. Last week they also published <a href="http://www.infoq.com/news/2008/06/introducing-ruby-benchmark-suite">an interview</a> with yours truly, in regards to the Ruby Benchmark Suite. I regret that the shootout testing hasn&#8217;t started yet as promised, but <a href="http://antoniocangiano.com/2008/06/23/heads-up-regarding-the-shootout/">Murphy&#8217;s law got in the way</a>.</p>
<p>For those interested in improving their language-fu, there were a numbers of interesting articles: <a href="http://matthewcarriere.com/2008/6/23/using-select-reject-collect-inject-and-detect">Using select, reject, collect, inject and detect</a>, <a href="http://globalnerdy.com/2008/06/25/enumerating-enumerable-enumerablecollectenumerablemap/">Enumerating Enumerable</a>, <a href="http://weblog.raganwald.com/2008/06/macros-hygiene-and-call-by-name-in-ruby.htmland">Macros, Hygiene, and Call By Name in Ruby</a> <a href="http://szeryf.wordpress.com/2008/06/05/eliminating-code-duplication-with-metaprogramming/">Eliminating code duplication with Metaprogramming</a>. Also noteworthy, this piece on <a href="http://rubypond.com/articles/2008/06/19/ruby-and-microformats/">working with Microformats from Ruby</a>.</p>
<p>A <a href="http://groups.google.com/group/ruby-community-announcements">Ruby Community Announcements group</a> was started in order to provide a fast ML for announcements only. It&#8217;s for those who&#8217;d like to stay in the loop, but wish to avoid the high volume of messages in Ruby-Talk.</p>
<p>The <a href="http://erubycon.com/">erubycon conference</a> about Ruby and the Enterprise will be held between August 15 and 17 (&#8216;08) in Columbus, Ohio. They still have a few seats available, so if this topic is of interest to you, grab a spot while you still can.</p>
<p>Finally, if you&#8217;re hiring Ruby talent or plan to look for a Ruby job any time soon, take a peek at these <a href="http://blog.ritirisi.com/2008/06/17/15-questions-to-ask-during-a-ruby-interview">15 fundamental questions</a> for Ruby interviews. They&#8217;re somewhat basic, but the article is a good staring point nevertheless.</p>
<p><strong><span class="caps">ALT</span>.rb</strong></p>
<p>From the world of alternative implementations and frameworks, I found this article on <a href="http://pluskid.lifegoo.com/?p=370">Rubinius <span class="caps">FFI</span></a>, an <a href="http://alternateidea.com/blog/articles/2008/6/17/macruby-the-path-forward">introduction to MacRuby</a> as a replacement for RubyCocoa, and the announcement of <a href="http://merbunity.com/news/28">Merb&#8217;s run_later</a>&#8221; method for backgrounds tasks, all to be informative.</p>
<p><br/></p>
<p>To keep the good times rolling, the second edition of <a href="http://weblog.rubyonrails.com/2008/6/26/this-week-in-rails-june-26-2008">This Week in Rails</a> is available on the official Rails blog.</p>
<p>Possibly related posts:<ol>
<li><a href='http://programmingzen.com/2008/06/16/this-week-in-ruby-june-16-2008/' rel='bookmark' title='This Week in Ruby (June 16, 2008)'>This Week in Ruby (June 16, 2008)</a></li>
<li><a href='http://programmingzen.com/2008/04/28/this-week-in-ruby-april-28-2008/' rel='bookmark' title='This Week in Ruby (April 28, 2008)'>This Week in Ruby (April 28, 2008)</a></li>
<li><a href='http://programmingzen.com/2008/04/21/this-week-in-ruby-april-21-2008/' rel='bookmark' title='This Week in Ruby (April 21, 2008)'>This Week in Ruby (April 21, 2008)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://programmingzen.com/2008/06/26/this-week-in-ruby-june-26-2008/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>This Week in Ruby (June 16, 2008)</title>
		<link>http://programmingzen.com/2008/06/16/this-week-in-ruby-june-16-2008/</link>
		<comments>http://programmingzen.com/2008/06/16/this-week-in-ruby-june-16-2008/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 02:23:30 +0000</pubDate>
		<dc:creator>Antonio Cangiano</dc:creator>
				<category><![CDATA[Merb]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby Benchmark Suite]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[This Week in Ruby]]></category>

		<guid isPermaLink="false">http://antoniocangiano.com/?p=191</guid>
		<description><![CDATA[This is the 10th episode of This Week in Ruby, please consider subscribing to my feed so as to not miss any weekly installments. As announced a few days ago, This Week in Ruby is being split into two parts: This Week in Ruby and This Week in Rails. The one you are reading is [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><em>This is the 10th episode of This Week in Ruby, please consider <a href="http://feeds.feedburner.com/ZenAndTheArtOfRubyProgramming">subscribing to my feed</a> so as to not miss any weekly installments.</em></p>
<p>As announced a few days ago, This Week in Ruby is being split into two parts: This Week in Ruby and This Week in Rails. The one you are reading is the Ruby edition, while <a href="http://weblog.rubyonrails.org/">Riding Rails</a> &#8211; the official Rails blog &#8211; will host the Rails one. Links to and from each post will be provided, in case you don&#8217;t follow both blogs.</p>
<p><strong>Ruby</strong></p>
<p>The Ruby community has shown a clear interest in <a href="http://en.wikipedia.org/wiki/Behavior_driven_development">Behavior-Driven Development</a> (BDD), so if you haven&#8217;t taken the plunge yet, check out Ben Emson&#8217;s <a href="http://blog.emson.co.uk/2008/06/understanding-rspec-stories-a-tutorial/">introduction to RSpec Stories</a>. Those who&#8217;re already well versed with RSpec, will enjoy an article by another Ben, in which RSpec&#8217;s <span class="caps">DSL</span> internals are explained in detail so as to cover an example of creating macros with RSpec.</p>
<p>The Pragmatic Programmers published a series of screencasts about <a href="http://www.pragprog.com/screencasts/v-dtrubyom/the-ruby-object-model-and-metaprogramming">The Ruby Object Model and Metaprogramming</a>. So far they&#8217;ve received <a href="http://www.rubyinside.com/ruby-screencasts-oop-metaprogramming-dave-thomas-920.html">glowing reviews</a>, including <a href="http://antoniocangiano.com/2008/06/12/review-of-the-ruby-object-model-and-metaprogramming/">my own</a>, hence I highly recommend that you evaluate them.</p>
<p>A couple of weeks ago <a href="http://antoniocangiano.com/2008/06/01/help-me-create-the-ruby-benchmark-suite/">I announced</a> the creation of a <a href="http://github.com/acangiano/ruby-benchmark-suite/tree/master">Ruby Benchmark Suite</a> project. The next shootout will take place starting from the 24th and I should be able to get the results up on this blog by the 30th of this month.</p>
<p>While working on modifying his RX Ruby Tokenizer to be included in the Ruby Benchmark Suite, Tim Bray <a href="http://www.tbray.org/ongoing/When/200x/2008/06/10/RX-Work">reported a few considerations</a> on the sad status of <span class="caps">REXML</span> and Ruby 1.9. It&#8217;s definitely an interesting read, and it&#8217;s important to increase the awareness about the current pains of working with Ruby 1.9 and <span class="caps">REXML</span>.</p>
<p>Yesterday, Tim also had a post titled <a href="http://www.tbray.org/ongoing/When/200x/2008/06/15/Deletionist-Morons">Deletionist Morons</a> about the controversy surrounding the proposed deletion of <a href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff">Why the lucky stiff&#8217;s wikipedia entry</a>. The Ruby community at large vouched for Why, who is clearly one of its biggest, and definitely most original, contributors.</p>
<p>Finally, the fun Ruby article award of the week goes to Ilya Grigorik for his <a href="http://www.igvita.com/2008/06/08/tumblr-rmagick-and-a-photo-frame/">Tumblr, RMagick and a Photo Frame!</a></p>
<p><strong><span class="caps">ALT</span>.rb</strong></p>
<p>RailConf&#8217;s presentation regarding MagLev has been an attention grabber in the world of alternative Ruby implementations. A video of <a href="http://www.vimeo.com/1147409">Avi Bryant&#8217;s demo</a> is now available online, as well as a somewhat older <a href="http://www.infoq.com/news/2008/06/bryant-maglev-ruby-gemstone">interview with InfoQ</a>. You can read <a href="http://www.chadfowler.com/2008/6/5/maglev">Chad Fowler&#8217;s take</a> as well as <a href="http://antoniocangiano.com/2008/05/31/maglev-rocks/">mine</a>.</p>
<p><a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/304264">MacRuby 0.2 was released</a> about 10 days ago. For those not familiar with this project, it&#8217;s an Ojective-C based implementation of Ruby 1.9 for Mac <span class="caps">OS X</span>. The general idea is to have a Ruby version that lets you write Mac applications that perform reasonably well. In the upcoming shootout we&#8217;ll be testing this early release as well.</p>
<p>Those of you still working in Java, but interested in the possibility of using Ruby&#8217;s testing tools and frameworks, should pay attention to the <a href="http://ola-bini.blogspot.com/2008/06/jtestr-03-released.html">release of JtestR 0.3</a>. As you can imagine, this works thanks to JRuby&#8217;s interoperability capabilities with Java. If this alternative Ruby implementation for the <span class="caps">JVM</span> appeals to you, you should probably also read <a href="http://java.dzone.com/articles/discussing-jruby-with-thomas-e">Thomas Enebo&#8217;s interview</a> about the future of JRuby. Speaking of interoperability, at Tech Ed (that&#8217;s a Microsoft event), John Lam demonstrated <a href="http://www.iunknown.com/2008/06/ironruby-and-aspnet-mvc.html">a cool prototype</a> for the integration of IronRuby and <span class="caps">ASP</span>.NET <span class="caps">MVC</span>.</p>
<p>Readers interested in contributing to Rubinius, should take a look at <a href="http://adam.blog.heroku.com/past/2008/6/12/quickstart_to_hacking_rubinius/">this write-up</a> about getting started with hacking on Rubinius.</p>
<p><strong>Web Frameworks</strong></p>
<p>At the latest Toronto Rails night (which I didn&#8217;t attend, but I soon will be as I&#8217;m moving downtown), Rowan Hick presented Merb, and has now made <a href="http://work.rowanhick.com/2008/06/11/toronto-rails-night-merb-presentation/">his presentation</a><br />
 available online. Speaking of Merb, <a href="http://express.engineyard.com/">Engine Yard Express</a> is a new free product that lets you try out an Engine Yard &#8220;slice&#8221; wrapped up in a VMware image, and both Merb and Rails are supported.</p>
<p>The 2008.06 version of Ramaze was released last week. Aside from switching from a numeric release scheme to a date-based one (which I personally like much more), this is a major release that introduces over 450 patches and a few changes to the internal <span class="caps">API</span>.</p>
<p>To keep the good times rolling, the first edition of <a href="http://weblog.rubyonrails.org/2008/6/16/this-week-in-rails-june-16-2008">This Week in Rails</a> is available on the official Rails blog.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://programmingzen.com/2008/06/16/this-week-in-ruby-june-16-2008/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>This Week in Ruby (May 29, 2008)</title>
		<link>http://programmingzen.com/2008/05/29/this-week-in-ruby-may-29-2008/</link>
		<comments>http://programmingzen.com/2008/05/29/this-week-in-ruby-may-29-2008/#comments</comments>
		<pubDate>Thu, 29 May 2008 23:54:44 +0000</pubDate>
		<dc:creator>Antonio Cangiano</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Merb]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[This Week in Ruby]]></category>
		<category><![CDATA[datamapper]]></category>
		<category><![CDATA[ironruby]]></category>
		<category><![CDATA[mack]]></category>
		<category><![CDATA[mod_rails]]></category>
		<category><![CDATA[purexml]]></category>
		<category><![CDATA[railsconf]]></category>
		<category><![CDATA[screencast]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://antoniocangiano.com/?p=183</guid>
		<description><![CDATA[This is the 9th episode of This Week in Ruby, please consider subscribing to my feed so as to not miss any weekly installments. Ruby Two days ago JRuby 1.1.2 was released. Amongst several bug fixes and improvements, this release is characterized by a focus on performances. Startup time, threading, method calling and YAML symbol [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><em>This is the 9th episode of This Week in Ruby, please consider <a href="http://feeds.feedburner.com/ZenAndTheArtOfRubyProgramming">subscribing to my feed</a> so as to not miss any weekly installments.</em></p>
<p><strong>Ruby</strong></p>
<p>Two days ago <a href="http://docs.codehaus.org/display/JRUBY/2008/05/27/JRuby+1.1.2+Released">JRuby 1.1.2</a> was released. Amongst several bug fixes and improvements, this release is characterized by a focus on performances. Startup time, threading, method calling and YAML symbol parsing have all been drastically improved.</p>
<p>Huw Collingbourne of <a href="http://www.sapphiresteel.com">SapphireSteel</a>, <a href="http://www.sapphiresteel.com/The-Book-Of-Ruby-free-in-depth">has announced</a> that he&#8217;ll be releasing a complete book on Ruby, chapter by chapter, free of charge online. After reading <a href="http://www.sapphiresteel.com/The-Book-Of-Ruby">the first chapter,</a> I can attest that it&#8217;s excellent. Keep an eye on it, as new chapters get added.</p>
<p>The Pragmatic Programmers put out a series of screencasts for sale. The most relevant series for Ruby programmers is <a href="http://pragprog.com/screencasts/v-rbar/everyday-active-record">Everyday Active Record</a>. The first two episodes (a half an hour long, each) are out and can be purchased for just $5 a piece. The preview &mdash; and Ryan Bates&#8217;s reputation &mdash; lead me to believe that they are entirely worth their very reasonable sticker price. Speaking of screencasts, a new one about merb-slices was released <a href="http://merbunity.com/screencasts/1" title="17.9MB">on Merbunity</a>, check it out if you&#8217;re into Merb.</p>
<p>There were two important releases last week, <a href="http://www.mackframework.com/2008/05/21/release-055/">Mack 0.5.5</a> &mdash; which features a new rendering engine with support for Haml and Markaby &mdash; and <a href="http://datamapper.org/">DataMapper 0.9</a>, a major reworking of the <span class="caps">ORM</span>. A third release, which is perhaps just as welcomed, was launched by _Why who included <a href="http://hackety.org/2008/05/22/theImageBlockAtTheBottomOfShoes.html">a few graphical improvements</a> for Shoes, his <span class="caps">GUI</span> application toolkit. Definitely neat stuff, which I invite you to take a look at if you&#8217;re working on a Mac.</p>
<p>Peter Cooper published <a href="http://www.rubyinside.com/21-ruby-tricks-902.html">21 Ruby Tricks You Should Be Using In Your Own Code</a>. You probably know already most of the common ones at least, but they&#8217;re quick and fun, so if you haven&#8217;t checked out the post yet take a moment and do so. Other must-read tutorials and articles were <a href="http://redartisan.com/2008/5/18/dtrace-ruby">Ruby &#38;&#38; DTrace!</a> (really neat results), <a href="http://www.igvita.com/2008/05/27/ruby-eventmachine-the-speed-demon/">Ruby EventMachine &#8211; The Speed Demon</a> by one of my favorite Ruby bloggers, and <a href="http://benchcoach.com/papers/scraping">Will&#8217;s Guide to Mashing-up Remote Databases using Page Scraping</a>.</p>
<p>In a post made a couple of days ago, Robert Fischer opened up a can of worms by bringing up the issue of Ruby and <span class="caps">XML</span> libraries. As most of you know <span class="caps">REXML</span> is far from being issue-free (performance <em>in primis</em>), and in <a href="http://enfranchisedmind.com/blog/2008/05/27/the-status-of-rubys-libxml/">The Status of Ruby&#8217;s libxml</a> Robert uncovers that the author of LibXml Ruby is unable to actively pursue the development of his extension. This issue concerns me, but if I&#8217;m working with databases, I prefer to take advantage of <a href="http://www-306.ibm.com/software/data/db2/express/download.html"><span class="caps">DB2</span> Express-C</a> &#8217;s fantastic <a href="http://www.redbooks.ibm.com/abstracts/sg247315.html?Open">pureXML</a> features, which give me the sort of speed, flexibility and stability that I won&#8217;t find in a Ruby library anytime soon.</p>
<p>Before highlighting some of the news from Rails-land, I wanted to inform you that a new version of <a href="http://antoniocangiano.com/2007/12/03/the-great-ruby-shootout/">The Great Ruby Shootout</a> will surface in June, as I intend to test a couple of special new entries.</p>
<p><strong>Rails</strong></p>
<p>Today, <a href="http://en.oreilly.com/rails2008/public/content/home">RailsConf 2008</a> started and it certainly stands a great chance of being dubbed an exhilarating event. A few people enquired to see if they could meet me there, but unfortunately I couldn&#8217;t make it. Chances are that you&#8217;re reading this post from RailsConf. If that&#8217;s the case, say hi for me and don&#8217;t forget to visit the nice fellas from <a href="http://engineyard.com">Engine Yard</a>, <a href="http://en.oreilly.com/rails2008/public/schedule/detail/4345">Morph</a> (my sponsor), <a href="http://phusion.nl">Phusion</a> and <a href="http://en.oreilly.com/rails2008/public/schedule/detail/4351">GemStone</a>. Oh and also, feel free to pass around the url of this entry. <img src='http://programmingzen.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Rails 2.1 <span class="caps">RC1</span> is out, so you&#8217;ll find this article on <a href="http://blog.assaydepot.com/2008/5/23/upgrade-to-rails-2-1-0_rc1">upgrading to Rails 2.1.0_RC1</a> useful. Fabio Akita released a new version of his popular tutorials, Rolling with Rails 2.1 (<a href="http://www.akitaonrails.com/2008/5/25/rolling-with-rails-2-1-the-first-full-tutorial-part-1">part 1</a> and <a href="http://www.akitaonrails.com/2008/5/26/rolling-with-rails-2-1-the-first-full-tutorial-part-2">part 2</a>). And if you are looking for an advanced authentication/authorization system for Rails 2, take a gander at <a href="http://lockdown.rubyforge.org/">Lockdown on RubyForge</a>.</p>
<p>My friends at SeeSaw implemented a series of <a href="http://code.google.com/p/rails-widgets/">Rails Widgets</a> which can easily be installed as a Rails plugin. Feel free to use them and/or contribute, in order to add further support for simplifying and reusing common UI elements. Speaking of shiny things, check out this <a href="http://azizash.deviantart.com/art/Ruby-on-Rails-icon-pack-81755219">Ruby on Rails icon pack</a>; very pleasing to the eye, in my opinion.</p>
<p>RubyInside published a list of <a href="http://www.rubyinside.com/28_mod_rails_and_passenger_resources-899.html">28 mod_rails / Passenger Resources To Help You Deploy Rails Applications Faster</a>. As <span class="caps">DHH</span> forecasted, &#8220;this could definitely become very popular, very fast <img src='http://programmingzen.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> &#8221;.</p>
<p>New Relic released their RPM solution for monitoring and improving the performances of Rails applications to the general public. You can <a href="http://newrelic.com/get-RPM.html">get it here</a>.</p>
<p>And finally, some great news just came in, <a href="http://twitter.com/john_lam/statuses/822070470">IronRuby is running unmodified Rails</a>. &#8220;Excellent&#8221; (said in Montgomery Burns&#8217; voice, complete with characteristic hand gesture).</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://programmingzen.com/2008/05/29/this-week-in-ruby-may-29-2008/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>This Week in Ruby (May 12, 2008)</title>
		<link>http://programmingzen.com/2008/05/12/this-week-in-ruby-may-12-2008/</link>
		<comments>http://programmingzen.com/2008/05/12/this-week-in-ruby-may-12-2008/#comments</comments>
		<pubDate>Mon, 12 May 2008 19:52:42 +0000</pubDate>
		<dc:creator>Antonio Cangiano</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Merb]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[This Week in Ruby]]></category>

		<guid isPermaLink="false">http://antoniocangiano.com/2008/05/12/this-week-in-ruby-may-12-2008/</guid>
		<description><![CDATA[This is the 7th episode of This Week in Ruby, please consider subscribing to my feed so as to not miss any weekly installments. Ruby The tickets for RubyKaigi went on sale yesterday. RubyKaigi is the Japanese equivalent of RubyConf and will take place from the 20th to the 22nd of June. Yehuda Katz blogged [...]
Possibly related posts:<ol>
<li><a href='http://programmingzen.com/2008/04/21/this-week-in-ruby-april-21-2008/' rel='bookmark' title='This Week in Ruby (April 21, 2008)'>This Week in Ruby (April 21, 2008)</a></li>
<li><a href='http://programmingzen.com/2008/04/28/this-week-in-ruby-april-28-2008/' rel='bookmark' title='This Week in Ruby (April 28, 2008)'>This Week in Ruby (April 28, 2008)</a></li>
<li><a href='http://programmingzen.com/2008/05/05/this-week-in-ruby-may-5-2008/' rel='bookmark' title='This Week in Ruby (May 5, 2008)'>This Week in Ruby (May 5, 2008)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><em>This is the 7th episode of This Week in Ruby, please consider <a href="http://feeds.feedburner.com/ZenAndTheArtOfRubyProgramming">subscribing to my feed</a> so as to not miss any weekly installments.</em></p>
<p><strong>Ruby</strong></p>
<p>The tickets for RubyKaigi <a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/301304">went on sale</a> yesterday. RubyKaigi is the Japanese equivalent of RubyConf and will take place from the 20th to the 22nd of June.</p>
<p>Yehuda Katz <a href="http://yehudakatz.com/2008/05/05/best-things-come-in-threes/">blogged about Benchwarmer</a>, which is an improved DSL for doing benchmarks. The repository can be found <a href="http://github.com/wycats/benchwarmer/tree/master">on GitHub</a>.</p>
<p>That mad man, commonly known as <em>why</em>, has released another interesting proof of concept, aptly named <a href="http://github.com/why/unholy/tree/master">Unholy</a>. It&#8217;s a Ruby to PYC converter that aims at compiling Ruby sources to Python bytecode, making it possible to write Ruby code and run it on CPython. Not only that, but with a patched version of <em>decompyle</em>, it&#8217;d be possible to obtain Python source code that could be used, for example, <a href="http://hackety.org/2008/05/05/sneakingRubyThroughGoogleAppEngine.html">on Google App Engine</a>. Don&#8217;t expect to run Rails on mod_python anytime soon, though.</p>
<p>The Rails community may favor Macs, but there is no denying that there exist a huge amount of developers using Ruby and Rails on Windows. As a matter of fact, the One-Click Ruby Installer is the most popular project on <a href="http://rubyforge.org/">RubyForge</a> with almost 2.4 Million downloads, and Instant Rails is not doing too bad either, having surpassed the half a million mark. However, there is now another easy way to get the whole stack that&#8217;s required to run Rails on Windows (also available for Mac and Linux), and it&#8217;s called <a href="http://bitnami.org/stack/rubystack">RubyStack</a>. Unlike InstantRails, this is an actual installer and it includes: Ruby, RubyGems, Rails, MySQL, SQLite, Subversion, ImageMagick, Mongrel, Apache 2.2.8, PHP 5 and phpMyAdmin. The company, BitNami, also recently published <a href="http://bitnami.org/article/howto-windows-rubystack-aptana-radrails-ruby-debug">a tutorial</a> on how to add Aptana RadRails and Ruby Debug to the stack. If you&#8217;ve tried RubyStack, please leave your comments and opinions in the comments section.</p>
<p><strong>Alternative implementations</strong></p>
<p>Adam Fine, of Israel.rb, has a nice Ruby implementation roundup. You can read and comment on it <a href="http://groups.google.com/group/israelrb/browse_thread/thread/cfc8e3fbb63bd3ad">here</a>.</p>
<p>A couple of weeks ago the IronRuby project received a healthy dose of criticism (including my own) within the mailing list. A lack of openness and status updates, made contributions harder and portrayed the project as progressing at a deadly slow pace. I&#8217;m glad to report that the team has reacted in a proactive manner and embraced <a href="http://rubyforge.org/pipermail/ironruby-core/2008-May/thread.html">a more open approach</a> where, for example, code reviews are now published in the ML. IronRuby has changed pace, or at least that&#8217;s the perception, and in an open source project this is also important. Now I&#8217;m confident that we can expect good things from this project. Meanwhile, you can <a href="http://www.ironruby.info/ir/">try IronRuby in your browser</a>, courtesy of <a href="http://www.tkachenko.com/blog/archives/000742.html">Oleg Tkachenko</a>.</p>
<p>You may remember, from a few editions ago, that I mentioned Dan Berger and his fork of the MRI, called Sapphire. DevFi has <a href="http://devfi.com/articles/2008/05/05/devfi-podcast-1-buy-build-fork">an interview with him</a> in which he expresses quite clearly his intentions and rationale behind the decision to fork Ruby. Better support for Ruby on Windows, attention to correctness and testing, improving the standard library and a faster evolution of the language, seem to be the main reasons.</p>
<p>Sticking with the name Sapphire, Huw Collingbourne has <a href="http://www.sapphiresteel.com/The-Sapphire-Language-the-problem">a nice writeup</a> on Multiple Inheritance, modules and mixins. While his language isn&#8217;t a fork of Ruby but rather just inspired by it, Ruby developers will find the article interesting as well, because it covers what Huw perceives as being issues when it comes to Ruby&#8217;s modules.</p>
<p>In JRuby-land, on the heels of Java One, Nick Sieger has <a href="http://blog.nicksieger.com/articles/2008/05/08/introducing-jruby-rack">announced JRuby-Rack</a> which can be used to run Rails, Merb, or any Rack-compatible framework inside a Java application server.</p>
<p><strong>Merb</strong></p>
<p><a href="http://merbivore.org"><img src='http://antoniocangiano.com/wp-content/uploads/2008/05/merb.png' alt='Merb' align="right"/></a>According to <a href="http://metaclass.org/2008/5/10/merb-on-rubinius">this post</a> Merb is running on Rubinius (if we exclude the ORM layer). Both projects are promoted and sponsored by <a href="http://engineyard.com">the same company</a>, so it&#8217;s natural that we&#8217;ll continue to see better integration.</p>
<p>Two new bundles for Merb and DataMapper are finally available for TextMate users. You can download and <a href="http://merbunity.com/news/3">read about them here</a>.</p>
<p>A post by Michael Klishin created quite a bit of controversy. Entitled <a href="http://novemberain.com/2008/5/11/state-of-merb-before-1-0-the-good-the-bad-and-the-ugly">State of Merb on road to 1.0: the good, the bad and the ugly</a>, this kind of status update can be very appealing, as we head towards version 1.0 of Merb. Unfortunately &#8220;the ugly&#8221; in this case is the tone of the post, which made the author appear immature, due to the gratuitous bashing of Rails developers. It is unfortunate that the author of <a href="http://github.com/wycats/merb-core/tree/1a3c12d216439d5db5c7e39468a9723b5e6a7041/docs/merb-core-call-stack-diagram.png?raw=true">this nice mapping of a Merb server&#8217;s boot process</a>, opted to convey his enthusiasm through blind antagonism. Let me reassure you though, that this is not representative of the Merb community as a whole; which is welcoming, definitely enthusiastic, but far from disrespectful of other projects. Merb developers believe in their project and the technical advantages that it offers over Rails, and have no qualms in stating so either. But they do so in a factual manner, as opposed to vague attacks against people who opt for a different framework.</p>
<p><strong>Rails</strong></p>
<p>Through his Twitter account, David <a href="http://twitter.com/d2h/statuses/808936705">announced</a> that &#8220;Rails 2.1 RC1 has been tagged and the gems are on the beta servers&#8221;. Now is an ideal time to test it out. If you need some help, <a href="http://railscasts.com/episodes/105">this screencast</a> should do the trick.</p>
<p>The fourth part of a tutorial on Routing in Rails 2 was recently published. If you haven&#8217;t done so, follow the links to <a href="http://darynholmes.wordpress.com/2008/03/15/beginners-tutorial-routing-in-rails-20-with-rest-part-1-of-n/">part 1</a>, <a href="http://darynholmes.wordpress.com/2008/03/25/beginners-tutorial-routing-in-rails-20-with-rest-part-2-of-n/">2</a>, <a href="http://darynholmes.wordpress.com/2008/04/27/beginners-tutorial-routing-in-rails-20-with-rest-part-3-of-n/">3</a> and <a href="http://darynholmes.wordpress.com/2008/05/11/beginners-tutorial-routing-in-rails-20-with-rest-part-4-of-n/">4</a>.</p>
<p>Emacs fans may be interested in <a href="http://platypope.org/yada/emacs-demo/?zomg=omgwtflolbbq">this screencast</a>, that shows how to use Emacs with Rails. Other interesting highlights this week were: <a href="http://tenderlovemaking.com/2008/05/06/write-your-rails-view-in-javascript/">Write your Rails view in&#8230; JavaScript?</a>, <a href="http://www.missingmethod.com/projects/community_engine/">Community Engine</a> (a Social Networking plugin), the release of <a href="http://almosteffortless.com/2008/05/05/el-dorado-092-group-chat-edition/">El Dorado 0.9.2</a> (which adds a group chat option) and finally <a href="http://caffeinefueled.com/posts/after-create-pimp">after_create :pimp</a>, which automatically pings Google (and possibly other services) once the contents of your Rails app have been updated.</p>
<p><strong>Rails deployment</strong></p>
<p>Ron Valente has <a href="http://sysadminschronicles.com/articles/2008/05/06/ubuntu-8-04-rails-server-using-passenger">a guide</a> on setting up a Rails server through Ubuntu 8.04 using Passenger. While Jim Neath, published <a href="http://jimneath.org/2008/05/10/using-capistrano-with-passenger-mod_rails/">Using Capistrano with Passenger (mod_rails)</a>.</p>
<p>For those interested in cloud computing, I found <a href="http://jaikoo.com/2008/5/9/poor-mans-cdn">this article</a> on how to create a &#8220;poor man&#8217;s&#8221; Content Delivery Network with NGINX, Varnish, Merb and Amazon S3, to be very compelling.</p>
<p>Meanwhile the VC funding spree of Ruby/Rails hosting companies continues, with <a href="http://www.techcrunch.com/2008/05/08/ruby-on-rails-startup-heroku-gets-3-million/">a $3 Million round of financing</a> being handed out to Heroku by Redpoint Ventures.</p>
<p><a href="http://www.amazon.com/gp/product/0978739205?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0978739205"><img src='http://antoniocangiano.com/wp-content/uploads/2008/05/deploying_rails.jpg' alt='Deploying Rails' align="right" /></a>This week, Ezra&#8217;s <a href="http://www.amazon.com/gp/product/0978739205?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0978739205">Deploying Rails Applications: A Step-by-Step Guide</a> finally hit the press. I ordered my copy from Amazon and it shipped yesterday. At about the same time, <a href="http://www.amazon.com/gp/product/0978739221?ie=UTF8&#038;tag=zenruby-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0978739221">Advanced Rails Recipes: 84 New Ways to Build Stunning Rails Apps</a> was published but, at least in my case, hasn&#8217;t shipped yet.</p>
<p><strong>Railscasts 100th Episode Contest</strong></p>
<p>Ryan Bates had a contest for his 100th Episode of <a href="http://railscasts.com">Railscasts</a>. Yesterday night he announced the winners. Congratulations to them and to all of those who participated. What&#8217;s really interesting though is that now there are several hundred Rails tips out there. You can read (and in some cases watch) all of them by following the links <a href="http://railscasts.com/contest">on the contest page</a>.</p>
<p>All this material should be enough to keep you busy until next week. Please feel free to provide comments and feedback on this series.</p>
<p>Possibly related posts:<ol>
<li><a href='http://programmingzen.com/2008/04/21/this-week-in-ruby-april-21-2008/' rel='bookmark' title='This Week in Ruby (April 21, 2008)'>This Week in Ruby (April 21, 2008)</a></li>
<li><a href='http://programmingzen.com/2008/04/28/this-week-in-ruby-april-28-2008/' rel='bookmark' title='This Week in Ruby (April 28, 2008)'>This Week in Ruby (April 28, 2008)</a></li>
<li><a href='http://programmingzen.com/2008/05/05/this-week-in-ruby-may-5-2008/' rel='bookmark' title='This Week in Ruby (May 5, 2008)'>This Week in Ruby (May 5, 2008)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://programmingzen.com/2008/05/12/this-week-in-ruby-may-12-2008/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>This Week in Ruby (April 28, 2008)</title>
		<link>http://programmingzen.com/2008/04/28/this-week-in-ruby-april-28-2008/</link>
		<comments>http://programmingzen.com/2008/04/28/this-week-in-ruby-april-28-2008/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 04:01:55 +0000</pubDate>
		<dc:creator>Antonio Cangiano</dc:creator>
				<category><![CDATA[Merb]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[This Week in Ruby]]></category>

		<guid isPermaLink="false">http://antoniocangiano.com/2008/04/28/this-week-in-ruby-april-28-2008/</guid>
		<description><![CDATA[This is the 5th episode of This Week in Ruby, please consider subscribing to my feed so as to not miss any weekly installments. Rails For some, the greatest Rails news this week was the announcement of a third edition of the Agile Web Development with Rails book. It&#8217;s currently in beta and will be [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p><em>This is the 5th episode of This Week in Ruby, please consider <a href="http://feeds.feedburner.com/ZenAndTheArtOfRubyProgramming">subscribing to my feed</a> so as to not miss any weekly installments.</em></p>
<p><strong>Rails</strong></p>
<p>For some, the greatest Rails news this week was the <a href=" http://antoniocangiano.com/2008/04/24/agile-web-development-with-rails-third-edition/ ">announcement of a third edition</a> of the Agile Web Development with Rails book. It&#8217;s currently in beta and will be finished by October, much to the anticipation of many, I&#8217;m sure.</p>
<p>Another interesting development, this time based on actual code, was announced through a post by Ezra Zygmuntowicz, entitled <a href="http://brainspl.at/articles/2008/04/25/hey-rails-nice-rack">Hey Rails, nice Rack!</a>. Basically, he&#8217;s working on &#8220;porting Merb&#8217;s rack machinery to rails&#8221; and it&#8217;ll eventually be merged with Rails&#8217; core.</p>
<p>Three Rails related articles caught my eye in particular over the last few days. The first is <a href="http://railspikes.com/2008/4/23/5-useful-underused-methods">5 little-known Rails methods</a>. I&#8217;d like to think that most Rails developers already take advantage of them, but if you don&#8217;t, it&#8217;s a good idea to learn about them now. The second is <a href=" http://jimneath.org/2008/04/25/building-a-social-network-site-in-rails/ ">Building a Social Network Site in Rails</a>, which is not a step-by-step guide, but rather a list of useful resources for building such a site. And finally, I liked <a href=" http://www.railway.at/articles/2008/04/24/database-agnostic-database-ignorant ">Database agnostic != database ignorant</a> in which the author provides a very basic intro to SQL joins and indexes. A much needed piece in the Rails community.</p>
<p><strong>Ruby</strong></p>
<p>The big news in this realm is that GitHub has began serving RubyGems. You can follow <a href="http://gems.github.com/">the instructions here,</a> and read <a href=" http://www.akitaonrails.com/2008/4/21/chatting-with-chris-wanstrath-err-the-blog-github ">a nice interview</a> with Chris Wanstrath, too.</p>
<p><a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/299198 ">JRuby 1.1.1 was released</a> and I&#8217;m constantly more impressed by the speed of development of that project. Speaking of which, Charlie Nutter has published an <a href=" http://headius.blogspot.com/2008/04/promise-and-peril-for-alternative-ruby.html ">excellent overview and status update</a> of the various alternative Ruby implementations &#8211; and don&#8217;t miss the video of <a href="http://www.viddler.com/explore/laribee/videos/4/">John Lam&#8217;s presentation</a> on IronRuby&#8217;s status and DLR.</p>
<p>RubyLearning published a guide to <a href="http://rubylearning.com/blog/2008/04/25/yahoo-web-services-in-ruby/ ">Yahoo! Web Services in Ruby</a>. And by the way, the same site is looking for ways to promote their <a href=" http://rubylearning.com/blog/2008/04/22/looking-for-1001-ways-to-promote-my-ruby-ebook/ ">free Ruby eBook</a>.</p>
<p>Three interesting Ruby articles I want to point out are <a href="http://www.infoq.com/articles/ruby-debuggers-survey">A Look at Ruby Debuggers</a> by InfoQ, a tutorial about <a href="http://blog.8thlight.com/articles/2008/04/20/bowled-over-by-rubycocoa ">building Mac apps with RubyCocoa and XCode</a> and a screencast on <a href="http://blip.tv/file/848104/">video transcoding and uploading to Amazon S3</a>. Nice stuff.</p>
<p>In the alternative web frameworks arena, <a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/299643 ">Mack 0.4.7 was released</a> as further proof of the development speed of this project. This week <a href="http://crazycool.co.uk/2008/04/26/announcing-feather">Feather</a> was also announced and it&#8217;s an open source, lightweight blog engine written in Merb.</p>
<p>Until next week&#8230;</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://programmingzen.com/2008/04/28/this-week-in-ruby-april-28-2008/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

