<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://antoniocangiano.com/wp-atom.php">
	<title type="text">Zen and the Art of Programming</title>
	<subtitle type="text">By Antonio Cangiano, Software Engineer &amp; Technical Evangelist at IBM</subtitle>

	<updated>2010-03-05T18:19:09Z</updated>
	<generator uri="http://wordpress.org/" version="2.9.1">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://antoniocangiano.com" />
	<id>http://antoniocangiano.com/feed/atom/</id>
	

			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ZenAndTheArtOfRubyProgramming" /><feedburner:info uri="zenandtheartofrubyprogramming" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>ZenAndTheArtOfRubyProgramming</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
		<author>
			<name>Antonio Cangiano</name>
						<uri>http://antoniocangiano.com</uri>
					</author>
		<title type="html"><![CDATA[Heads up: IBM is looking for top notch student hackers]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/7s1G1ARjaVk/" />
		<id>http://antoniocangiano.com/?p=1124</id>
		<updated>2010-03-05T18:19:09Z</updated>
		<published>2010-03-05T18:18:20Z</published>
		<category scheme="http://antoniocangiano.com" term="Canada" /><category scheme="http://antoniocangiano.com" term="DB2" /><category scheme="http://antoniocangiano.com" term="General" />		<summary type="html"><![CDATA[As a thank you for following my blog, I&#8217;d like to introduce you to what I think is a great opportunity for the right students. My team is looking for two bright students for a 16 month, full-time internship opportunity with IBM.
Aside from being a bright and ambitious student, you should currently be working towards [...]]]></summary>
		<content type="html" xml:base="http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/">&lt;p&gt;As a thank you for &lt;a href="http://feeds2.feedburner.com/ZenAndTheArtOfRubyProgramming"&gt;following&lt;/a&gt; my blog, I&amp;#8217;d like to introduce you to what I think is a great opportunity for the right students. My team is looking for two bright students for a 16 month, full-time internship opportunity with IBM.&lt;/p&gt;
&lt;p&gt;Aside from being a bright and ambitious student, you should currently be working towards a Computer Science degree at any recognized University in the world (and have completed at least 2 years of your degree). You read that right, this opportunity is not limited to Canadian students. We are looking for the most talented students in the world, so as long as you&amp;#8217;re ready to relocate to Toronto for 16 months, and are able to start the internship program in May 2010, we have the means to get you here. The location for this internship will be the Toronto Software Lab, in Markham, Ontario.&lt;/p&gt;
&lt;p&gt;In particular, we are looking for students who are highly skilled in the area of web technologies and who are enthusiastic about cloud computing. This is NOT your run-of-the-mill, boring student job. You&amp;#8217;ll be working with cutting edge technology on high visibility, fast paced projects that involve web technologies, cloud computing, Xp/Agile methodologies, and other related fields. You&amp;#8217;ll be granted ample freedom to express yourself and your programming creativity. Should you be accepted for this well paid (in my opinion) internship program, you will report directly to my manager (a cool, down to earth guy) and I&amp;#8217;ll be your mentor.&lt;/p&gt;
&lt;p&gt;If you fit the criteria described above, please get in touch (cangiano at ca dot ibm dot com) and tell me a bit about yourself. You don&amp;#8217;t need to attach your résumé at this stage, but if you drop me a line, I&amp;#8217;ll be able to provide you with info on how to apply through the official IBM channels. We&amp;#8217;ll take it from there.&lt;/p&gt;
&lt;p&gt;Please note that I do NOT receive any form of compensation for referring you. I&amp;#8217;m just hoping to provide a tiny subset of my readership with what could be a really great opportunity.&lt;/p&gt;
&lt;!-- Social Bookmarks BEGIN --&gt;
&lt;div class="social_bookmark"&gt;
&lt;a&gt;&lt;strong&gt;&lt;em&gt;Bookmark and share:&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;div class="d"&gt;
&lt;br /&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://buzz.yahoo.com/submit?submitUrl=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/&amp;amp;submitHeadline=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers&amp;amp;submitSummary=" rel="nofollow" title="Add to&amp;nbsp;Buzz"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/buzz.png" title="Add to&amp;nbsp;Buzz" alt="Add to&amp;nbsp;Buzz" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/&amp;amp;title=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers" rel="nofollow" title="Add to&amp;nbsp;Del.icio.us"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&amp;nbsp;Del.icio.us" alt="Add to&amp;nbsp;Del.icio.us" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;amp;url=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/&amp;amp;title=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers" rel="nofollow" title="Add to&amp;nbsp;digg"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&amp;nbsp;digg" alt="Add to&amp;nbsp;digg" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/&amp;amp;title=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers" rel="nofollow" title="Add to&amp;nbsp;DotNetKicks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&amp;nbsp;DotNetKicks" alt="Add to&amp;nbsp;DotNetKicks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers&amp;amp;url=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/&amp;amp;title=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers" rel="nofollow" title="Add to&amp;nbsp;DZone"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&amp;nbsp;DZone" alt="Add to&amp;nbsp;DZone" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/" rel="nofollow" title="Add to&amp;nbsp;Facebook"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&amp;nbsp;Facebook" alt="Add to&amp;nbsp;Facebook" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;amp;output=popup&amp;amp;bkmk=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/&amp;amp;title=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers" rel="nofollow" title="Add to&amp;nbsp;Google Bookmarks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&amp;nbsp;Google Bookmarks" alt="Add to&amp;nbsp;Google Bookmarks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.newsvine.com/_wine/save?u=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/&amp;amp;h=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers" rel="nofollow" title="Add to&amp;nbsp;Newsvine"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/newsvine.png" title="Add to&amp;nbsp;Newsvine" alt="Add to&amp;nbsp;Newsvine" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/&amp;amp;title=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers" rel="nofollow" title="Add to&amp;nbsp;reddit"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&amp;nbsp;reddit" alt="Add to&amp;nbsp;reddit" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/&amp;amp;title=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers" rel="nofollow" title="Add to&amp;nbsp;Slashdot"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&amp;nbsp;Slashdot" alt="Add to&amp;nbsp;Slashdot" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/&amp;amp;title=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers" rel="nofollow" title="Add to&amp;nbsp;Stumble Upon"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&amp;nbsp;Stumble Upon" alt="Add to&amp;nbsp;Stumble Upon" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/" rel="nofollow" title="Add to&amp;nbsp;Squidoo"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&amp;nbsp;Squidoo" alt="Add to&amp;nbsp;Squidoo" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/" rel="nofollow" title="Add to&amp;nbsp;SphereIt"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&amp;nbsp;SphereIt" alt="Add to&amp;nbsp;SphereIt" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/" rel="nofollow" title="Add to&amp;nbsp;Technorati"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&amp;nbsp;Technorati" alt="Add to&amp;nbsp;Technorati" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers+@+http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/" rel="nofollow" title="Add to&amp;nbsp;Twitter"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&amp;nbsp;Twitter" alt="Add to&amp;nbsp;Twitter" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/&amp;amp;t=Heads+up%3A+IBM+is+looking+for+top+notch+student+hackers" rel="nofollow" title="Add to&amp;nbsp;Yahoo My Web"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&amp;nbsp;Yahoo My Web" alt="Add to&amp;nbsp;Yahoo My Web" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Social Bookmarks END --&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=7s1G1ARjaVk:Q6BQWmspzZE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=7s1G1ARjaVk:Q6BQWmspzZE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=7s1G1ARjaVk:Q6BQWmspzZE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=7s1G1ARjaVk:Q6BQWmspzZE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=7s1G1ARjaVk:Q6BQWmspzZE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=7s1G1ARjaVk:Q6BQWmspzZE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=7s1G1ARjaVk:Q6BQWmspzZE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=7s1G1ARjaVk:Q6BQWmspzZE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=7s1G1ARjaVk:Q6BQWmspzZE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/7s1G1ARjaVk" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Antonio Cangiano</name>
						<uri>http://antoniocangiano.com</uri>
					</author>
		<title type="html"><![CDATA[DB2 support for Ruby/Rails turns 2.0]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/yz5IOJZ2LCE/" />
		<id>http://antoniocangiano.com/?p=1120</id>
		<updated>2010-01-21T21:03:24Z</updated>
		<published>2010-01-21T21:03:24Z</published>
		<category scheme="http://antoniocangiano.com" term="DB2" /><category scheme="http://antoniocangiano.com" term="Ruby on Rails" />		<summary type="html"><![CDATA[The API development team just released a major version of the ibm_db gem. Detailed installation instructions are available on RubyForge (PDF). Among several improvements, there are three particularly newsworthy features:

Support for Ruby 1.9;
Support for mingw32, used by the latest version of the Ruby installer for Windows;;
Performance and security enhancements through &#8220;automatic&#8221; parameterized queries.

As we approach [...]]]></summary>
		<content type="html" xml:base="http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/">&lt;p&gt;The API development team just released a major version of the &lt;a href="http://rubyforge.org/frs/?group_id=2361&amp;#038;release_id=42388"&gt;ibm_db gem&lt;/a&gt;. Detailed installation instructions are &lt;a href="http://rubyforge.org/docman/view.php/2361/10532/IBM_DB.pdf"&gt;available on RubyForge&lt;/a&gt; (PDF). Among several improvements, there are three particularly newsworthy features:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Support for Ruby 1.9;&lt;/li&gt;
&lt;li&gt;Support for mingw32, used by the latest version of the &lt;a href="http://rubyforge.org/projects/rubyinstaller/"&gt;Ruby installer for Windows;&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Performance and security enhancements through &amp;#8220;automatic&amp;#8221; parameterized queries.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As we approach the release of Rails 3, supporting Ruby 1.9 is becoming more of a necessity. Likewise, the so called &amp;#8220;One-Click installer&amp;#8221; on Windows has been replaced by a current project that uses mingw32, which offers a much needed performance boost on Windows. Having a mingw32 compatible gem is starting to become a requirement for many of our Windows users.&lt;/p&gt;
&lt;p&gt;Finally, DB2 is now the only database that supports prepared statements in ActiveRecord (without changing any of the application&amp;#8217;s code). This has important performance benefits, as I explained in my article &lt;a href="http://www.ibm.com/developerworks/data/library/techarticle/dm-1001db2rubyonrailsapps/index.html"&gt;&lt;em&gt;Improve the security and performance of DB2 Ruby on Rails applications using parameterized queries&lt;/em&gt;&lt;/a&gt;, which was published today by developerWorks.&lt;/p&gt;
&lt;!-- Social Bookmarks BEGIN --&gt;
&lt;div class="social_bookmark"&gt;
&lt;a&gt;&lt;strong&gt;&lt;em&gt;Bookmark and share:&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;div class="d"&gt;
&lt;br /&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://buzz.yahoo.com/submit?submitUrl=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/&amp;amp;submitHeadline=DB2+support+for+Ruby%2FRails+turns+2.0&amp;amp;submitSummary=" rel="nofollow" title="Add to&amp;nbsp;Buzz"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/buzz.png" title="Add to&amp;nbsp;Buzz" alt="Add to&amp;nbsp;Buzz" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/&amp;amp;title=DB2+support+for+Ruby%2FRails+turns+2.0" rel="nofollow" title="Add to&amp;nbsp;Del.icio.us"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&amp;nbsp;Del.icio.us" alt="Add to&amp;nbsp;Del.icio.us" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;amp;url=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/&amp;amp;title=DB2+support+for+Ruby%2FRails+turns+2.0" rel="nofollow" title="Add to&amp;nbsp;digg"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&amp;nbsp;digg" alt="Add to&amp;nbsp;digg" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/&amp;amp;title=DB2+support+for+Ruby%2FRails+turns+2.0" rel="nofollow" title="Add to&amp;nbsp;DotNetKicks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&amp;nbsp;DotNetKicks" alt="Add to&amp;nbsp;DotNetKicks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=DB2+support+for+Ruby%2FRails+turns+2.0&amp;amp;url=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/&amp;amp;title=DB2+support+for+Ruby%2FRails+turns+2.0" rel="nofollow" title="Add to&amp;nbsp;DZone"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&amp;nbsp;DZone" alt="Add to&amp;nbsp;DZone" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/" rel="nofollow" title="Add to&amp;nbsp;Facebook"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&amp;nbsp;Facebook" alt="Add to&amp;nbsp;Facebook" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;amp;output=popup&amp;amp;bkmk=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/&amp;amp;title=DB2+support+for+Ruby%2FRails+turns+2.0" rel="nofollow" title="Add to&amp;nbsp;Google Bookmarks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&amp;nbsp;Google Bookmarks" alt="Add to&amp;nbsp;Google Bookmarks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.newsvine.com/_wine/save?u=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/&amp;amp;h=DB2+support+for+Ruby%2FRails+turns+2.0" rel="nofollow" title="Add to&amp;nbsp;Newsvine"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/newsvine.png" title="Add to&amp;nbsp;Newsvine" alt="Add to&amp;nbsp;Newsvine" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/&amp;amp;title=DB2+support+for+Ruby%2FRails+turns+2.0" rel="nofollow" title="Add to&amp;nbsp;reddit"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&amp;nbsp;reddit" alt="Add to&amp;nbsp;reddit" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/&amp;amp;title=DB2+support+for+Ruby%2FRails+turns+2.0" rel="nofollow" title="Add to&amp;nbsp;Slashdot"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&amp;nbsp;Slashdot" alt="Add to&amp;nbsp;Slashdot" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/&amp;amp;title=DB2+support+for+Ruby%2FRails+turns+2.0" rel="nofollow" title="Add to&amp;nbsp;Stumble Upon"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&amp;nbsp;Stumble Upon" alt="Add to&amp;nbsp;Stumble Upon" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/" rel="nofollow" title="Add to&amp;nbsp;Squidoo"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&amp;nbsp;Squidoo" alt="Add to&amp;nbsp;Squidoo" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/" rel="nofollow" title="Add to&amp;nbsp;SphereIt"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&amp;nbsp;SphereIt" alt="Add to&amp;nbsp;SphereIt" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/" rel="nofollow" title="Add to&amp;nbsp;Technorati"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&amp;nbsp;Technorati" alt="Add to&amp;nbsp;Technorati" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+DB2+support+for+Ruby%2FRails+turns+2.0+@+http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/" rel="nofollow" title="Add to&amp;nbsp;Twitter"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&amp;nbsp;Twitter" alt="Add to&amp;nbsp;Twitter" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/&amp;amp;t=DB2+support+for+Ruby%2FRails+turns+2.0" rel="nofollow" title="Add to&amp;nbsp;Yahoo My Web"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&amp;nbsp;Yahoo My Web" alt="Add to&amp;nbsp;Yahoo My Web" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Social Bookmarks END --&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=yz5IOJZ2LCE:N9BW953wJQM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=yz5IOJZ2LCE:N9BW953wJQM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=yz5IOJZ2LCE:N9BW953wJQM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=yz5IOJZ2LCE:N9BW953wJQM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=yz5IOJZ2LCE:N9BW953wJQM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=yz5IOJZ2LCE:N9BW953wJQM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=yz5IOJZ2LCE:N9BW953wJQM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=yz5IOJZ2LCE:N9BW953wJQM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=yz5IOJZ2LCE:N9BW953wJQM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/yz5IOJZ2LCE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://antoniocangiano.com/2010/01/21/db2-support-for-rubyrails-turns-2-0/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Antonio Cangiano</name>
						<uri>http://antoniocangiano.com</uri>
					</author>
		<title type="html"><![CDATA[Grab DB2 Express-C 9.7.1 now and join the DB2Night Show]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/ghKFL_vi07I/" />
		<id>http://antoniocangiano.com/?p=1118</id>
		<updated>2009-12-03T18:42:25Z</updated>
		<published>2009-12-03T18:42:25Z</published>
		<category scheme="http://antoniocangiano.com" term="DB2" />		<summary type="html"><![CDATA[IBM just released DB2 Express-C 9.7.1 (aka DB2 Express-C 9.7 FixPack 1). This version includes a long list of enhancements. Don&#8217;t forget to download and install it; as per its previous versions, it&#8217;s entirely free of charge.
You can grab it directly from here:


DB2 Express-C for Windows


DB2 Express-C for Windows x86-64


DB2 Express-C for Linux


DB2 Express-C for [...]]]></summary>
		<content type="html" xml:base="http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/">&lt;p&gt;IBM just released DB2 Express-C 9.7.1 (aka DB2 Express-C 9.7 FixPack 1). This version includes &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.wn.doc/doc/c0056050.html"&gt;a long list of enhancements&lt;/a&gt;. Don&amp;#8217;t forget to download and install it; as per its previous versions, it&amp;#8217;s entirely free of charge.&lt;/p&gt;
&lt;p&gt;You can grab it directly from here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.ibm.com/services/forms/preLogin.do?source=swg-db2expressc&amp;#038;S_PKG=dlwin32&amp;#038;S_CMP=ECDDWW01&amp;#038;S_TACT=ACDB201"&gt;DB2 Express-C for Windows&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.ibm.com/services/forms/preLogin.do?source=swg-db2expressc&amp;#038;S_PKG=dlwin64&amp;#038;S_CMP=ECDDWW01&amp;#038;S_TACT=ACDB201"&gt;DB2 Express-C for Windows x86-64&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.ibm.com/services/forms/preLogin.do?source=swg-db2expressc&amp;#038;S_PKG=dllinux32&amp;#038;S_CMP=ECDDWW01&amp;#038;S_TACT=ACDB201"&gt;DB2 Express-C for Linux&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.ibm.com/services/forms/preLogin.do?source=swg-db2expressc&amp;#038;S_PKG=dllinux64&amp;#038;S_CMP=ECDDWW01&amp;#038;S_TACT=ACDB201"&gt;DB2 Express-C for Linux x86-64&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.ibm.com/services/forms/preLogin.do?source=swg-db2expressc&amp;#038;S_PKG=dllinuxpower&amp;#038;S_CMP=ECDDWW01&amp;#038;S_TACT=ACDB201"&gt;DB2 Express-C for Linux on POWER&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.ibm.com/services/forms/preLogin.do?source=swg-db2expressc&amp;#038;S_PKG=dlsun&amp;#038;S_CMP=ECDDWW01&amp;#038;S_TACT=ACDB201"&gt;DB2 Express-C for Solaris x86-64&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The DB2Night Show&lt;/h3&gt;
&lt;p&gt;While we are on the subject, I want to mention a great new independent initiative called the DB2Night Show. In the words of its organizers:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The DB2Night Show has the simple mission of building a fun, interactive community around DB2 LUW. Each episode will include fun stuff, education, tips, and special guests. Guests will range from industry experts to &amp;#8220;Joe the DBA&amp;#8221;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The first &lt;a href="http://www.dbisoftware.com/db2nightshow/"&gt;six episodes&lt;/a&gt; have been wonderful, and the seventh one, which is about a comparison of DB2 Express-C with other free versions like SQL Server, as well as Cloud Computing, will air tomorrow.&lt;/p&gt;
&lt;p&gt;You can reserve your free virtual seat for Friday, December 4, 2009 at 9am PST/ 10 am CST / 11 am EST, &lt;a href="https://www2.gotomeeting.com/register/367457411"&gt;here&lt;/a&gt;. Even if you can&amp;#8217;t make it, register anyway, so you&amp;#8217;ll have access to replays. Every participant who attends will receive a $50 voucher to use for the Amazon EC2 cloud. Not only that, but one lucky, randomly selected attendee will also receive an Amazon.com gift certificate. With the holiday season coming up, that could come in handy. &lt;img src='http://antoniocangiano.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;!-- Social Bookmarks BEGIN --&gt;
&lt;div class="social_bookmark"&gt;
&lt;a&gt;&lt;strong&gt;&lt;em&gt;Bookmark and share:&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;div class="d"&gt;
&lt;br /&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://buzz.yahoo.com/submit?submitUrl=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/&amp;amp;submitHeadline=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show&amp;amp;submitSummary=" rel="nofollow" title="Add to&amp;nbsp;Buzz"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/buzz.png" title="Add to&amp;nbsp;Buzz" alt="Add to&amp;nbsp;Buzz" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/&amp;amp;title=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show" rel="nofollow" title="Add to&amp;nbsp;Del.icio.us"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&amp;nbsp;Del.icio.us" alt="Add to&amp;nbsp;Del.icio.us" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;amp;url=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/&amp;amp;title=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show" rel="nofollow" title="Add to&amp;nbsp;digg"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&amp;nbsp;digg" alt="Add to&amp;nbsp;digg" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/&amp;amp;title=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show" rel="nofollow" title="Add to&amp;nbsp;DotNetKicks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&amp;nbsp;DotNetKicks" alt="Add to&amp;nbsp;DotNetKicks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show&amp;amp;url=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/&amp;amp;title=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show" rel="nofollow" title="Add to&amp;nbsp;DZone"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&amp;nbsp;DZone" alt="Add to&amp;nbsp;DZone" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/" rel="nofollow" title="Add to&amp;nbsp;Facebook"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&amp;nbsp;Facebook" alt="Add to&amp;nbsp;Facebook" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;amp;output=popup&amp;amp;bkmk=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/&amp;amp;title=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show" rel="nofollow" title="Add to&amp;nbsp;Google Bookmarks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&amp;nbsp;Google Bookmarks" alt="Add to&amp;nbsp;Google Bookmarks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.newsvine.com/_wine/save?u=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/&amp;amp;h=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show" rel="nofollow" title="Add to&amp;nbsp;Newsvine"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/newsvine.png" title="Add to&amp;nbsp;Newsvine" alt="Add to&amp;nbsp;Newsvine" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/&amp;amp;title=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show" rel="nofollow" title="Add to&amp;nbsp;reddit"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&amp;nbsp;reddit" alt="Add to&amp;nbsp;reddit" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/&amp;amp;title=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show" rel="nofollow" title="Add to&amp;nbsp;Slashdot"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&amp;nbsp;Slashdot" alt="Add to&amp;nbsp;Slashdot" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/&amp;amp;title=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show" rel="nofollow" title="Add to&amp;nbsp;Stumble Upon"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&amp;nbsp;Stumble Upon" alt="Add to&amp;nbsp;Stumble Upon" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/" rel="nofollow" title="Add to&amp;nbsp;Squidoo"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&amp;nbsp;Squidoo" alt="Add to&amp;nbsp;Squidoo" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/" rel="nofollow" title="Add to&amp;nbsp;SphereIt"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&amp;nbsp;SphereIt" alt="Add to&amp;nbsp;SphereIt" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/" rel="nofollow" title="Add to&amp;nbsp;Technorati"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&amp;nbsp;Technorati" alt="Add to&amp;nbsp;Technorati" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show+@+http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/" rel="nofollow" title="Add to&amp;nbsp;Twitter"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&amp;nbsp;Twitter" alt="Add to&amp;nbsp;Twitter" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/&amp;amp;t=Grab+DB2+Express-C+9.7.1+now+and+join+the+DB2Night+Show" rel="nofollow" title="Add to&amp;nbsp;Yahoo My Web"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&amp;nbsp;Yahoo My Web" alt="Add to&amp;nbsp;Yahoo My Web" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Social Bookmarks END --&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=ghKFL_vi07I:-mVfxEPXfwg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=ghKFL_vi07I:-mVfxEPXfwg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=ghKFL_vi07I:-mVfxEPXfwg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=ghKFL_vi07I:-mVfxEPXfwg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=ghKFL_vi07I:-mVfxEPXfwg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=ghKFL_vi07I:-mVfxEPXfwg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=ghKFL_vi07I:-mVfxEPXfwg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=ghKFL_vi07I:-mVfxEPXfwg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=ghKFL_vi07I:-mVfxEPXfwg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/ghKFL_vi07I" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://antoniocangiano.com/2009/12/03/grab-db2-express-c-9-7-1-now-and-join-the-db2night-show/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Antonio Cangiano</name>
						<uri>http://antoniocangiano.com</uri>
					</author>
		<title type="html"><![CDATA[Setup Ruby Enterprise Edition, nginx and Passenger (aka mod_rails) on Ubuntu]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/wQqpbSz3UPQ/" />
		<id>http://antoniocangiano.com/?p=1117</id>
		<updated>2009-11-20T19:21:58Z</updated>
		<published>2009-11-20T19:17:26Z</published>
		<category scheme="http://antoniocangiano.com" term="Quick Tips" /><category scheme="http://antoniocangiano.com" term="Ruby" /><category scheme="http://antoniocangiano.com" term="Ruby on Rails" />		<summary type="html"><![CDATA[The following is a very short guide on setting up Ruby Enterprise Edition (REE), nginx and Passenger, for serving Ruby on Rails applications on Ubuntu. It also includes a few quick and easy optimization tips.
We start with setting up REE (x64), using the .deb file provided by Phusion:

wget http://rubyforge.org/frs/download.php/66163/ruby-enterprise_1.8.7-2009.10_amd64.deb
sudo dpkg -i ruby-enterprise_1.8.7-2009.10_amd64.deb
ruby -v


In output you [...]]]></summary>
		<content type="html" xml:base="http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/">&lt;p&gt;The following is a very short guide on setting up Ruby Enterprise Edition (REE), nginx and Passenger, for serving Ruby on Rails applications on Ubuntu. It also includes a few quick and easy optimization tips.&lt;/p&gt;
&lt;p&gt;We start with setting up REE (x64), using the .deb file provided by Phusion:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;wget http://rubyforge.org/frs/download.php/66163/ruby-enterprise_1.8.7-2009.10_amd64.deb
sudo dpkg -i ruby-enterprise_1.8.7-2009.10_amd64.deb
ruby -v
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;In output you should see &amp;#8220;ruby 1.8.7 (2009-06-12 patchlevel 174)&amp;#8230;&amp;#8221; or similar. If this is the case, good; while you are there, update RubyGems and the installed gems:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;sudo gem update --system
sudo gem update
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Next, you&amp;#8217;ll need to install nginx, which is a really fast web server. The &lt;a href="http://phusion.nl/about.html"&gt;Phusion&lt;/a&gt; team has made it very easy to install, but if you simply follow most instructions found elsewhere, you&amp;#8217;ll get the following error:&lt;/p&gt;
&lt;pre&gt;checking for system md library ... not found
checking for system md5 library ... not found
checking for OpenSSL md5 crypto library ... not found

./configure: error: the HTTP cache module requires md5 functions
from OpenSSL library.  You can either disable the module by using
--without-http-cache option, or install the OpenSSL library in the
system,
or build the OpenSSL library statically from the source with nginx by
using
--with-http_ssl_module --with-openssl=
&lt;path&gt; options.&lt;/pre&gt;
&lt;p&gt;Instead, we are going to install libssl-dev first and then nginx and its Passenger module:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;sudo aptitude install libssl-dev
sudo passenger-install-nginx-module
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Follow the prompt and accept all the defaults (when prompted to chose between 1 and 2, pick 1).&lt;/p&gt;
&lt;p&gt;Before I proceed with the configuration, I like to create an init script and have it boot at startup (the script itself is adapted from one provided by the excellent &lt;a href="http://articles.slicehost.com"&gt;articles at slicehost.com&lt;/a&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;sudo vim /etc/init.d/nginx
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;The content of which needs to be:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;&lt;span class="c"&gt;#! /bin/sh&lt;/span&gt;

&lt;span class="c"&gt;### BEGIN INIT INFO&lt;/span&gt;
&lt;span class="c"&gt;# Provides:          nginx&lt;/span&gt;
&lt;span class="c"&gt;# Required-Start:    $all&lt;/span&gt;
&lt;span class="c"&gt;# Required-Stop:     $all&lt;/span&gt;
&lt;span class="c"&gt;# Default-Start:     2 3 4 5&lt;/span&gt;
&lt;span class="c"&gt;# Default-Stop:      0 1 6&lt;/span&gt;
&lt;span class="c"&gt;# Short-Description: starts the nginx web server&lt;/span&gt;
&lt;span class="c"&gt;# Description:       starts nginx using start-stop-daemon&lt;/span&gt;
&lt;span class="c"&gt;### END INIT INFO&lt;/span&gt;

&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/opt/nginx/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
&lt;span class="nv"&gt;DAEMON&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/opt/nginx/sbin/nginx
&lt;span class="nv"&gt;NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nginx
&lt;span class="nv"&gt;DESC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nginx

&lt;span class="nb"&gt;test&lt;/span&gt; -x &lt;span class="nv"&gt;$DAEMON&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;exit &lt;/span&gt;0

&lt;span class="c"&gt;# Include nginx defaults if available&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -f /etc/default/nginx &lt;span class="o"&gt;]&lt;/span&gt; ; &lt;span class="k"&gt;then&lt;/span&gt;
    . /etc/default/nginx
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="nb"&gt;set&lt;/span&gt; -e

. /lib/lsb/init-functions

&lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$1&amp;quot;&lt;/span&gt; in
  start&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;Starting $DESC: &amp;quot;&lt;/span&gt;
    start-stop-daemon --start --quiet --pidfile /opt/nginx/logs/&lt;span class="nv"&gt;$NAME&lt;/span&gt;.pid &lt;span class="se"&gt;\&lt;/span&gt;
        --exec &lt;span class="nv"&gt;$DAEMON&lt;/span&gt; -- &lt;span class="nv"&gt;$DAEMON_OPTS&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;span class="nb"&gt;    echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$NAME.&amp;quot;&lt;/span&gt;
    ;;
  stop&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;Stopping $DESC: &amp;quot;&lt;/span&gt;
    start-stop-daemon --stop --quiet --pidfile /opt/nginx/logs/&lt;span class="nv"&gt;$NAME&lt;/span&gt;.pid &lt;span class="se"&gt;\&lt;/span&gt;
        --exec &lt;span class="nv"&gt;$DAEMON&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;span class="nb"&gt;    echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$NAME.&amp;quot;&lt;/span&gt;
    ;;
  restart|force-reload&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;Restarting $DESC: &amp;quot;&lt;/span&gt;
    start-stop-daemon --stop --quiet --pidfile &lt;span class="se"&gt;\&lt;/span&gt;
        /opt/nginx/logs/&lt;span class="nv"&gt;$NAME&lt;/span&gt;.pid --exec &lt;span class="nv"&gt;$DAEMON&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;span class="nb"&gt;    &lt;/span&gt;sleep 1
    start-stop-daemon --start --quiet --pidfile &lt;span class="se"&gt;\&lt;/span&gt;
        /opt/nginx/logs/&lt;span class="nv"&gt;$NAME&lt;/span&gt;.pid --exec &lt;span class="nv"&gt;$DAEMON&lt;/span&gt; -- &lt;span class="nv"&gt;$DAEMON_OPTS&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;span class="nb"&gt;    echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$NAME.&amp;quot;&lt;/span&gt;
    ;;
  reload&lt;span class="o"&gt;)&lt;/span&gt;
      &lt;span class="nb"&gt;echo&lt;/span&gt; -n &lt;span class="s2"&gt;&amp;quot;Reloading $DESC configuration: &amp;quot;&lt;/span&gt;
      start-stop-daemon --stop --signal HUP --quiet --pidfile /opt/nginx/logs/&lt;span class="nv"&gt;$NAME&lt;/span&gt;.pid &lt;span class="se"&gt;\&lt;/span&gt;
          --exec &lt;span class="nv"&gt;$DAEMON&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;span class="nb"&gt;      echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;$NAME.&amp;quot;&lt;/span&gt;
      ;;
  status&lt;span class="o"&gt;)&lt;/span&gt;
      status_of_proc -p /opt/nginx/logs/&lt;span class="nv"&gt;$NAME&lt;/span&gt;.pid &lt;span class="s2"&gt;&amp;quot;$DAEMON&amp;quot;&lt;/span&gt; nginx &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;exit &lt;/span&gt;0 &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="nv"&gt;$?&lt;/span&gt;
      ;;
  *&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;N&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/etc/init.d/&lt;span class="nv"&gt;$NAME&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Usage: $N {start|stop|restart|reload|force-reload|status}&amp;quot;&lt;/span&gt; &amp;gt;&amp;amp;2
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
    ;;
&lt;span class="k"&gt;esac&lt;/span&gt;

&lt;span class="nb"&gt;exit &lt;/span&gt;0
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Change its permission and have it startup at boot:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;From now on, you&amp;#8217;ll be able to start, stop and restart nginx with it. Start the server as follows:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;sudo /etc/init.d/nginx start
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Heading over to your server IP with your browser, you should see &amp;#8220;Welcome to nginx!&amp;#8221;. If you do, great, we can move on with the configuration of nginx for your Rails app.&lt;/p&gt;
&lt;p&gt;Edit nginx&amp;#8217; configuration file:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;sudo vim /opt/nginx/conf/nginx.conf
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Adding a server section within the http section, as follows:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;    server &lt;span class="o"&gt;{&lt;/span&gt;
        listen 80;
        server_name example.com;
        root /somewhere/my_rails_app/public;
        passenger_enabled on;
        rails_spawn_method smart;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;The server name can also be a subdomain if you wish (e.g., blog.example.com). It&amp;#8217;s important that you point the root to your Rails&amp;#8217; app public directory.&lt;/p&gt;
&lt;p&gt;The rails_spawn_method directive is very efficient, allowing Passenger to consume less memory per process and speed up the spawning process, whenever your Rails application is not affected by its limitations (for a discussion about this you can read the proper &lt;a href="http://www.modrails.com/documentation/Users%20guide.html#_the_smart_spawning_method"&gt;section in the official guide&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;If you have lots of RAM (e.g., more than 512 MB) on your server, you may want to consider increasing you maximum pool size, with the directive passenger_max_pool_size from its default size of 6. Conversely, if you want to limit the number of processes running at any time and consume less memory on a small VPS (e.g., 128 to 256MB), you can decrease that number down to 2 (or something in that range). (Always test a bunch of configurations to find one that works for you). You can read more about this directive, &lt;a href="http://modrails.com/documentation/Users%20guide%20Nginx.html#PassengerMaxPoolSize"&gt;in the official guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While you are modifying nginx&amp;#8217; configuration, you may also want to increase the worker processes (e.g., to 4, on a typical VPS) and add a few more tweaks (such as enabling gzip compression):&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;&lt;span class="c"&gt;# ...&lt;/span&gt;
http &lt;span class="o"&gt;{&lt;/span&gt;
    passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5;
    passenger_ruby /usr/local/bin/ruby;

    include       mime.types;
    default_type  application/octet-stream;

    access_log  logs/access.log;

    sendfile        on;
    keepalive_timeout  65;
    tcp_nodelay on;

    gzip on;
    gzip_comp_level 2;
    gzip_proxied any;   

    server &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="c"&gt;#...&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;When you are happy with the changes, save the file, and restart nginx:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;sudo /etc/init.d/nginx restart
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;If you wish to restart Passenger in the future, without having to restart the whole web server, you can simply run the following command:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;touch /somewhere/my_rails_app/tmp/restart.txt
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Passenger also provides a few handy monitoring tools. Check them out:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;sudo passenger-status
sudo passenger-memory-stats
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;That&amp;#8217;s it, you are ready to go! I hope that you find these few notes useful.&lt;/p&gt;
&lt;!-- Social Bookmarks BEGIN --&gt;
&lt;div class="social_bookmark"&gt;
&lt;a&gt;&lt;strong&gt;&lt;em&gt;Bookmark and share:&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;div class="d"&gt;
&lt;br /&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://buzz.yahoo.com/submit?submitUrl=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/&amp;amp;submitHeadline=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu&amp;amp;submitSummary=" rel="nofollow" title="Add to&amp;nbsp;Buzz"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/buzz.png" title="Add to&amp;nbsp;Buzz" alt="Add to&amp;nbsp;Buzz" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/&amp;amp;title=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu" rel="nofollow" title="Add to&amp;nbsp;Del.icio.us"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&amp;nbsp;Del.icio.us" alt="Add to&amp;nbsp;Del.icio.us" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;amp;url=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/&amp;amp;title=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu" rel="nofollow" title="Add to&amp;nbsp;digg"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&amp;nbsp;digg" alt="Add to&amp;nbsp;digg" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/&amp;amp;title=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu" rel="nofollow" title="Add to&amp;nbsp;DotNetKicks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&amp;nbsp;DotNetKicks" alt="Add to&amp;nbsp;DotNetKicks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu&amp;amp;url=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/&amp;amp;title=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu" rel="nofollow" title="Add to&amp;nbsp;DZone"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&amp;nbsp;DZone" alt="Add to&amp;nbsp;DZone" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/" rel="nofollow" title="Add to&amp;nbsp;Facebook"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&amp;nbsp;Facebook" alt="Add to&amp;nbsp;Facebook" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;amp;output=popup&amp;amp;bkmk=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/&amp;amp;title=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu" rel="nofollow" title="Add to&amp;nbsp;Google Bookmarks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&amp;nbsp;Google Bookmarks" alt="Add to&amp;nbsp;Google Bookmarks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.newsvine.com/_wine/save?u=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/&amp;amp;h=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu" rel="nofollow" title="Add to&amp;nbsp;Newsvine"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/newsvine.png" title="Add to&amp;nbsp;Newsvine" alt="Add to&amp;nbsp;Newsvine" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/&amp;amp;title=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu" rel="nofollow" title="Add to&amp;nbsp;reddit"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&amp;nbsp;reddit" alt="Add to&amp;nbsp;reddit" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/&amp;amp;title=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu" rel="nofollow" title="Add to&amp;nbsp;Slashdot"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&amp;nbsp;Slashdot" alt="Add to&amp;nbsp;Slashdot" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/&amp;amp;title=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu" rel="nofollow" title="Add to&amp;nbsp;Stumble Upon"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&amp;nbsp;Stumble Upon" alt="Add to&amp;nbsp;Stumble Upon" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/" rel="nofollow" title="Add to&amp;nbsp;Squidoo"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&amp;nbsp;Squidoo" alt="Add to&amp;nbsp;Squidoo" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/" rel="nofollow" title="Add to&amp;nbsp;SphereIt"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&amp;nbsp;SphereIt" alt="Add to&amp;nbsp;SphereIt" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/" rel="nofollow" title="Add to&amp;nbsp;Technorati"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&amp;nbsp;Technorati" alt="Add to&amp;nbsp;Technorati" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu+@+http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/" rel="nofollow" title="Add to&amp;nbsp;Twitter"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&amp;nbsp;Twitter" alt="Add to&amp;nbsp;Twitter" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/&amp;amp;t=Setup+Ruby+Enterprise+Edition%2C+nginx+and+Passenger+%28aka+mod_rails%29+on+Ubuntu" rel="nofollow" title="Add to&amp;nbsp;Yahoo My Web"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&amp;nbsp;Yahoo My Web" alt="Add to&amp;nbsp;Yahoo My Web" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Social Bookmarks END --&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=wQqpbSz3UPQ:1HR6HzAXXb4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=wQqpbSz3UPQ:1HR6HzAXXb4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=wQqpbSz3UPQ:1HR6HzAXXb4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=wQqpbSz3UPQ:1HR6HzAXXb4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=wQqpbSz3UPQ:1HR6HzAXXb4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=wQqpbSz3UPQ:1HR6HzAXXb4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=wQqpbSz3UPQ:1HR6HzAXXb4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=wQqpbSz3UPQ:1HR6HzAXXb4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=wQqpbSz3UPQ:1HR6HzAXXb4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/wQqpbSz3UPQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/#comments" thr:count="6" />
		<link rel="replies" type="application/atom+xml" href="http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/feed/atom/" thr:count="6" />
		<thr:total>6</thr:total>
	<feedburner:origLink>http://antoniocangiano.com/2009/11/20/setup-ruby-enterprise-edition-nginx-and-passenger-aka-mod_rails-on-ubuntu/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Antonio Cangiano</name>
						<uri>http://antoniocangiano.com</uri>
					</author>
		<title type="html"><![CDATA[What is DB2 pureScale?]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/PUUyPyDUKlY/" />
		<id>http://antoniocangiano.com/?p=1112</id>
		<updated>2009-10-21T14:38:20Z</updated>
		<published>2009-10-21T13:00:03Z</published>
		<category scheme="http://antoniocangiano.com" term="DB2" />		<summary type="html"><![CDATA[There are two main types of scalability: vertical and horizontal. Vertical scalability consists of potentiating the hardware specs of a given server. This is typically done by increasing the number (and to a minor extent, speed) of the processors, adding more RAM, and so on. Commodity hardware tends to impose a strong limit on the [...]]]></summary>
		<content type="html" xml:base="http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/">&lt;p&gt;There are two main types of scalability: vertical and horizontal. Vertical scalability consists of potentiating the hardware specs of a given server. This is typically done by increasing the number (and to a minor extent, speed) of the processors, adding more RAM, and so on. Commodity hardware tends to impose a strong limit on the resources that can be augmented. There is only so much that can be stuffed into your typical x64_86 Dell server, even replacing the entire machine with the top of the line model (having the same architecture). For this very reason, many customers opt to purchase more expensive hardware that has the advantage of facilitating vertical scalability, by allowing much more headroom for additional resources. This is why Unix-based solutions like IBM System p + AIX and Sun&amp;#8217;s Solaris + SPARC are common choices in demanding environments.&lt;/p&gt;
&lt;p&gt;For all their merits, even premium hardware solutions can only do so much in terms of vertical scalability. They may postpone the problem, by allowing a large number of processors and a huge amount of RAM to be installed, but they are still not limitless. And that&amp;#8217;s when it becomes cheaper and much more feasible to attempt horizontal scalability, or the process of adding extra servers that share data and the overall system load.&lt;/p&gt;
&lt;p&gt;Commercial databases, particularly DB2, excel at vertical scalability, which incidentally is one of the weakest aspects of open source RDBMS like MySQL. When it comes to horizontal scalability though, even commercial databases tend do struggle a little. Scalability is achieved, but a lot of work is required to configure complex setups involving masters, slaves, replication, failover servers, and so on. Until now.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://antoniocangiano.com/wp-content/uploads/2009/10/pureScale530x160.jpg" alt="DB2 pureScale" /&gt;&lt;/p&gt;
&lt;p&gt;IBM has just introduced a new technology for DB2 called pureScale, which accomplishes three incredible feats:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Horizontal scalability: Virtually unlimited capacity by simply adding new nodes to the cluster.&lt;/li&gt;
&lt;li&gt;Application transparency: No code changes needed.&lt;/li&gt;
&lt;li&gt;Continuos data availability: regardless of which server fails, the system will continue to operate albeit with a proportionally reduced throughput.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;DB2 pureScale applies to DB2 running on Unix (IBM System p running AIX only, for the moment), the same principles and rock solid technology employed by DB2 for z/OS Data Sharing and SYSPLEX. This technology happens to be employed by some of the largest companies in the world and it&amp;#8217;s considered the golden standard when it comes to easily create OLTP database clusters, providing virtually unlimited scalability capabilities.&lt;/p&gt;
&lt;p&gt;You can read more about it &lt;a href="http://freedb2.com/2009/10/10/for-databases-size-does-matter/"&gt;here&lt;/a&gt; and &lt;a href="http://www.ibm.com/developerworks/data/products/db2/purescale/?S_TACT=105AGX11&amp;#038;S_CMP=FP"&gt;here&lt;/a&gt;. If you are going to IOD this year, don&amp;#8217;t forget to attend &lt;a href="http://sample.iod2009.confnav.com/iod2009/webx/sessions/detail.html?id=20090813203706875443000000"&gt;this overview&lt;/a&gt; by one the architects of DB2 pureScale. And even if you can&amp;#8217;t head over to Las Vegas next week, you can still attend online our &lt;a href="https://events.webdialogs.com/portal/wipevents/register.php?id=4e91bbf910&amp;#038;l=en-US"&gt;Chat with the Lab&lt;/a&gt; today at 11:30am EST. Database scalability is a hot topic and this is going to be one of the most popular chats with the lab ever, so &lt;a href="https://events.webdialogs.com/portal/wipevents/register.php?id=4e91bbf910&amp;#038;l=en-US"&gt;register for free now&lt;/a&gt;.&lt;/p&gt;
&lt;!-- Social Bookmarks BEGIN --&gt;
&lt;div class="social_bookmark"&gt;
&lt;a&gt;&lt;strong&gt;&lt;em&gt;Bookmark and share:&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;div class="d"&gt;
&lt;br /&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://buzz.yahoo.com/submit?submitUrl=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/&amp;amp;submitHeadline=What+is+DB2+pureScale%3F&amp;amp;submitSummary=" rel="nofollow" title="Add to&amp;nbsp;Buzz"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/buzz.png" title="Add to&amp;nbsp;Buzz" alt="Add to&amp;nbsp;Buzz" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/&amp;amp;title=What+is+DB2+pureScale%3F" rel="nofollow" title="Add to&amp;nbsp;Del.icio.us"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&amp;nbsp;Del.icio.us" alt="Add to&amp;nbsp;Del.icio.us" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;amp;url=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/&amp;amp;title=What+is+DB2+pureScale%3F" rel="nofollow" title="Add to&amp;nbsp;digg"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&amp;nbsp;digg" alt="Add to&amp;nbsp;digg" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/&amp;amp;title=What+is+DB2+pureScale%3F" rel="nofollow" title="Add to&amp;nbsp;DotNetKicks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&amp;nbsp;DotNetKicks" alt="Add to&amp;nbsp;DotNetKicks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=What+is+DB2+pureScale%3F&amp;amp;url=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/&amp;amp;title=What+is+DB2+pureScale%3F" rel="nofollow" title="Add to&amp;nbsp;DZone"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&amp;nbsp;DZone" alt="Add to&amp;nbsp;DZone" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/" rel="nofollow" title="Add to&amp;nbsp;Facebook"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&amp;nbsp;Facebook" alt="Add to&amp;nbsp;Facebook" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;amp;output=popup&amp;amp;bkmk=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/&amp;amp;title=What+is+DB2+pureScale%3F" rel="nofollow" title="Add to&amp;nbsp;Google Bookmarks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&amp;nbsp;Google Bookmarks" alt="Add to&amp;nbsp;Google Bookmarks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.newsvine.com/_wine/save?u=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/&amp;amp;h=What+is+DB2+pureScale%3F" rel="nofollow" title="Add to&amp;nbsp;Newsvine"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/newsvine.png" title="Add to&amp;nbsp;Newsvine" alt="Add to&amp;nbsp;Newsvine" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/&amp;amp;title=What+is+DB2+pureScale%3F" rel="nofollow" title="Add to&amp;nbsp;reddit"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&amp;nbsp;reddit" alt="Add to&amp;nbsp;reddit" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/&amp;amp;title=What+is+DB2+pureScale%3F" rel="nofollow" title="Add to&amp;nbsp;Slashdot"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&amp;nbsp;Slashdot" alt="Add to&amp;nbsp;Slashdot" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/&amp;amp;title=What+is+DB2+pureScale%3F" rel="nofollow" title="Add to&amp;nbsp;Stumble Upon"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&amp;nbsp;Stumble Upon" alt="Add to&amp;nbsp;Stumble Upon" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/" rel="nofollow" title="Add to&amp;nbsp;Squidoo"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&amp;nbsp;Squidoo" alt="Add to&amp;nbsp;Squidoo" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/" rel="nofollow" title="Add to&amp;nbsp;SphereIt"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&amp;nbsp;SphereIt" alt="Add to&amp;nbsp;SphereIt" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/" rel="nofollow" title="Add to&amp;nbsp;Technorati"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&amp;nbsp;Technorati" alt="Add to&amp;nbsp;Technorati" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+What+is+DB2+pureScale%3F+@+http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/" rel="nofollow" title="Add to&amp;nbsp;Twitter"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&amp;nbsp;Twitter" alt="Add to&amp;nbsp;Twitter" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/&amp;amp;t=What+is+DB2+pureScale%3F" rel="nofollow" title="Add to&amp;nbsp;Yahoo My Web"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&amp;nbsp;Yahoo My Web" alt="Add to&amp;nbsp;Yahoo My Web" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Social Bookmarks END --&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=PUUyPyDUKlY:uGTZTjGVNGY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=PUUyPyDUKlY:uGTZTjGVNGY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=PUUyPyDUKlY:uGTZTjGVNGY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=PUUyPyDUKlY:uGTZTjGVNGY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=PUUyPyDUKlY:uGTZTjGVNGY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=PUUyPyDUKlY:uGTZTjGVNGY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=PUUyPyDUKlY:uGTZTjGVNGY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=PUUyPyDUKlY:uGTZTjGVNGY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=PUUyPyDUKlY:uGTZTjGVNGY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/PUUyPyDUKlY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://antoniocangiano.com/2009/10/21/what-is-db2-purescale/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Antonio Cangiano</name>
						<uri>http://antoniocangiano.com</uri>
					</author>
		<title type="html"><![CDATA[Add code highlighting to your Google Waves]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/L3POKerdLiE/" />
		<id>http://antoniocangiano.com/?p=1110</id>
		<updated>2009-10-20T00:53:46Z</updated>
		<published>2009-10-20T00:53:46Z</published>
		<category scheme="http://antoniocangiano.com" term="General" /><category scheme="http://antoniocangiano.com" term="Quick Tips" />		<summary type="html"><![CDATA[Google Wave is still rough around the edges, but it has a lot of potential in terms of becoming a great collaboration tool. As a developer, your first question will probably be: &#8220;How do I add code highlighting to my waves?&#8221;. The answer is straightforward, however not very easy to find if you google it. [...]]]></summary>
		<content type="html" xml:base="http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/">&lt;p&gt;Google Wave is still rough around the edges, but it has a lot of potential in terms of becoming a great collaboration tool. As a developer, your first question will probably be: &amp;#8220;How do I add code highlighting to my waves?&amp;#8221;. The answer is straightforward, however not very easy to find if you google it. I hope this post will help fellow developers who are experimenting with Google Wave.&lt;/p&gt;
&lt;p&gt;The following steps are required to obtain syntax highlighting for your code:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new wave and add the Syntaxy robot to your wave. Use the wave address: &lt;strong&gt;kasyntaxy@appspot.com&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reply&lt;/strong&gt; to your first message or within it, thereby creating a reply (called &amp;#8220;blip&amp;#8221; in Google lingo).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Specify your code&amp;#8217;s language&lt;/strong&gt;, prefixing the name with a hash and exclamation mark, like #!python or #!ruby.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;At this point, as you type the code in your blip it will be highlighted by the Syntaxy bot as shown in the picture below:&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://antoniocangiano.com/wp-content/uploads/2009/10/wave-syntaxy.png" alt="Highlight code on Google Wave" /&gt;&lt;/p&gt;
&lt;p&gt;More advanced automatic syntax highlighting bots will probably appear as Google Wave progresses, but this one should do the trick for now. On a side note, if you copy and paste code from XCode, the code formatting will be kept in your waves and blips without the need for bots.&lt;/p&gt;
&lt;!-- Social Bookmarks BEGIN --&gt;
&lt;div class="social_bookmark"&gt;
&lt;a&gt;&lt;strong&gt;&lt;em&gt;Bookmark and share:&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;div class="d"&gt;
&lt;br /&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://buzz.yahoo.com/submit?submitUrl=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/&amp;amp;submitHeadline=Add+code+highlighting+to+your+Google+Waves&amp;amp;submitSummary=" rel="nofollow" title="Add to&amp;nbsp;Buzz"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/buzz.png" title="Add to&amp;nbsp;Buzz" alt="Add to&amp;nbsp;Buzz" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/&amp;amp;title=Add+code+highlighting+to+your+Google+Waves" rel="nofollow" title="Add to&amp;nbsp;Del.icio.us"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&amp;nbsp;Del.icio.us" alt="Add to&amp;nbsp;Del.icio.us" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;amp;url=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/&amp;amp;title=Add+code+highlighting+to+your+Google+Waves" rel="nofollow" title="Add to&amp;nbsp;digg"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&amp;nbsp;digg" alt="Add to&amp;nbsp;digg" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/&amp;amp;title=Add+code+highlighting+to+your+Google+Waves" rel="nofollow" title="Add to&amp;nbsp;DotNetKicks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&amp;nbsp;DotNetKicks" alt="Add to&amp;nbsp;DotNetKicks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Add+code+highlighting+to+your+Google+Waves&amp;amp;url=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/&amp;amp;title=Add+code+highlighting+to+your+Google+Waves" rel="nofollow" title="Add to&amp;nbsp;DZone"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&amp;nbsp;DZone" alt="Add to&amp;nbsp;DZone" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/" rel="nofollow" title="Add to&amp;nbsp;Facebook"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&amp;nbsp;Facebook" alt="Add to&amp;nbsp;Facebook" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;amp;output=popup&amp;amp;bkmk=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/&amp;amp;title=Add+code+highlighting+to+your+Google+Waves" rel="nofollow" title="Add to&amp;nbsp;Google Bookmarks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&amp;nbsp;Google Bookmarks" alt="Add to&amp;nbsp;Google Bookmarks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.newsvine.com/_wine/save?u=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/&amp;amp;h=Add+code+highlighting+to+your+Google+Waves" rel="nofollow" title="Add to&amp;nbsp;Newsvine"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/newsvine.png" title="Add to&amp;nbsp;Newsvine" alt="Add to&amp;nbsp;Newsvine" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/&amp;amp;title=Add+code+highlighting+to+your+Google+Waves" rel="nofollow" title="Add to&amp;nbsp;reddit"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&amp;nbsp;reddit" alt="Add to&amp;nbsp;reddit" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/&amp;amp;title=Add+code+highlighting+to+your+Google+Waves" rel="nofollow" title="Add to&amp;nbsp;Slashdot"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&amp;nbsp;Slashdot" alt="Add to&amp;nbsp;Slashdot" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/&amp;amp;title=Add+code+highlighting+to+your+Google+Waves" rel="nofollow" title="Add to&amp;nbsp;Stumble Upon"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&amp;nbsp;Stumble Upon" alt="Add to&amp;nbsp;Stumble Upon" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/" rel="nofollow" title="Add to&amp;nbsp;Squidoo"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&amp;nbsp;Squidoo" alt="Add to&amp;nbsp;Squidoo" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/" rel="nofollow" title="Add to&amp;nbsp;SphereIt"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&amp;nbsp;SphereIt" alt="Add to&amp;nbsp;SphereIt" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/" rel="nofollow" title="Add to&amp;nbsp;Technorati"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&amp;nbsp;Technorati" alt="Add to&amp;nbsp;Technorati" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Add+code+highlighting+to+your+Google+Waves+@+http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/" rel="nofollow" title="Add to&amp;nbsp;Twitter"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&amp;nbsp;Twitter" alt="Add to&amp;nbsp;Twitter" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/&amp;amp;t=Add+code+highlighting+to+your+Google+Waves" rel="nofollow" title="Add to&amp;nbsp;Yahoo My Web"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&amp;nbsp;Yahoo My Web" alt="Add to&amp;nbsp;Yahoo My Web" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Social Bookmarks END --&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=L3POKerdLiE:A4uKnyxxlys:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=L3POKerdLiE:A4uKnyxxlys:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=L3POKerdLiE:A4uKnyxxlys:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=L3POKerdLiE:A4uKnyxxlys:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=L3POKerdLiE:A4uKnyxxlys:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=L3POKerdLiE:A4uKnyxxlys:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=L3POKerdLiE:A4uKnyxxlys:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=L3POKerdLiE:A4uKnyxxlys:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=L3POKerdLiE:A4uKnyxxlys:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/L3POKerdLiE" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://antoniocangiano.com/2009/10/19/add-code-highlighting-to-your-google-waves/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Antonio Cangiano</name>
						<uri>http://antoniocangiano.com</uri>
					</author>
		<title type="html"><![CDATA[Getting MacRuby&#8217;s compiler to work]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/CGgSLe6J-eg/" />
		<id>http://antoniocangiano.com/?p=1107</id>
		<updated>2009-10-08T20:49:32Z</updated>
		<published>2009-10-08T20:45:13Z</published>
		<category scheme="http://antoniocangiano.com" term="Mac" /><category scheme="http://antoniocangiano.com" term="Quick Tips" /><category scheme="http://antoniocangiano.com" term="Ruby" />		<summary type="html"><![CDATA[There is major news in Rubyland today. MacRuby&#8217;s team just released their fist beta of version 0.5 (an experimental, still incomplete version of Ruby), which brings JIT, removal of the dreaded GIL (Global Interpreter Lock), native threads, GCD (Grand Central Dispatch) for multicore computing, and a whole new set of features found in the release [...]]]></summary>
		<content type="html" xml:base="http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/">&lt;p&gt;&lt;img src="http://antoniocangiano.com/wp-content/uploads/2009/10/macruby_logo.png" align="right" alt="MacRuby's logo" /&gt;There is major news in Rubyland today. MacRuby&amp;#8217;s team just released their fist beta of version 0.5 (an experimental, still incomplete version of Ruby), which brings JIT, removal of the dreaded GIL (Global Interpreter Lock), native threads, GCD (Grand Central Dispatch) for multicore computing, and a whole new set of features found in &lt;a href="http://www.macruby.org/blog/2009/10/07/macruby05b1.html"&gt;the release announcement&lt;/a&gt; to the table.&lt;/p&gt;
&lt;p&gt;The most important new feature is the presence of a compiler. That&amp;#8217;s right, thanks to this release, Ruby code can now become highly optimized executable code. How awesome is that? I can sense that you&amp;#8217;re pumped by this news, so why not head over to MacRuby.com and &lt;a href="http://www.macruby.org/downloads.html"&gt;download the installation file&lt;/a&gt; for yourself? After you&amp;#8217;ve done that, the next thing you&amp;#8217;re going to want to do is run a small test like the following:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;macrubyc world_domination.rb -o world_domination
&lt;span class="s1"&gt;Can&amp;#39;t locate program `llc&amp;#39;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Oh noes! llc is a tool that ships with the LLVM (upon which MacRuby is built), however it&amp;#8217;s not included with MacRuby&amp;#8217;s installer (it will be in the future). But fear not my friends, there is a solution:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;svn co -r 82747 https://llvm.org/svn/llvm-project/llvm/trunk llvm-trunk
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;llvm-trunk
&lt;span class="nv"&gt;$ &lt;/span&gt;./configure
&lt;span class="nv"&gt;$ UNIVERSAL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 &lt;span class="nv"&gt;UNIVERSAL_ARCH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;i386 x86_64&amp;quot;&lt;/span&gt; &lt;span class="nv"&gt;ENABLE_OPTIMIZED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 make -j2
&lt;span class="nv"&gt;$ &lt;/span&gt;sudo env &lt;span class="nv"&gt;UNIVERSAL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 &lt;span class="nv"&gt;UNIVERSAL_ARCH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;i386 x86_64&amp;quot;&lt;/span&gt; &lt;span class="nv"&gt;ENABLE_OPTIMIZED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1 make install
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;If your machine does not have 2 cores, remove the -j2 option from the fourth line or adjust the number accordingly.&lt;/p&gt;
&lt;p&gt;The compilation phase may take a couple of centuries, depending on your machine&amp;#8217;s speed, but it should eventually build the LLVM. &lt;img src='http://antoniocangiano.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /&gt;  llc will be placed in your PATH, and you&amp;#8217;ll finally be able to compile Ruby code and obtain an executable to help you carry out your world domination plans.&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;macrubyc world_domination.rb -o world_domination
&lt;span class="nv"&gt;$ &lt;/span&gt;./world_domination
MUAHAHAHAHA!
&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- Social Bookmarks BEGIN --&gt;
&lt;div class="social_bookmark"&gt;
&lt;a&gt;&lt;strong&gt;&lt;em&gt;Bookmark and share:&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;div class="d"&gt;
&lt;br /&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://buzz.yahoo.com/submit?submitUrl=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/&amp;amp;submitHeadline=Getting+MacRuby%26%238217%3Bs+compiler+to+work&amp;amp;submitSummary=" rel="nofollow" title="Add to&amp;nbsp;Buzz"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/buzz.png" title="Add to&amp;nbsp;Buzz" alt="Add to&amp;nbsp;Buzz" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/&amp;amp;title=Getting+MacRuby%26%238217%3Bs+compiler+to+work" rel="nofollow" title="Add to&amp;nbsp;Del.icio.us"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&amp;nbsp;Del.icio.us" alt="Add to&amp;nbsp;Del.icio.us" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;amp;url=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/&amp;amp;title=Getting+MacRuby%26%238217%3Bs+compiler+to+work" rel="nofollow" title="Add to&amp;nbsp;digg"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&amp;nbsp;digg" alt="Add to&amp;nbsp;digg" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/&amp;amp;title=Getting+MacRuby%26%238217%3Bs+compiler+to+work" rel="nofollow" title="Add to&amp;nbsp;DotNetKicks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&amp;nbsp;DotNetKicks" alt="Add to&amp;nbsp;DotNetKicks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Getting+MacRuby%26%238217%3Bs+compiler+to+work&amp;amp;url=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/&amp;amp;title=Getting+MacRuby%26%238217%3Bs+compiler+to+work" rel="nofollow" title="Add to&amp;nbsp;DZone"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&amp;nbsp;DZone" alt="Add to&amp;nbsp;DZone" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/" rel="nofollow" title="Add to&amp;nbsp;Facebook"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&amp;nbsp;Facebook" alt="Add to&amp;nbsp;Facebook" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;amp;output=popup&amp;amp;bkmk=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/&amp;amp;title=Getting+MacRuby%26%238217%3Bs+compiler+to+work" rel="nofollow" title="Add to&amp;nbsp;Google Bookmarks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&amp;nbsp;Google Bookmarks" alt="Add to&amp;nbsp;Google Bookmarks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.newsvine.com/_wine/save?u=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/&amp;amp;h=Getting+MacRuby%26%238217%3Bs+compiler+to+work" rel="nofollow" title="Add to&amp;nbsp;Newsvine"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/newsvine.png" title="Add to&amp;nbsp;Newsvine" alt="Add to&amp;nbsp;Newsvine" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/&amp;amp;title=Getting+MacRuby%26%238217%3Bs+compiler+to+work" rel="nofollow" title="Add to&amp;nbsp;reddit"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&amp;nbsp;reddit" alt="Add to&amp;nbsp;reddit" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/&amp;amp;title=Getting+MacRuby%26%238217%3Bs+compiler+to+work" rel="nofollow" title="Add to&amp;nbsp;Slashdot"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&amp;nbsp;Slashdot" alt="Add to&amp;nbsp;Slashdot" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/&amp;amp;title=Getting+MacRuby%26%238217%3Bs+compiler+to+work" rel="nofollow" title="Add to&amp;nbsp;Stumble Upon"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&amp;nbsp;Stumble Upon" alt="Add to&amp;nbsp;Stumble Upon" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/" rel="nofollow" title="Add to&amp;nbsp;Squidoo"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&amp;nbsp;Squidoo" alt="Add to&amp;nbsp;Squidoo" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/" rel="nofollow" title="Add to&amp;nbsp;SphereIt"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&amp;nbsp;SphereIt" alt="Add to&amp;nbsp;SphereIt" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/" rel="nofollow" title="Add to&amp;nbsp;Technorati"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&amp;nbsp;Technorati" alt="Add to&amp;nbsp;Technorati" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Getting+MacRuby%26%238217%3Bs+compiler+to+work+@+http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/" rel="nofollow" title="Add to&amp;nbsp;Twitter"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&amp;nbsp;Twitter" alt="Add to&amp;nbsp;Twitter" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/&amp;amp;t=Getting+MacRuby%26%238217%3Bs+compiler+to+work" rel="nofollow" title="Add to&amp;nbsp;Yahoo My Web"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&amp;nbsp;Yahoo My Web" alt="Add to&amp;nbsp;Yahoo My Web" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Social Bookmarks END --&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=CGgSLe6J-eg:-Ebytb8eYwU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=CGgSLe6J-eg:-Ebytb8eYwU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=CGgSLe6J-eg:-Ebytb8eYwU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=CGgSLe6J-eg:-Ebytb8eYwU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=CGgSLe6J-eg:-Ebytb8eYwU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=CGgSLe6J-eg:-Ebytb8eYwU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=CGgSLe6J-eg:-Ebytb8eYwU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=CGgSLe6J-eg:-Ebytb8eYwU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=CGgSLe6J-eg:-Ebytb8eYwU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/CGgSLe6J-eg" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://antoniocangiano.com/2009/10/08/getting-macrubys-compiler-to-work/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Antonio Cangiano</name>
						<uri>http://antoniocangiano.com</uri>
					</author>
		<title type="html"><![CDATA[The CRTC tries to eliminate ISP competition in Canada]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/aITyZF5Bebw/" />
		<id>http://antoniocangiano.com/?p=1106</id>
		<updated>2009-09-24T16:18:21Z</updated>
		<published>2009-09-24T16:18:21Z</published>
		<category scheme="http://antoniocangiano.com" term="Canada" /><category scheme="http://antoniocangiano.com" term="General" />		<summary type="html"><![CDATA[The CRTC is at it again. This time they want to allow Canadian phone companies to cut off their wholesale offering, essentially killing ISP competition in Canada. Please express your concerns here, where you can quickly email Industry Minister Tony Clement, Prime Minister Harper, the Opposition Leader (Michael Ignatieff) and your local MP. Let them [...]]]></summary>
		<content type="html" xml:base="http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/">&lt;p&gt;The CRTC is at it again. This time they want to allow Canadian phone companies to cut off their wholesale offering, essentially killing ISP competition in Canada. Please express your concerns &lt;a href="http://www.competitivebroadband.com/make-a-difference.aspx"&gt;here&lt;/a&gt;, where you can quickly email Industry Minister Tony Clement, Prime Minister Harper, the Opposition Leader (Michael Ignatieff) and your local MP. Let them know that you care about this important issue.&lt;/p&gt;
&lt;p&gt;For more details, I&amp;#8217;m attaching an informative email I received from TekSavvy:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;We need your help &amp;#8212; we need you to lend us your voice and state your opinion on a recent CRTC decision that could allow the incumbent phone companies (such as Bell and Telus) to discontinue offering services (Internet and phone) to wholesale providers which in effect would eliminate competition in Canada.&lt;/p&gt;
&lt;p&gt;With no competition to help fuel the market; Internet innovation could come to stand still and prices for broadband access could skyrocket out of control.  The incumbents would also be free to do with the lines as they please.  This would open up future privacy invading Deep Packet Inspection (DPI) technologies and direct marketing/advertising based on *you* and *your families* internet activities and habits.&lt;/p&gt;
&lt;p&gt;They could also use this same technology to turn the Internet into a pay-per-website service the same way that TV is a pay-per-channel service. Can you imagine a world where you have to pay to use the Google website to search for information?  Then, if you find what you are looking for you may be restricted to the content because your ISP doesn&amp;#8217;t have a &amp;#8220;peering&amp;#8221; agreement with said company.&lt;/p&gt;
&lt;p&gt;Please help us stop this major potential catastrophe.&lt;/p&gt;
&lt;p&gt;All concerned consumers please visit:&lt;br /&gt;
&lt;a href="http://www.competitivebroadband.com/consumer/"&gt;http://www.competitivebroadband.com/consumer/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All concerned businesses please visit:&lt;br /&gt;
&lt;a href="http://www.competitivebroadband.com"&gt;http://www.competitivebroadband.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Read the information presented and decide for yourself.&lt;/p&gt;
&lt;p&gt;Once you&amp;#8217;ve decided what you think is right, you can click the &amp;#8220;Make a Difference&amp;#8221; link, fill out the form with your details and send a pre-written message to Minister of Industry Tony Clement, Prime Minister Harper, the Opposition Leader, and your local MP or choose to write your own.&lt;/p&gt;
&lt;p&gt;Together we can make a difference.&lt;br /&gt;
Thank you,&lt;br /&gt;
TekSavvy Solutions, Inc.&lt;/p&gt;&lt;/blockquote&gt;
&lt;!-- Social Bookmarks BEGIN --&gt;
&lt;div class="social_bookmark"&gt;
&lt;a&gt;&lt;strong&gt;&lt;em&gt;Bookmark and share:&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;div class="d"&gt;
&lt;br /&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://buzz.yahoo.com/submit?submitUrl=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/&amp;amp;submitHeadline=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada&amp;amp;submitSummary=" rel="nofollow" title="Add to&amp;nbsp;Buzz"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/buzz.png" title="Add to&amp;nbsp;Buzz" alt="Add to&amp;nbsp;Buzz" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/&amp;amp;title=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada" rel="nofollow" title="Add to&amp;nbsp;Del.icio.us"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&amp;nbsp;Del.icio.us" alt="Add to&amp;nbsp;Del.icio.us" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;amp;url=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/&amp;amp;title=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada" rel="nofollow" title="Add to&amp;nbsp;digg"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&amp;nbsp;digg" alt="Add to&amp;nbsp;digg" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/&amp;amp;title=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada" rel="nofollow" title="Add to&amp;nbsp;DotNetKicks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&amp;nbsp;DotNetKicks" alt="Add to&amp;nbsp;DotNetKicks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada&amp;amp;url=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/&amp;amp;title=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada" rel="nofollow" title="Add to&amp;nbsp;DZone"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&amp;nbsp;DZone" alt="Add to&amp;nbsp;DZone" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/" rel="nofollow" title="Add to&amp;nbsp;Facebook"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&amp;nbsp;Facebook" alt="Add to&amp;nbsp;Facebook" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;amp;output=popup&amp;amp;bkmk=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/&amp;amp;title=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada" rel="nofollow" title="Add to&amp;nbsp;Google Bookmarks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&amp;nbsp;Google Bookmarks" alt="Add to&amp;nbsp;Google Bookmarks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.newsvine.com/_wine/save?u=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/&amp;amp;h=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada" rel="nofollow" title="Add to&amp;nbsp;Newsvine"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/newsvine.png" title="Add to&amp;nbsp;Newsvine" alt="Add to&amp;nbsp;Newsvine" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/&amp;amp;title=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada" rel="nofollow" title="Add to&amp;nbsp;reddit"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&amp;nbsp;reddit" alt="Add to&amp;nbsp;reddit" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/&amp;amp;title=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada" rel="nofollow" title="Add to&amp;nbsp;Slashdot"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&amp;nbsp;Slashdot" alt="Add to&amp;nbsp;Slashdot" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/&amp;amp;title=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada" rel="nofollow" title="Add to&amp;nbsp;Stumble Upon"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&amp;nbsp;Stumble Upon" alt="Add to&amp;nbsp;Stumble Upon" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/" rel="nofollow" title="Add to&amp;nbsp;Squidoo"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&amp;nbsp;Squidoo" alt="Add to&amp;nbsp;Squidoo" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/" rel="nofollow" title="Add to&amp;nbsp;SphereIt"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&amp;nbsp;SphereIt" alt="Add to&amp;nbsp;SphereIt" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/" rel="nofollow" title="Add to&amp;nbsp;Technorati"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&amp;nbsp;Technorati" alt="Add to&amp;nbsp;Technorati" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+The+CRTC+tries+to+eliminate+ISP+competition+in+Canada+@+http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/" rel="nofollow" title="Add to&amp;nbsp;Twitter"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&amp;nbsp;Twitter" alt="Add to&amp;nbsp;Twitter" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/&amp;amp;t=The+CRTC+tries+to+eliminate+ISP+competition+in+Canada" rel="nofollow" title="Add to&amp;nbsp;Yahoo My Web"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&amp;nbsp;Yahoo My Web" alt="Add to&amp;nbsp;Yahoo My Web" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Social Bookmarks END --&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=aITyZF5Bebw:eJMktrGPBbk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=aITyZF5Bebw:eJMktrGPBbk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=aITyZF5Bebw:eJMktrGPBbk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=aITyZF5Bebw:eJMktrGPBbk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=aITyZF5Bebw:eJMktrGPBbk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=aITyZF5Bebw:eJMktrGPBbk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=aITyZF5Bebw:eJMktrGPBbk:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=aITyZF5Bebw:eJMktrGPBbk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=aITyZF5Bebw:eJMktrGPBbk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/aITyZF5Bebw" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://antoniocangiano.com/2009/09/24/the-crtc-tries-to-eliminate-isp-competition-in-canada/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Antonio Cangiano</name>
						<uri>http://antoniocangiano.com</uri>
					</author>
		<title type="html"><![CDATA[Benchmarking Tornado vs. Twisted Web vs. Tornado on Twisted]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/QPHxkdqB9mI/" />
		<id>http://antoniocangiano.com/?p=1104</id>
		<updated>2009-09-14T07:10:11Z</updated>
		<published>2009-09-13T12:07:51Z</published>
		<category scheme="http://antoniocangiano.com" term="Python" />		<summary type="html"><![CDATA[FriendFeed, which was recently acquired by Facebook, just released an interesting piece of open source software.
Tornado is an open source version of the scalable, non-blocking web server and tools that power FriendFeed. The FriendFeed application is written using a web framework that looks a bit like web.py or Google&#8217;s webapp, but with additional tools and [...]]]></summary>
		<content type="html" xml:base="http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/">&lt;p&gt;FriendFeed, which was recently acquired by Facebook, just released an interesting piece of open source software.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href="http://www.tornadoweb.org/"&gt;Tornado&lt;/a&gt; is an open source version of the scalable, non-blocking web server and tools that power FriendFeed. The FriendFeed application is written using a web framework that looks a bit like web.py or Google&amp;#8217;s webapp, but with additional tools and optimizations to take advantage of the underlying non-blocking infrastructure.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;big&gt;&lt;strong&gt;The story so far&lt;/strong&gt;&lt;/big&gt;&lt;/p&gt;
&lt;p&gt;This release generated widespread interest among the Python and open source development communities. Rightfully so. There are many reasons to like Tornado. To begin with, it&amp;#8217;s fast &amp;mdash; and that&amp;#8217;s fundamental for a web server. By using nginx as a load balancer and a static file server, and running a few Tornado instances (usually one per core available on the machine) it&amp;#8217;s possible to handle thousands upon thousands of concurrent connections on relatively modest hardware; and this isn&amp;#8217;t just theory. Tornado has already proven its worth in the field, by allowing FriendFeed to scale graciously.&lt;/p&gt;
&lt;p&gt;Tornado is not only a fast web server, it acts as a very lightweight application framework as well. As such, it&amp;#8217;s an appealing alternative to well established frameworks to the growing group of developers who&amp;#8217;d like to develop &amp;#8220;closer to the metal&amp;#8221; and avoid the baggage associated with full-fledged web frameworks. The two things combined make Tornado ideal for developing &amp;#8220;real time&amp;#8221; web services and applications.&lt;/p&gt;
&lt;p&gt;The feedback so far hasn&amp;#8217;t been all positive though. &lt;a href="http://glyph.twistedmatrix.com/2009/09/what-i-wish-tornado-were.html"&gt;Criticism of the project&lt;/a&gt; has mainly focused on the lack of test coverage and the fact that FriendFeed has opted not to contribute to, and improve on, the existing Twisted Web project (which has similar goals). To make things worse, there were a few nonchalant comments about it as well. Performance issues and lack of ease of use were the reported motivations for starting a new project from scratch.&lt;/p&gt;
&lt;p&gt;Dustin Sallings started working on a hybrid solution (henceforth &lt;a href="http://dustin.github.com/2009/09/12/tornado.html"&gt;Tornado on Twisted&lt;/a&gt;) that would reportedly keep the good parts that Tornado introduced, while using Twisted as its core for networking and HTTP parsing.&lt;/p&gt;
&lt;p&gt;At this point I became naturally curious about the speed of these three web servers. Is Tornado really faster than Twisted Web? And what about Tornado on Twisted, would it be faster or slower? Let&amp;#8217;s find out.&lt;/p&gt;
&lt;p&gt;&lt;big&gt;&lt;strong&gt;Benchmark results&lt;/strong&gt;&lt;/big&gt;&lt;/p&gt;
&lt;p&gt;I ran a simple Hello World app for all three web servers. All the web servers were run in standalone mode without a load balancer. I stress tested the web servers with httperf using a progressively larger amount of concurrent requests. 100,000 requests were generated for each test. The web servers were run on a desktop machine with an Intel® Core™2 Quad Processor Q6600 (8M Cache, 2.40 GHz, 1066 MHz FSB) processor and 8GB of RAM. The operating system of choice was Ubuntu 9.04 (x86_64).&lt;/p&gt;
&lt;p&gt;Without further ado, here are the results:&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://antoniocangiano.com/images/python-throughput.png" alt="Throughput for Tornado, Twisted, and Tornado on Twisted" /&gt;&lt;/p&gt;
&lt;p&gt;As you can see Tornado turned out to be faster than the rest of the Python web servers. Handling a peak of almost 3900 req/s with a single front-end and on commodity hardware is nothing to sneer at.&lt;/p&gt;
&lt;p&gt;Twisted Web didn&amp;#8217;t do too bad either (max. 2703.7 req/s), but the difference in performance is noticeable. Likewise, the performance of Tornado on Twisted was virtually identical to that of Twisted Web.&lt;/p&gt;
&lt;p&gt;There you have it. I was curious about the possible outcome and now I know. Remember, this is a report on the numbers I got on my machine, not a research paper. But I hope that you find them interesting nevertheless.&lt;/p&gt;
&lt;p&gt;&lt;big&gt;&lt;strong&gt;Show me the code&lt;/strong&gt;&lt;/big&gt;&lt;/p&gt;
&lt;p&gt;Tornado:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;tornado.httpserver&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;tornado.ioloop&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;tornado.options&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;tornado.web&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;logging&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;tornado.options&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;define&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;

&lt;span class="n"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;port&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;8888&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;run on the given port&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MainHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tornado&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;web&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RequestHandler&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Hello, world!&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;tornado&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse_command_line&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;application&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tornado&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;web&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;r&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MainHandler&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="n"&gt;http_server&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tornado&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;httpserver&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HTTPServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;http_server&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;tornado&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ioloop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;IOLoop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;instance&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;start&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Twisted Web:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;twisted.internet&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;epollreactor&lt;/span&gt;
&lt;span class="n"&gt;epollreactor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;twisted.internet&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;reactor&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;twisted.web&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;resource&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Simple&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;resource&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Resource&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;isLeaf&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;render_GET&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;Hello, world!&amp;quot;&lt;/span&gt;

&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Site&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Simple&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="n"&gt;reactor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;listenTCP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;8888&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;reactor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Tornado on Twisted:&lt;/p&gt;
&lt;div class="highlight"&gt;
&lt;pre&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;twisted.internet&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;epollreactor&lt;/span&gt;
&lt;span class="n"&gt;epollreactor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;install&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;twisted.internet&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;reactor&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;tornado.options&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;tornado.twister&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;tornado.web&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;logging&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;tornado.options&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;define&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;

&lt;span class="n"&gt;define&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;port&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;8888&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;run on the given port&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MainHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tornado&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;web&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RequestHandler&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;Hello, world!&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;tornado&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse_command_line&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;application&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tornado&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;web&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;r&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MainHandler&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;

    &lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tornado&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;twister&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TornadoSite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;reactor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;listenTCP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;reactor&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;UPDATE (September 14, 2009):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The original version of this post included Unicorn as well. This wasn&amp;#8217;t fair however, since it&amp;#8217;s not an asynchronous web server.&lt;/li&gt;
&lt;li&gt;EventMachine HTTP Server was added, but I have since decided to remove it as I prefer to let the article be a fair comparison between asynchronous Python web servers.&lt;/li&gt;
&lt;li&gt;I initially used Apache Benchmark (ab). The results were misleading at best. I re-ran the tests with httperf and updated the results above.&lt;/li&gt;
&lt;li&gt;Stock Tornado couldn&amp;#8217;t be tested with httperf because their HTTP Server doesn&amp;#8217;t implement getClientIP(). I had to manually modify a method to return the remote ip address. This may introduce a very minimal advantage for Tornado, but it should be negligible in this context.&lt;/li&gt;
&lt;li&gt;I modified the examples for Twisted and Tornado on Twisted, to ensure that both took advantage of the epoll-based reactor.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- Social Bookmarks BEGIN --&gt;
&lt;div class="social_bookmark"&gt;
&lt;a&gt;&lt;strong&gt;&lt;em&gt;Bookmark and share:&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;div class="d"&gt;
&lt;br /&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://buzz.yahoo.com/submit?submitUrl=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/&amp;amp;submitHeadline=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted&amp;amp;submitSummary=" rel="nofollow" title="Add to&amp;nbsp;Buzz"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/buzz.png" title="Add to&amp;nbsp;Buzz" alt="Add to&amp;nbsp;Buzz" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/&amp;amp;title=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted" rel="nofollow" title="Add to&amp;nbsp;Del.icio.us"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&amp;nbsp;Del.icio.us" alt="Add to&amp;nbsp;Del.icio.us" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;amp;url=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/&amp;amp;title=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted" rel="nofollow" title="Add to&amp;nbsp;digg"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&amp;nbsp;digg" alt="Add to&amp;nbsp;digg" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/&amp;amp;title=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted" rel="nofollow" title="Add to&amp;nbsp;DotNetKicks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&amp;nbsp;DotNetKicks" alt="Add to&amp;nbsp;DotNetKicks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted&amp;amp;url=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/&amp;amp;title=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted" rel="nofollow" title="Add to&amp;nbsp;DZone"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&amp;nbsp;DZone" alt="Add to&amp;nbsp;DZone" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/" rel="nofollow" title="Add to&amp;nbsp;Facebook"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&amp;nbsp;Facebook" alt="Add to&amp;nbsp;Facebook" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;amp;output=popup&amp;amp;bkmk=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/&amp;amp;title=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted" rel="nofollow" title="Add to&amp;nbsp;Google Bookmarks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&amp;nbsp;Google Bookmarks" alt="Add to&amp;nbsp;Google Bookmarks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.newsvine.com/_wine/save?u=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/&amp;amp;h=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted" rel="nofollow" title="Add to&amp;nbsp;Newsvine"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/newsvine.png" title="Add to&amp;nbsp;Newsvine" alt="Add to&amp;nbsp;Newsvine" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/&amp;amp;title=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted" rel="nofollow" title="Add to&amp;nbsp;reddit"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&amp;nbsp;reddit" alt="Add to&amp;nbsp;reddit" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/&amp;amp;title=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted" rel="nofollow" title="Add to&amp;nbsp;Slashdot"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&amp;nbsp;Slashdot" alt="Add to&amp;nbsp;Slashdot" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/&amp;amp;title=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted" rel="nofollow" title="Add to&amp;nbsp;Stumble Upon"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&amp;nbsp;Stumble Upon" alt="Add to&amp;nbsp;Stumble Upon" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/" rel="nofollow" title="Add to&amp;nbsp;Squidoo"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&amp;nbsp;Squidoo" alt="Add to&amp;nbsp;Squidoo" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/" rel="nofollow" title="Add to&amp;nbsp;SphereIt"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&amp;nbsp;SphereIt" alt="Add to&amp;nbsp;SphereIt" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/" rel="nofollow" title="Add to&amp;nbsp;Technorati"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&amp;nbsp;Technorati" alt="Add to&amp;nbsp;Technorati" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted+@+http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/" rel="nofollow" title="Add to&amp;nbsp;Twitter"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&amp;nbsp;Twitter" alt="Add to&amp;nbsp;Twitter" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/&amp;amp;t=Benchmarking+Tornado+vs.+Twisted+Web+vs.+Tornado+on+Twisted" rel="nofollow" title="Add to&amp;nbsp;Yahoo My Web"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&amp;nbsp;Yahoo My Web" alt="Add to&amp;nbsp;Yahoo My Web" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Social Bookmarks END --&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=QPHxkdqB9mI:PgmOFqk3of0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=QPHxkdqB9mI:PgmOFqk3of0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=QPHxkdqB9mI:PgmOFqk3of0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=QPHxkdqB9mI:PgmOFqk3of0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=QPHxkdqB9mI:PgmOFqk3of0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=QPHxkdqB9mI:PgmOFqk3of0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=QPHxkdqB9mI:PgmOFqk3of0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=QPHxkdqB9mI:PgmOFqk3of0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=QPHxkdqB9mI:PgmOFqk3of0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/QPHxkdqB9mI" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/#comments" thr:count="27" />
		<link rel="replies" type="application/atom+xml" href="http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/feed/atom/" thr:count="27" />
		<thr:total>27</thr:total>
	<feedburner:origLink>http://antoniocangiano.com/2009/09/13/benchmarking-tornado-vs-twisted-web-vs-tornado-on-twisted/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Antonio Cangiano</name>
						<uri>http://antoniocangiano.com</uri>
					</author>
		<title type="html"><![CDATA[Installing and configuring DB2 Express-C 9.7 on Ubuntu 9.04 Server]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ZenAndTheArtOfRubyProgramming/~3/Ze04I-ERyk8/" />
		<id>http://antoniocangiano.com/?p=1103</id>
		<updated>2009-09-11T01:53:00Z</updated>
		<published>2009-09-11T01:53:00Z</published>
		<category scheme="http://antoniocangiano.com" term="DB2" />		<summary type="html"><![CDATA[DB2 Express-C 9.7 can easily be installed on Ubuntu 9.04 Desktop edition by simply issuing sudo ./db2setup. This will open up a launchpad and you&#8217;ll be able to install the product through a wizard. But what about setting up DB2 Express-C 9.7 on Ubuntu 9.04 Server edition? When you are ssh-ing into your VPS or [...]]]></summary>
		<content type="html" xml:base="http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/">&lt;p&gt;&lt;a href="http://www.ibm.com/software/data/db2/express/download.html?S_CMP=ECDDWW01&amp;#038;S_TACT=ACDB201"&gt;DB2 Express-C 9.7&lt;/a&gt; can easily be installed on Ubuntu 9.04 Desktop edition by simply issuing &lt;code&gt;sudo ./db2setup&lt;/code&gt;. This will open up a launchpad and you&amp;#8217;ll be able to install the product through a wizard. But what about setting up DB2 Express-C 9.7 on Ubuntu 9.04 Server edition? When you are ssh-ing into your VPS or dedicated sever, there are no GUIs to help you out.&lt;/p&gt;
&lt;p&gt;IBM provides all the information on how to proceed through &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.qb.server.doc/doc/t0007067.html"&gt;a series of detailed documents&lt;/a&gt;, which explain why each command is required and what your options are. But if you are looking for a single document that is slightly more concise in nature, you can read this &lt;a href="http://bitsofinfo.wordpress.com/2009/09/09/installing-db2-9-express-c-on-a-headless-ubuntu-box-i-e-from-the-command-line/"&gt;excellent step by step guide&lt;/a&gt; that was published today on the blog bits.of.info.&lt;/p&gt;
&lt;!-- Social Bookmarks BEGIN --&gt;
&lt;div class="social_bookmark"&gt;
&lt;a&gt;&lt;strong&gt;&lt;em&gt;Bookmark and share:&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;div class="d"&gt;
&lt;br /&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://buzz.yahoo.com/submit?submitUrl=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/&amp;amp;submitHeadline=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server&amp;amp;submitSummary=" rel="nofollow" title="Add to&amp;nbsp;Buzz"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/buzz.png" title="Add to&amp;nbsp;Buzz" alt="Add to&amp;nbsp;Buzz" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/&amp;amp;title=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server" rel="nofollow" title="Add to&amp;nbsp;Del.icio.us"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&amp;nbsp;Del.icio.us" alt="Add to&amp;nbsp;Del.icio.us" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;amp;url=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/&amp;amp;title=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server" rel="nofollow" title="Add to&amp;nbsp;digg"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&amp;nbsp;digg" alt="Add to&amp;nbsp;digg" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dotnetkicks.com/kick/?url=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/&amp;amp;title=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server" rel="nofollow" title="Add to&amp;nbsp;DotNetKicks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dotnetkicks.png" title="Add to&amp;nbsp;DotNetKicks" alt="Add to&amp;nbsp;DotNetKicks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server&amp;amp;url=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/&amp;amp;title=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server" rel="nofollow" title="Add to&amp;nbsp;DZone"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&amp;nbsp;DZone" alt="Add to&amp;nbsp;DZone" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/" rel="nofollow" title="Add to&amp;nbsp;Facebook"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&amp;nbsp;Facebook" alt="Add to&amp;nbsp;Facebook" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;amp;output=popup&amp;amp;bkmk=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/&amp;amp;title=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server" rel="nofollow" title="Add to&amp;nbsp;Google Bookmarks"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&amp;nbsp;Google Bookmarks" alt="Add to&amp;nbsp;Google Bookmarks" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.newsvine.com/_wine/save?u=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/&amp;amp;h=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server" rel="nofollow" title="Add to&amp;nbsp;Newsvine"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/newsvine.png" title="Add to&amp;nbsp;Newsvine" alt="Add to&amp;nbsp;Newsvine" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/&amp;amp;title=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server" rel="nofollow" title="Add to&amp;nbsp;reddit"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&amp;nbsp;reddit" alt="Add to&amp;nbsp;reddit" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/&amp;amp;title=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server" rel="nofollow" title="Add to&amp;nbsp;Slashdot"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&amp;nbsp;Slashdot" alt="Add to&amp;nbsp;Slashdot" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/&amp;amp;title=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server" rel="nofollow" title="Add to&amp;nbsp;Stumble Upon"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&amp;nbsp;Stumble Upon" alt="Add to&amp;nbsp;Stumble Upon" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.squidoo.com/lensmaster/bookmark?http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/" rel="nofollow" title="Add to&amp;nbsp;Squidoo"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/squidoo.png" title="Add to&amp;nbsp;Squidoo" alt="Add to&amp;nbsp;Squidoo" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/" rel="nofollow" title="Add to&amp;nbsp;SphereIt"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&amp;nbsp;SphereIt" alt="Add to&amp;nbsp;SphereIt" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/" rel="nofollow" title="Add to&amp;nbsp;Technorati"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&amp;nbsp;Technorati" alt="Add to&amp;nbsp;Technorati" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server+@+http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/" rel="nofollow" title="Add to&amp;nbsp;Twitter"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&amp;nbsp;Twitter" alt="Add to&amp;nbsp;Twitter" /&gt;&lt;/a&gt;
&lt;a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/&amp;amp;t=Installing+and+configuring+DB2+Express-C+9.7+on+Ubuntu+9.04+Server" rel="nofollow" title="Add to&amp;nbsp;Yahoo My Web"&gt;&lt;img class="social_img" src="http://antoniocangiano.com/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&amp;nbsp;Yahoo My Web" alt="Add to&amp;nbsp;Yahoo My Web" /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Social Bookmarks END --&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=Ze04I-ERyk8:FGxLrazGJGY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=Ze04I-ERyk8:FGxLrazGJGY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=Ze04I-ERyk8:FGxLrazGJGY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=Ze04I-ERyk8:FGxLrazGJGY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=Ze04I-ERyk8:FGxLrazGJGY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=Ze04I-ERyk8:FGxLrazGJGY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=Ze04I-ERyk8:FGxLrazGJGY:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?a=Ze04I-ERyk8:FGxLrazGJGY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ZenAndTheArtOfRubyProgramming?i=Ze04I-ERyk8:FGxLrazGJGY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ZenAndTheArtOfRubyProgramming/~4/Ze04I-ERyk8" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:origLink>http://antoniocangiano.com/2009/09/10/installing-and-configuring-db2-express-c-9-7-on-ubuntu-9-04-server/</feedburner:origLink></entry>
	</feed><!-- Dynamic page generated in 8.676 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-03-10 20:19:28 --><!-- Compression = gzip -->
