<?xml version="1.0" encoding="UTF-8"?>
<article-node>
  <account-id type="integer">2</account-id>
  <author>Michael Slater</author>
  <aux>Last week&amp;#8217;s Silicon Valley Ruby Conference was perhaps the year&amp;#8217;s largest local gathering of Ruby enthusiasts, with 130 attendees. Here we present notes from a few of the presentations, on topics including Pivotal&amp;#8217;s Desert framework, IronRuby, Rubinius and Merb, and IBM&amp;#8217;s use of Rails.</aux>
  <body>&lt;p&gt;Last week&amp;#8217;s Silicon Valley Ruby Conference was perhaps the year&amp;#8217;s largest local gathering of Ruby enthusiasts, with 130 attendees. Although not in the same league as the big-time RailsConf and RubyConf events, it was nonetheless a worthwhile couple of days.&lt;/p&gt;
&lt;p&gt;In this article, we present a few tidbits from various talks at the conference. We&amp;#8217;ve also posted separate articles from two talks:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.buildingwebapps.com/articles/24-tim-bray-ruby-is-the-leading&quot;&gt;Tim Bray: Ruby is the Leading Language for Web Applications&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.buildingwebapps.com/articles/23-selling-friends-scaling-a-high-traffic-rails&quot;&gt;Selling Friends: Scaling a High-Traffic Rails Application&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Desert Framework&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://pivots.pivotallabs.com/users/parker/blog&quot;&gt;Parker Thompson&lt;/a&gt; from &lt;a href=&quot;http://pivotallabs.com/&quot;&gt;Pivotal Labs&lt;/a&gt; talked about the &lt;a href=&quot;http://rubyforge.org/projects/pivotalrb/&quot;&gt;Desert component framework&lt;/a&gt;. This open-source framework is a gem that Pivotal Labs uses to easily modularize their application components and quickly assemble them to create new applications.&lt;/p&gt;
&lt;div style='float:left; width:210px'&gt;
&lt;p&gt;&lt;img src=&quot;/parker.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The Desert framework allows a component to provide models, migrations, routes, controllers, views, and even plugins. It includes a modification to the Rails class loader, allowing code to define a class in multiple places, yielding the sum of all of them. Components are templating language agnostic. The framework deals with dependencies between plugins and load order &amp;#8212; something Parker noted should be in Rails.&lt;/p&gt;
&lt;p&gt;Pivotal has built about a dozen apps with the Desert framework and has done one full rewrite of the framework. While the framework itself is open source, Pivotal has not, unfortunately, open-sourced any of the components, which limits the immediate appeal. Pivotal may release some of the components in the future.&lt;/p&gt;
&lt;h2&gt;IronRuby&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.iunknown.com/&quot;&gt;John Lam&lt;/a&gt; talked about the &lt;a href=&quot;http://www.ironruby.net/&quot;&gt;IronRuby&lt;/a&gt; project. He is one of two people at Microsoft working on IronRuby. They&amp;#8217;ve been working on it for 14 months and are getting &amp;#8220;relatively close to running real ruby programs&amp;#8221;; John characterized it as &amp;#8220;about halfway done.&amp;#8221; IronRuby runs on top of the &lt;a href=&quot;http://blogs.msdn.com/hugunin/archive/2007/04/30/a-dynamic-language-runtime-dlr.aspx&quot;&gt;Dynamic Language Runtime&lt;/a&gt; (&lt;span class=&quot;caps&quot;&gt;DLR&lt;/span&gt;), which in turn runs on the Common Language Runtime (&lt;span class=&quot;caps&quot;&gt;CLR&lt;/span&gt;), just as &lt;a href=&quot;http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython&quot;&gt;IronPython&lt;/a&gt; does.&lt;/p&gt;
&lt;p&gt;The runtime environment is part of &lt;a href=&quot;http://www.microsoft.com/silverlight/&quot;&gt;Silverlight&lt;/a&gt;, which is a 4M download, on top of 1M download for video playing, plus 1.5M for &lt;span class=&quot;caps&quot;&gt;DLR&lt;/span&gt; and Ruby. When this technology is ready, you could run a Rails view on the client instead of on the server. You could run Ruby &amp;#8220;on both sides of the wire&amp;#8221; and access .&lt;span class=&quot;caps&quot;&gt;NET&lt;/span&gt; routines from Ruby. Because IronRuby lives in the Silverlight security model, it allows Ruby code to run from within the browser without needing to have its own security model.&lt;/p&gt;
&lt;p&gt;IronRuby is being released under the &lt;a href=&quot;http://www.microsoft.com/resources/sharedsource/licensingbasics/publiclicense.mspx&quot;&gt;Microsoft Public License&lt;/a&gt;,  Microsoft&amp;#8217;s open-source license.&lt;/p&gt;
&lt;h2&gt;Rubinius and Merb&lt;/h2&gt;
&lt;p&gt;Tom Morini from &lt;a href=&quot;http://engineyard.com&quot;&gt;Engine Yard&lt;/a&gt; talked about the state of Ruby and the Rubinius project. Tom noted that the growth in Ruby jobs is quite dramatic:&lt;/p&gt;
&lt;div style=&quot;width:540px&quot;&gt;
&lt;p&gt;&lt;a href=&quot;http://www.indeed.com/jobtrends?q=ruby%2C+java&amp;relative=1&amp;relative=1&quot; title=&quot;ruby, java Job Trends&quot;&gt;
&lt;img width=&quot;540&quot; height=&quot;300&quot; src=&quot;http://www.indeed.com/trendgraph/jobgraph.png?q=ruby%2C+java&amp;relative=1&quot; border=&quot;0&quot; alt=&quot;ruby, java Job Trends graph&quot;&gt;
&lt;/a&gt;
&lt;table width=&quot;100%&quot; cellpadding=&quot;6&quot; cellspacing=&quot;0&quot; border=&quot;0&quot; style=&quot;font-size:80%&quot;&gt;&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.indeed.com/jobtrends?q=ruby%2C+java&amp;relative=1&amp;relative=1&quot;&gt;ruby, java Job Trends&lt;/a&gt;&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;&lt;a href=&quot;http://www.indeed.com/jobs?q=ruby&quot;&gt;ruby jobs&lt;/a&gt; &amp;#8211; &lt;a href=&quot;http://www.indeed.com/jobs?q=java&quot;&gt;java jobs&lt;/a&gt;&lt;/td&gt;&lt;/p&gt;
&lt;p&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;However, this is on a relative scale. On an absolute scale, it&amp;#8217;s clear that there are still vastly more Java jobs:&lt;/p&gt;
&lt;div style=&quot;width:540px&quot;&gt;
&lt;p&gt;&lt;a href=&quot;http://www.indeed.com/jobtrends?q=ruby%2C+java&quot; title=&quot;ruby, java Job Trends&quot;&gt;
&lt;img width=&quot;540&quot; height=&quot;300&quot; src=&quot;http://www.indeed.com/trendgraph/jobgraph.png?q=ruby%2C+java&quot; border=&quot;0&quot; alt=&quot;ruby, java Job Trends graph&quot;&gt;
&lt;/a&gt;
&lt;table width=&quot;100%&quot; cellpadding=&quot;6&quot; cellspacing=&quot;0&quot; border=&quot;0&quot; style=&quot;font-size:80%&quot;&gt;&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.indeed.com/jobtrends?q=ruby%2C+java&quot;&gt;ruby, java Job Trends&lt;/a&gt;&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;&lt;a href=&quot;http://www.indeed.com/jobs?q=ruby&quot;&gt;ruby jobs&lt;/a&gt; &amp;#8211; &lt;a href=&quot;http://www.indeed.com/jobs?q=java&quot;&gt;java jobs&lt;/a&gt;&lt;/td&gt;&lt;/p&gt;
&lt;p&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Nevertheless, it is compelling that the number of Java jobs is stagnant, while Ruby jobs are increasing steadily.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rubini.us/&quot;&gt;Rubinius&lt;/a&gt; is a next-generation virtual machine for Ruby that is written entirely in Ruby. The project is now backed by Engine Yard, which hired project creator &lt;a href=&quot;http://blog.fallingsnow.net/&quot;&gt;Evan Phoenix&lt;/a&gt; and four other top Ruby programmers to work on it. Tom said they hope to have a demo running Rails by RailsConf in May, and to have a 1.0 release this summer.&lt;/p&gt;
&lt;p&gt;There are 136 committers to date to Rubinius, making it the largest Ruby interpreter project by that measure; there are only 53 on the Matz Ruby Interpreter (&lt;span class=&quot;caps&quot;&gt;MRI&lt;/span&gt;), 22 on Jruby, and 10 on IronRuby.&lt;/p&gt;
&lt;p&gt;The RubySpecs project, which is an RSpec test suite for the Ruby language being built for Rubinius, is becoming the definition of the Ruby language, which has no formal definition. There are currently 22,664 expectations in the tests.&lt;/p&gt;
&lt;p&gt;Matz is participating in &lt;a href=&quot;http://www.novemberain.com/2008/4/22/first-ruby-design-meeting-notes&quot;&gt;monthly meetings with other Ruby implementors&lt;/a&gt;, which should help ensure that Ruby compatibility remains high even as the number of execution environments proliferates.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://merbivore.com/&quot;&gt;Merb&lt;/a&gt;, which is also being backed by Engine Yard, is a Rails-like framework that was originally designed to solve file upload problems with Rails applications. It is steadily increasing in capability. Sony is writing &lt;a href=&quot;http://railswork.com/jobs/185-sr-on-line-engineer&quot;&gt;backends for &lt;span class=&quot;caps&quot;&gt;PSP&lt;/span&gt; and PlayStation 3 games&lt;/a&gt; in Merb, and music site &lt;a href=&quot;http://mog.com&quot;&gt;&lt;span class=&quot;caps&quot;&gt;MOG&lt;/span&gt;&lt;/a&gt; is being rewritten in Merb. The 1.0 release of Merb is planned for this summer.&lt;/p&gt;
&lt;h2&gt;Rails at &lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;IBM&amp;#8217;s &lt;a href=&quot;http://jhingran.typepad.com/&quot;&gt;Anant Jhingran&lt;/a&gt; and &lt;a href=&quot;http://blog.juliankamil.com/&quot;&gt;Julian Kamil&lt;/a&gt; talked about using Rails in enterprise environments. It may come a surprise to some that &lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt; has created a number of web applications for clients using Rails. One example is the site for the &lt;a href=&quot;http://nmaahc.si.edu/&quot;&gt;National Museum of African American History and Culture&lt;/a&gt;, which has launched as a virtual museum while the physical museum is being constructed. The site was created by a team from from &lt;a href=&quot;http://ibm.com/services/innovation/dc&quot;&gt;IBM&amp;#8217;s Innovation Center in Washington, DC&lt;/a&gt;.&lt;/p&gt;
&lt;div style='float:left; width: 310px'&gt;
&lt;p&gt;&lt;img src=&quot;/ibm.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p style='font-size: 10px; margin-top:0'&gt;Anant Jhingran (left) and Michael &amp;#8216;Max&amp;#8217; Maximilien&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The speakers noted that while Rails is not ready to replace core enterprise functions, it can be used very effectively to manage web services and create mashups that draw on other enterprise systems. Julian calls this &amp;#8220;penetration from the skin,&amp;#8221; rather than attacking the core. He showed that he has Rails running on an &lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt; S/390 mainframe, and Anant talked about using IBM&amp;#8217;s DB2 database with Rails.&lt;/p&gt;
&lt;p&gt;One barrier is that some customer contracts prohibit the use of open-source software because they want everything to be fully supported. This is a customer education issue, rather than a technology challenge. In terms of Rails itself, the highly prescriptive nature of Rails (such as the lack of support for natural database keys) is a challenge when working with core enterprise functions.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.maximilien.com&quot;&gt;Michael &amp;#8216;Max&amp;#8217; Maximilien&lt;/a&gt; from IBM&amp;#8217;s San Jose research lab showed his &lt;a href=&quot;http://services.alphaworks.ibm.com/isc/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt; for mashups&lt;/a&gt;, which allows mashups to be easily defined in a Ruby-based &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt; and then automatically creates a Rails application that implements them.&lt;/p&gt;
&lt;h2&gt;More Presentations and Videos&lt;/h2&gt;
&lt;p&gt;These notes reflect only about half of the presentations; see the &lt;a href=&quot;http://sdforum.org/ruby&quot;&gt;SD Forum&lt;/a&gt; site for links to other presentations. They will also be publishing video recordings of the presentations.&lt;/p&gt;</body>
  <created-at type="datetime">2008-07-24T01:00:49-07:00</created-at>
  <created-by type="integer">1</created-by>
  <dy-schema-id type="integer" nil="true"></dy-schema-id>
  <dy-schema-type nil="true"></dy-schema-type>
  <filter-id nil="true"></filter-id>
  <flags type="integer">1</flags>
  <historic-id type="integer">25</historic-id>
  <id type="integer">6506</id>
  <kind-id type="integer">5019</kind-id>
  <lock-version type="integer">4</lock-version>
  <name>Silicon Valley Ruby Conference</name>
  <owner-id type="integer" nil="true"></owner-id>
  <owner-type nil="true"></owner-type>
  <published-at type="datetime">2008-04-21T17:00:00-07:00</published-at>
  <rating type="integer">3</rating>
  <ref-count type="integer">0</ref-count>
  <sequence type="integer">0</sequence>
  <status type="integer">0</status>
  <updated-at type="datetime">2009-04-03T13:17:00-07:00</updated-at>
  <updated-by type="integer">1</updated-by>
  <url nil="true"></url>
  <user-id type="integer">1</user-id>
  <version type="integer">4</version>
  <workflow-task-status-id type="integer" nil="true"></workflow-task-status-id>
</article-node>
