<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>The Merbist</title>
	<atom:link href="http://merbist.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://merbist.com</link>
	<description>Merb &#38; Rails 3 news - consulting - training</description>
	<pubDate>Wed, 27 May 2009 21:57:57 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MacRuby, changing the Ruby ecosystem</title>
		<link>http://merbist.com/2009/05/27/macruby-changing-the-ruby-ecosystem/</link>
		<comments>http://merbist.com/2009/05/27/macruby-changing-the-ruby-ecosystem/#comments</comments>
		<pubDate>Wed, 27 May 2009 20:32:05 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<category><![CDATA[apple]]></category>

		<category><![CDATA[cocoa]]></category>

		<category><![CDATA[hotcocoa]]></category>

		<category><![CDATA[implementations]]></category>

		<category><![CDATA[llvm]]></category>

		<category><![CDATA[macruby]]></category>

		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=497</guid>
		<description><![CDATA[What&#8217;s MacRuby?
MacRuby is an Apple-sponsored, open source, full Ruby implementation on top of Objective-C runtime. In other words, whatever code runs on Ruby 1.9, should/will run on MacRuby. Yes, you read correctly, MacRuby can/will be able to run all your Ruby code. That means that eventually you will even be able to run your Rails/Sinatra/new-sexy-ruby-framework app on [...]]]></description>
			<content:encoded><![CDATA[<h3>What&#8217;s MacRuby?</h3>
<p><a href="http://www.macruby.org/" target="_blank">MacRuby</a> is an Apple-sponsored, open source, full Ruby implementation on top of <a id="aptureLink_pESoOHHlbG" href="http://en.wikipedia.org/wiki/Objective-C">Objective-C</a> runtime. In other words, whatever code runs on Ruby 1.9, should/will run on MacRuby. Yes, you read correctly, MacRuby can/will be able to run all your Ruby code. That means that eventually you will even be able to run your <a id="aptureLink_VGgeArN8Rl" href="http://en.wikipedia.org/wiki/Ruby%20on%20Rails">Rails</a>/<a id="aptureLink_2NJprAdoMR" href="http://en.wikipedia.org/wiki/Sinatra%20%28software%29">Sinatra</a>/new-sexy-ruby-framework app on MacRuby.</p>
<p>Unlike <a id="aptureLink_FfVjX1g306" href="http://en.wikipedia.org/wiki/RubyCocoa">RubyCocoa</a>, MacRuby is not a bridge, it is a full implementation of the Ruby language on top of Apple&#8217;s Objective-C runtime. Taking a huge shortcut, MacRuby implements the Ruby syntax by aliasing it to the Obj-C language counterpart. A Ruby string instance is really in fact, an instance of <a id="aptureLink_F19CSQ1yIN" href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSMutableString_Class/Reference/Reference.html">NSMutableString</a>. This is obviously transparent for you as a developer since you have the same Ruby API, but it also means that MacRuby can make use of the various Objective-C&#8217;s goodies such as native threads, <a href="http://en.wikipedia.org/wiki/Objective-c#Garbage_collection" target="_blank"> garbage collector</a> in the background as well as the runtime performance.</p>
<p>On top of that, you have full access to the Obj-C API from your Ruby code. (tip: in macirb, try &#8220;my string&#8221;.methods(true, true).sort to see the available Ruby + Objective-C methods on your String instance)  The reason why having access to Objective-C is important is because it gives you the possibility to write native <a id="aptureLink_xhC9IGI03b" href="http://en.wikipedia.org/wiki/Cocoa%20%28API%29">Cocoa</a>apps using Ruby. For those who don&#8217;t know Cocoa, is a set of APIs for MacOSX development.</p>
<p>However, note that even though, the Cocoa support is almost complete and stable, MacRuby is still in development, especially on the Ruby side of things.</p>
<h3>What is it not?</h3>
<ul>
<li> <a href="http://www.macruby.org/" target="_blank">MacRuby</a> is not a fork of Ruby. Full <a href="http://rubyspec.org/" target="_blank">rubyspec</a> compliance is expected! It&#8217;s true that MacRuby supports smalltalk/Obj-C method selectors so it might be considered a language superset.</li>
<li>MacRuby is not limited to the OSX platform. All its dependencies are open source and could possibly be compiled for other POSIX-based systems such as Linux.. (not done yet)</li>
<li>Even if MacRuby&#8217;s primary goal is to allow you to write efficient Cocoa apps, it does not mean that MacRuby is limited to that.</li>
<li>MacRuby doesn&#8217;t require you to learn Objective-C in order to develop Cocoa apps. (you just need to understand Obj-C selectors)</li>
</ul>
<h3>What&#8217;s coming up?</h3>
<p>The current version of MacRuby (today being the 27th of May 2009) is version 0.4. You might have heard of things about MacRuby crazy performance, <a id="aptureLink_nhIYhdGBH4" href="http://en.wikipedia.org/wiki/Low%20Level%20Virtual%20Machine">LLVM</a>, <a id="aptureLink_gZ0aocAm7D" href="http://en.wikipedia.org/wiki/AOT%20compiler">AOT compilation</a><a id="aptureLink_gZ0aocAm7D" href="http://en.wikipedia.org/wiki/AOT%20compiler">AOT compilation</a> etc&#8230; This is all happening in the &#8216;experimental&#8217; branch.</p>
<p>What&#8217;s going on is that up to MacRuby 0.5, MR was  using YARV (Ruby 1.9 interpreter) on top of Obj-C and which obviously limited MacRuby&#8217;s  to YARV&#8217;s performance. After RubyConf 2008, Laurent Sansonetti, MacRuby&#8217;s lead developer, decided to try removing YARV to only keep its <a href="http://en.wikipedia.org/wiki/Abstract_syntax_tree" target="_blank">AST</a> and experiment with using <a href="http://en.wikipedia.org/wiki/Llvm" target="_blank">LLVM</a> instead of the 1.9 interpreter.</p>
<p>This switch turned out to be very promising and was noticed right away by influential people such as <a href="http://antoniocangiano.com/2009/03/29/why-macruby-matters/" target="_blank">IBM&#8217;s Antonio Cangiano</a>. Since then, performance and compatibility have increased. Laurent even started working on an Ahead Of Time (AOT) compiler: <a href="http://pastie.org/485095" target="_blank">http://pastie.org/485095</a> What&#8217;s really impressive is that in this specific example (Fibonacci sequence), <strong>MacRuby&#8217;s compiled code is faster than Objective-C!</strong> But let&#8217;s not jump the gun. First this is a very very early prototype and most of your apps won&#8217;t be using Fib. sequences <img src='http://merbist.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> In this case, MacRuby&#8217;s recursive method dispatch is faster but again, this is just a proof of concept and even though MacRuby is getting close to Obj-C speed, it&#8217;s still far from matching Obj-C&#8217;s impressive performance.</p>
<p>What this basically means is that you will be able to compile your Ruby code down to binary code. Imagine, taking your Rails app and compiling it down to a binary file that you can just push to your server <img src='http://merbist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> But really, what&#8217;s almost more important is that Ruby will get closer to Objective-C&#8217;s speed.</p>
<h3>Why will MacRuby change the Ruby ecosystem?</h3>
<p>As a web developer, getting better performance is great. But Ruby is already fast enough. Rails is faster than any PHP framework out there and when doing Merb&#8217;s benchmarks we proved that Ruby for the web can definitely be fast.</p>
<p>Now if MacRuby ends up running 3-7X faster than Ruby 1.9 (no one can tell for sure), existing Ruby developers will certainly be really pleased but it will probably affect more people outside of our community than within. Let&#8217;s face it, our community isn&#8217;t that big but it&#8217;s growing fast and people are mainly coming to Ruby for its web frameworks. But Ruby has much more than that to offer. Desktop applications, <a href="http://www.railsenvy.com/2009/5/11/rubystein-ruby-meets-wolfenstein" target="_blank">video games</a>, scientific computation and even embedded apps. Apple is betting on Ruby probably because of the fact that they see the potential in the language itself.</p>
<p>Would people still use Java if Ruby is as fast/faster than Java? Probably! Would they think about using Ruby for their next project? I would certainly hope so!</p>
<p>Ruby is viral, it&#8217;s such a great language, people who have started using it are having a hard time going back to what they used before. But to spread the &#8216;love&#8217;, we need to give people the opportunity to discover why Ruby is so great and to do that, we need to make sure Ruby is relevant to them. By making Ruby a realistic option to write desktop/mobile applications, we are targeting a new audience. An experienced audience which will be able to bring a new perspective to our ecosystem and help it grow.</p>
<p>Of course, MacRuby isn&#8217;t the only implementation out there trying to do that. JRuby and IronRuby are also very interesting projects. My take on it, is that MacRuby will be able to change things because of its new approach and potential community. It will more than likely be the first Ruby implementation compiling down to binary code, it will more than likely be the fastest implementation and it will more than likely draw a different type of developer.</p>
<p>Does it mean that <a id="aptureLink_Opz2f6V71E" href="http://jruby.codehaus.org/">JRuby</a>, <a id="aptureLink_Xu5VPpInuF" href="http://www.ironruby.net/">IronRuby</a>, <a id="aptureLink_JCunZVZX0c" href="http://www.infoq.com/news/2009/04/ruby-on-sap">BlueRuby</a> will be useless? Absolutely not! Matz is the first one to encourage diversity and I agree that this is a great way to move forward. These projects solve different problems and all have pros and cons, but they also all share a similar goal: making Ruby a better and more popular language outside of its original community. JRuby, IronRuby and MacRuby bring Ruby to the respective Java, .net and Cocoa communities, and indirectly bring fresh developers to Ruby. These implementations are critical in the way they actually bridge existing communities and in the end, all Rubyists will benefit from it. Also, even though MacRuby and IronRuby are in active development, JRuby is the only mature alternative to MRI/YARV at this point and it proved that Ruby can coexist in a different community as well as contribute a lot of interesting things back to the Ruby community.</p>
<p>To summarize, I see tremendous potential in MacRuby. There is the obvious technical aspect of the implementation, but also the indirect affect MacRuby could have on our community. I believe that MacRuby is an agent of change and will help bringing more diversity to our community. It will change mentalities and push Ruby to places where it&#8217;s being struggling to make a mark. I can see the so-called &#8220;Enterprise&#8221; people looking at Ruby differently. I also think that MacRuby has the potential to be at the origin of a new type of hybrid application, mixing desktop/mobile/distributed applications with centralized web applications. Why not dream of p2p applications/games using a subset of Rails to communicate between each other and with a central server?</p>
<p><a href="http://macruby.org"><img class="alignleft size-full wp-image-499" title="macruby-site" src="http://merbist.com/wp-content/uploads/2009/05/macruby-site.jpg" alt="macruby-site" width="300" height="287" /></a></p>
<p>If you are interested in learning more about MacRuby, check the list of <a href="http://www.macruby.org/documentation.html" target="_blank">resources available on the MacRuby site</a>.</p>
<p>Rich Kilmer and I are also working on a documentation application for Cocoa and <a id="aptureLink_Yq6pbvrrMF" href="http://www.macruby.org/hotcocoa.html">HotCocoa</a> as well as a MVC framework for writing Cocoa apps using HotCocoa (HotCocoa is a thin, idiomatic Ruby layer that sits above Cocoa and other frameworks).</p>
<p>Make sure to keep an eye on <a href="http://twitter.com/macruby" target="_blank">@macruby</a> and the <a href="http://macruby.org" target="_blank">MacRuby website</a> if you want to keep track of the latest news.</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/05/27/macruby-changing-the-ruby-ecosystem/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CouchDB with CouchRest in 5 minutes</title>
		<link>http://merbist.com/2009/05/17/couchdb-with-couchrest-in-5-minutes/</link>
		<comments>http://merbist.com/2009/05/17/couchdb-with-couchrest-in-5-minutes/#comments</comments>
		<pubDate>Mon, 18 May 2009 05:31:14 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<category><![CDATA[couchdb]]></category>

		<category><![CDATA[couchrest]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=492</guid>
		<description><![CDATA[The other night, during our monthly SDRuby meetup, lots of people were very interested in learning more about CouchDB and Ruby. I tried to show what Couch was all about but I didn&#8217;t have time to show how to use CouchDB with Ruby.
Here is me trying to do that in 10 minutes or less. I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>The other night, during our monthly <a href="http://sdruby.com" target="_blank">SDRuby meetup</a>, lots of people were very interested in learning more about CouchDB and Ruby. I tried to show what Couch was all about but I didn&#8217;t have time to show how to use CouchDB with Ruby.<br />
Here is me trying to do that in 10 minutes or less. I&#8217;ll assume you don&#8217;t have CouchDB installed.</p>
<p>Install CouchDB, if you are on MacOSX, you are in luck, download and unzip the standalone package called <a title="CouchDBX" href="http://janl.github.com/couchdbx/" target="_blank">CouchDBX</a>.<br />
That&#8217;s it you have couch ready to go, press play and play with the web interface.</p>
<p>Next, let&#8217;s write a quick script. Let&#8217;s say we want to write a script that manages your contacts.</p>
<p>First, let&#8217;s install CouchRest:</p>
<p><code><br />
$ sudo gem install couchrest<br />
</code></p>
<p>Now, let&#8217;s open a new file and write our script.</p>
<p><script src="http://gist.github.com/113318.js"></script> In line 4 and 5 we are just setting up the server(by default, localhost is being used). If the database doesn&#8217;t exist, it will get created.</p>
<p><code> SERVER    = CouchRest.new </code></p>
<p><code>DB           = SERVER.database!('contact-manager') </code></p>
<p>Then, we define your &#8216;model&#8217;, we set the default database to use and define a list of properties. Properties are not required, but they generate getters and setters for you. They are also used to set default values and validate your model.  Line 11 shows how to use an alias that will provider a getter and a setter for the property name and the alias name:</p>
<p><code>property :last_name, :alias =&gt; :family_name</code></p>
<p>Line 14 does something that might seem strange at first. We are casting the address property as an instance of the Address class.  Here is what the implementation of the Address class could look like: <script src="http://gist.github.com/113322.js"></script></p>
<p>Address is just an instance of Hash with some extra methods provided by the CouchRest::CastedModel module. (If you wonder why it&#8217;s called CastedModel instead of the more grammatically correct CastModel, the answer is simple: I suck at English grammar :p )</p>
<p>So here is a quick example of how to use a &#8216;CastedModel&#8217;:<br />
<script src="http://gist.github.com/113328.js"></script></p>
<p>That&#8217;s part of what&#8217;s great with CouchDB, you don&#8217;t need to worry too much about storage. Just define your properties, cast to models if needed and save everything as a document.</p>
<p>For more examples checkout the <a href="http://github.com/mattetti/couchrest/tree/a4e6713aeb04721604553bb03475b11912a6e1ff/spec/fixtures/more" target="_blank">CouchRest spec fixtures</a> and the <a href="http://github.com/mattetti/couchrest/tree/85079a54d98ea90ecbab31cba319f0971904e9a6/examples" target="_blank">examples</a>.</p>
<p>To learn more about couchdb, read the (free) online draft of the <a href="http://books.couchdb.org/relax/" target="_blank">CouchDB book</a> and of course you probably should read the <a href="http://github.com/mattetti/couchrest" target="_blank">CouchRest source on GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/05/17/couchdb-with-couchrest-in-5-minutes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RailsConf 2009</title>
		<link>http://merbist.com/2009/05/08/railsconf-2009/</link>
		<comments>http://merbist.com/2009/05/08/railsconf-2009/#comments</comments>
		<pubDate>Fri, 08 May 2009 20:18:18 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[merb]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[enterprise]]></category>

		<category><![CDATA[rails3]]></category>

		<category><![CDATA[railsconf]]></category>

		<category><![CDATA[vegas]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=487</guid>
		<description><![CDATA[RailsConf 2009 has now finished.  This time last year, no one would have ever guessed that the Merb and Rails teams would join forces and focus on what will hopefully be known as one of the best Web Frameworks.
It was encouraging to see so many people excited about what&#8217;s being ported over from Merb and [...]]]></description>
			<content:encoded><![CDATA[<p>RailsConf 2009 has now finished.  This time last year, no one would have ever guessed that the Merb and Rails teams would join forces and focus on what will hopefully be known as one of the best Web Frameworks.</p>
<p>It was encouraging to see so many people excited about what&#8217;s being ported over from Merb and the new options available to people who are currently limited by the existing stack. For those interested in pushing Rails further and doing stuff out of the norm, here are my slides. <a href="http://www.workingwithrails.com/person/5919-arthur-zapparoli" target="_blank">Arthur Zapparoli</a> from <a href="http://www.rubyonrails.pro.br/" target="_blank">Brazilian Rails squad</a> recorded most of the talk and told me he will upload the video ASAP. You can also read <a href="http://yehudakatz.com/2009/05/08/railsconf-wrapup/" target="_blank">Yehuda Katz&#8217; blog</a> which covers what he talked about.</p>
<div id="__ss_1396365" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Rails3: Stepping off of the golden path" href="http://www.slideshare.net/mattetti/rails3-stepping-off-of-the-golden-path?type=presentation">Rails3: Stepping off of the golden path</a><object width="425" height="355" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=steppingoffofthegoldenpath-090506154117-phpapp01&amp;rel=0&amp;stripped_title=rails3-stepping-off-of-the-golden-path" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=steppingoffofthegoldenpath-090506154117-phpapp01&amp;rel=0&amp;stripped_title=rails3-stepping-off-of-the-golden-path" /><param name="allowfullscreen" value="true" /></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/mattetti">Matt Aimonetti</a>.</div>
</div>
<p>It was really great to meet a lot of new people as well as people I only knew via IRC/IM/twitter.</p>
<p>It was a great honor to finally meet <a href="http://twitter.com/dkubb" target="_blank">Dan Kubb</a> (DataMapper), <a href="http://twitter.com/ninh" target="_blank">Ninh Hernandez-Búi</a> &amp; <a href="http://twitter.com/phusion_nl" target="_blank">Hongli McLovin Lai (Phusion)</a>, <a href="http://twitter.com/peterc" target="_blank">Peter Cooper</a> (<a href="http://www.rubyinside.com/" target="_blank">RubyInside</a>), <a href="http://twitter.com/rsim" target="_blank">Raimonds Simanovskis</a> (Oracle adapter for AR), <a href="http://weblogs.java.net/blog/arungupta/" target="_blank">Arun Gupta</a> (Sun/Glassfish),  <a href="http://twitter.com/copiousfreetime" target="_blank">Jeremy Hinegardner</a> (crate), <a href="http://maximilien.org" target="_blank">Michael Maxilien</a> (IBM), Dana Jones (<a href="http://railsbridge.org/" target="_blank">railsbridge</a>), Zach Zolton &amp; Geoff Buesing (CouchRest) and of course the Brazilian crew (lots of awesome .br guys came this year, I&#8217;m looking forward to RailsSummit) and last but not least, the French speaking crew (I&#8217;m glad to see Ruby is picking up back home). (I know I&#8217;m forgetting people&#8230; sorry about that)</p>
<p>It was also really nice to talk with some experts like Dave Astels, Aslak Hellesøy, Rich Kilmer, David Chelimsky, Ryan Brown, Derek Neighbors etc.. to get their feedback on various projects I&#8217;m working on.</p>
<p>Leaving Vegas, I feel like the Rails community is expanding quickly (it was the first RailsConf for 1/4 to 1/5 of the attendees) and that the community is organizing itself to welcome a new audience (better documentation, great initiatives like <a href="http://railsbridge.org/" target="_blank">railsbridge.org</a>, willingness to help), as well as trying to be more available to the &#8216;Enterprise&#8217; world.</p>
<p>These feelings were enforced during our Rails Activism BOF and after talking with 3rd party developers and sponsors really trying to solve problems that newcomers to Rails are now facing. This is an exciting time.</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/05/08/railsconf-2009/feed/</wfw:commentRss>
		</item>
		<item>
		<title>On Engendering Strong Reactions</title>
		<link>http://merbist.com/2009/04/28/on-engendering-strong-reactions/</link>
		<comments>http://merbist.com/2009/04/28/on-engendering-strong-reactions/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 01:16:03 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=476</guid>
		<description><![CDATA[To start with, I would like to make it clear to everyone that I do sincerely care about the larger gender issues that my presentation touched off.  I have also replied and otherwise corresponded with everyone who has contacted me about my presentation, just as I have tried to reply to all of the blog [...]]]></description>
			<content:encoded><![CDATA[<p>To start with, I would like to make it clear to everyone that I do sincerely care about the larger gender issues that my presentation touched off.  I have also replied and otherwise corresponded with everyone who has contacted me about my presentation, just as I have tried to reply to all of the blog posts that have been brought to my attention.  At this point, however, it is clear that this issue has grown too large to be resolved through one-on-one contact, hence this public statement.</p>
<p>I have made a specific point of exchanging emails with most of the bloggers who addressed the gender issue, and I did so because I care about minority involvement in our community.  I cared about this issue well before GoGaRuCo or this particular presentation, despite what anyone might think to the contrary, running the presentation past my wife/business partner and other colleagues well before I gave my talk.  They, at least, understood the goals of my presentation, which were to leaven an otherwise dry topic with humor.  It genuinely was not my intention to cause offense.  People may be driven by personal choice or cultural background to take offense at any number of things, of course, but I think there is always a clear difference between trying to offend people vs people choosing to take offense.</p>
<p>My view is that offending someone is walking up to them and saying: &#8220;You suck, your code sucks and your partner&#8217;s code sucks!&#8221;.<br />
That is not what I did in my talk.  In the case of my talk, people knew what to expect, they *picked* the talk, and were warned by the organizers before I started that I would be using imagery potentially offensive to some.  The topic of my talk was obvious, and I would have hoped that people who were likely to be offended would have simply chosen not to attend my talk or read my slides on the internet.  It&#8217;s like complaining that television has too much material unsuitable for children, yet not taking steps to limit their viewing of it.  You can&#8217;t have it both ways.</p>
<div>Now that I have explained my view point as clearly as I can, I would also like to express my sincere regret that this situation has brought bad publicity to Rails and the loss of one of the Activism team members.  I understand how people who are concerned about gender equality could have taken my presentation badly and misjudge my intentions, if they did not know me.</div>
<p>In the same way, people have been rather quick to judge the entire Ruby/Rails community based on my presentation and the comments of a few people. I have noticed, for example, a lot of comments making sweeping generalizations about Americans, Republicans, women, Ruby, Rails, men etc.. leading to an exchange of insults, things getting personal, and everybody feeling the need to fuel the flames by sharing their own opinion in public.  While there is nothing wrong with sharing your approval or disapproval, I think it has also contributed to blowing this entire thing completely out of proportion.  I would like to ask people to step back and reflect upon whether we are contributing anything useful to the discussion.</p>
<p>We can argue forever about morals, professionalism, ethics, respect, etc., though this is all a distraction from the real problem that was raised by Sarah, namely that we have very few minorities in the Ruby community, especially women.  Minorities do need to be more represented!</p>
<p>So, instead of continuing an increasingly pointless debate about my slides, I would like to encourage the community to look further and see how we can change things.<br />
Education, outreach, and self-censorship are certainly some of the options available.   Please read <a href="http://www.quirkey.com/blog/2009/04/27/the-ghetto-of-the-mind/" target="_blank">Aaron&#8217;s blog post</a> and see how you might make a difference.</p>
<p>For those who still want to talk with me, I will be at the <a href="http://en.oreilly.com/rails2009/public/schedule/detail/8772" target="_blank">RailsConf devchix&#8217;s discussion panel</a> and more importantly, if you care about Rails Activism and you want to see things evolve, be sure to come to our <a href="http://en.oreilly.com/rails2009/public/schedule/detail/9047" target="_blank">Birds of Feather discussion of Rails Activism</a>.</p>
<p><strong>Update:</strong> Some people thought I wasn&#8217;t clear enough about my position and I therefore tweeted the following: <a href="http://twitter.com/merbist/status/1661486850">&#8220;I obviously made a mistake. I didn&#8217;t mean to offend anyone but since I did, I failed.&#8221;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/04/28/on-engendering-strong-reactions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Merb 1.1 delayed</title>
		<link>http://merbist.com/2009/04/14/merb-11-delayed/</link>
		<comments>http://merbist.com/2009/04/14/merb-11-delayed/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 17:02:45 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=472</guid>
		<description><![CDATA[We made the decision to slightly delay the release of Merb 1.1 as we ended up changing the scope of what we wanted to make available in the 1.1 release. If you have been following our releases, you know that this is not something we usually do, but we strongly believe that this is actually [...]]]></description>
			<content:encoded><![CDATA[<p>We made the decision to slightly delay the release of Merb 1.1 as we ended up changing the scope of what we wanted to make available in the 1.1 release. If you have been following our releases, you know that this is not something we usually do, but we strongly believe that this is actually something that will save us time for the next release.</p>
<p>The big themes for 1.1 are full Ruby 1.9 support and Rails3 compatibilty: action-orm(previously called active-orm) and the new router.</p>
<p>While on one hand, Ruby 1.9 work is 99% done (we still have a couple of failing specs with action-args) and action-orm just needs to be merged in, on the other hand, the new router currently does more than what we initially planned for. It actually covers stuff we scheduled for 1.2.</p>
<p>Here is a quick preview of what Carl has been working on:</p>
<p>Merb&#8217;s router is now extracted into a rack middleware library and a bunch of features to try to get &#8220;mountable apps&#8221; working in Merb 1.1 have been added.</p>
<p>The proof of concept has been submitted to the Rack development mailing list and the draft is available at:<br />
<a href="http://github.com/carllerche/rack-router/tree/master" target="_blank">http://github.com/carllerche/rack-router</a></p>
<p>Merb, CloudKit, Sinatra and more than likely Rails3 should be using this new rack based router. This is a huge step for the Ruby community!</p>
<p>Here is the abstract explained by carl:</p>
<blockquote><p>Conceptually, rack-router allows you to create a two way map between HTTP requests and Rack applications. It is built as a piece of middleware that takes in a set of routes.<br />
When a request comes in, the router will compare that request against the set of routes until it finds one that matches. It then calls the associated rack app.<br />
It can also generate URL&#8217;s that you can use to link to other mountable apps.<br />
It also goes quite a bit further and attempts to make reusing rack applications completely painless (what we are tentatively calling &#8220;mountable apps&#8221;).</p></blockquote>
<p>For more information, check the <a href="http://groups.google.com/group/rack-devel/browse_thread/thread/41334bce83cb173f" target="_blank">mailing list thread</a>.</p>
<p>Now that the proof of concept has been accepted, the new implementation needs to be optimized to match the speed of the previous router. Currently the new router is pretty slow compared to 1.x router.</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/04/14/merb-11-delayed/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Merb 1.0.11 (minor release)</title>
		<link>http://merbist.com/2009/03/31/merb-1011-minor-release/</link>
		<comments>http://merbist.com/2009/03/31/merb-1011-minor-release/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 06:10:57 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[merb]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=462</guid>
		<description><![CDATA[Following the DataMapper 0.9.11 release, we just pushed a new minor Merb release.
This release is mainly targeting new developers and Windows users wanting to install the full Merb stack. Others can simply update their dependencies if they use the dependencies.rb file or install the new gems if nothing is bundled and no hard dependencies are [...]]]></description>
			<content:encoded><![CDATA[<p>Following the DataMapper 0.9.11 release, we just pushed a new minor Merb release.</p>
<p>This release is mainly targeting new developers and Windows users wanting to install the full Merb stack. Others can simply update their dependencies if they use the dependencies.rb file or install the new gems if nothing is bundled and no hard dependencies are set.</p>
<p>Merb is a metagem which installs a bunch of other gems (merb-core, DataMapper and a lot of small gems). The problem was that Merb was trying to install DM and dm-types, unfortunately, dm-types had a dependency on a gem which couldn&#8217;t be installed on Windows. All of that is now fixed and Windows users can install Merb 1.0.11 without having to manually pick the gems they need.</p>
<p>This release also includes a fix for people using CouchRest, a CouchDB Document Mapping DSL.</p>
<p>Merb 1.1 is still planned to be released in April. A majority of the work has been done, but since Yehuda and myself are going to be traveling, the release will be slightly delayed.</p>
<p>The great news regarding Merb 1.1 is that, on top of being fully Ruby 1.9 compatible, and using action-orm, and being closer to Rack, Yehuda and Carl have been working on the router to make it awesomer and ready for mountable apps <img src='http://merbist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Stay tuned for more news.</p>
<p>update: People using CouchRest or another CouchDB ORM/DSL make sure you define your resources route with an identifier:</p>
<p>resources :articles,        :identify =&gt; :id</p>
<p>Otherwise, resource(@article) won&#8217;t work. (This is usually done by the merb orm plugin and I might add it to CouchRest in the future)</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/03/31/merb-1011-minor-release/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Merb 1.0.10 (minor release)</title>
		<link>http://merbist.com/2009/03/18/merb-1010-minor-release/</link>
		<comments>http://merbist.com/2009/03/18/merb-1010-minor-release/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 01:11:35 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[merb]]></category>

		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=456</guid>
		<description><![CDATA[We just pushed a really tiny update because of a bug in 1.0.9 affecting people using: Merb::Config[:max_memory]
Merb::Config[:max_memory] has been fixed and now polls for memory usage every 30s instead of 0.25s. (memory is set in KB)

This new version also uses DataMapper.repository instead of Kernel#repository (DM and Vlad related bug fix)


We are still on schedule for [...]]]></description>
			<content:encoded><![CDATA[<p>We just pushed a really tiny update because of a bug in 1.0.9 affecting people using: Merb::Config[:max_memory]</p>
<p>Merb::Config[:max_memory] has been fixed and <span class="status-body"><span class="entry-content">now polls for memory usage every 30s instead of 0.25s. (memory is set in KB)<br />
</span></span></p>
<p><span class="status-body"><span class="entry-content">This new version also uses DataMapper.repository instead of Kernel#repository (DM and Vlad related bug fix)</span></span></p>
<p><span class="status-body"><span class="entry-content"><br />
</span></span></p>
<p><span class="status-body"><span class="entry-content">We are still on schedule for Merb 1.1 which is planned for early April. (If you install Merb from our edge server, the latest version should already be Ruby 1.9 compatible)<br />
</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/03/18/merb-1010-minor-release/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Merb 1.1 roadmap</title>
		<link>http://merbist.com/2009/03/02/merb-11-roadmap/</link>
		<comments>http://merbist.com/2009/03/02/merb-11-roadmap/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 19:20:34 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[merb]]></category>

		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=448</guid>
		<description><![CDATA[Yesterday, Carl Lerche, Yehuda Katz and myself had a meeting to discuss Merb 1.1&#8217;s roadmap.
Key items on the agenda were:

 Ruby 1.9
 Mountable apps
 migration path to Rails3

After spending some time arguing back and forth, we decided that few things had to happen before we could migrate the current slices to pure mountable apps. Freezing [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, Carl Lerche, Yehuda Katz and myself had a meeting to discuss Merb 1.1&#8217;s roadmap.</p>
<p>Key items on the agenda were:</p>
<ul>
<li> <strong>Ruby 1.9</strong></li>
<li> <strong>Mountable apps</strong></li>
<li> <strong>migration path to Rails3</strong></li>
</ul>
<p>After spending some time arguing back and forth, we decided that few things had to happen before we could migrate the current slices to pure mountable apps. Freezing the releases while waiting to get that done doesn&#8217;t seem like a good idea.</p>
<h3>Therefore, here is the plan for Merb 1.1:</h3>
<ul>
<li><strong>Ruby 1.9 full compatibility</strong> (with the very appreciated help from <a href="http://twitter.com/maiha" target="_blank">Maiha</a> and <a href="http://blog.s21g.com/takiuchi" target="_blank">Genki</a> (preview of their work <a href="http://merbi.st" target="_blank">there</a>)). Because Merb depends on different gems, we also need to work with 3rd party developers to make sure Merb&#8217;s dependencies are Ruby 1.9 compatible</li>
</ul>
<ul>
<li><strong>Merb helpers</strong> (fixes, enhancement and missing helpers)</li>
</ul>
<ul>
<li><strong>Make Merb controllers, rack endpoints</strong>. This is a fully transparent change for the framework users. By making this switch, we offer more flexibility to the router (you can mount a sinatra app for instance) and we adopt the same approach as Rails 2.3 making the transition to 3 much easier and facilitating the implementation of mountable apps. Again, this is an internal change and you won&#8217;t have to change anything in your application.</li>
</ul>
<ul>
<li><strong>Router optimization</strong>, Carl has been working on few tricks/optimizations for the router that will be available in 1.1</li>
</ul>
<ul>
<li><strong>Namespacing</strong>. If we want to make every single application, a potential mountable app, we need to namespace our applications. This is something we already do with slices, but currently generated applications are not namespaced. We are planning on doing that for 1.1 (backward compatible) to make mountable apps easier.</li>
</ul>
<ul>
<li><strong>ActiveORM</strong>. ActiveORM is an ORM abstraction layer developed by Lori Holden (AT&amp;T interactive) which helps with helpers and other parts of your code accessing your ORM directly. For instance, the errors_for method need to be implemented differently depending on the underlying ORM. ActiveORM offers mapping for the 3 major Ruby ORMs: ActiveRecord, DataMapper and Sequel but let you hook to it if you want to extend ActiveORM to support your own ORM.</li>
</ul>
<p>There is plenty to do but we decided to still try to have an expected release date: around the end of March. As always in the OSS world, this is something we hope for, not a promise <img src='http://merbist.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>What about Merb 1.2?</h3>
<p>1.2 will focus on mountable apps and we hope to get started on a separate branch before we release 1.1. However, mountable apps are hard to spec and we need a better feedback from the community. Tell us what you like with slices and what you don&#8217;t like. Let us know how you would like the new mountable apps to work. Be as precise as possible. (you can leave a comment here or on the mailing list)</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/03/02/merb-11-roadmap/feed/</wfw:commentRss>
		</item>
		<item>
		<title>merb progress</title>
		<link>http://merbist.com/2009/02/06/merb-progress/</link>
		<comments>http://merbist.com/2009/02/06/merb-progress/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 22:09:27 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[merb]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=439</guid>
		<description><![CDATA[As they say: fail early, fail often. Well, I&#8217;ve been failing to blog recently, but as always I have some good excuses  

Yehuda has been blogging a lot about the work done on the merge.
I have been busy working on probably the awesomest CouchDB Ruby DSL/ORM.
I have been working with the Rails Activists on [...]]]></description>
			<content:encoded><![CDATA[<p>As they say: fail early, fail often. Well, I&#8217;ve been failing to blog recently, but as always I have some good excuses <img src='http://merbist.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<ul>
<li><a href="http://yehudakatz.com/" target="_blank">Yehuda</a> has been blogging a lot about the work done on the merge.</li>
<li>I have been busy working on probably the <a href="http://github.com/mattetti/couchrest" target="_blank">awesomest CouchDB Ruby DSL/ORM</a>.</li>
<li>I have been working with the <a href="http://weblog.rubyonrails.com/activism" target="_blank">Rails Activists</a> on the <a href="http://newwiki.rubyonrails.org" target="_blank">new wiki</a> and many other projects.</li>
<li>My sister is visiting from France <img src='http://merbist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (most of my free time is not spent in front of a computer anymore :p)</li>
<li>I&#8217;ve been playing with MacRuby (see the end of the post)</li>
<li>Ohh and spent some time maintaining Merb and preparing 1.0.9</li>
</ul>
<h2>Merb 1.0.9</h2>
<p>Merb 1.0.8.1 has some issues with the merb-cache settings set in init.rb being called twice when you use some Rake tasks. (rake db:automigrate for instance).The problem is due to the fact that the rake tasks load the dependencies twice:</p>
<ul>
<li> Merb rake file loads all of your app dependencies and their rake tasks. (for instance rake db:automigrate is a rake task coming from merb_datamapper)</li>
<li>The task you are invoking might start merb itself to load the models etc.. and starting Merb reloads the dependencies.</li>
</ul>
<p>Dependencies have the option to have a require block. A require block is a Proc that gets called when the dependency is being required. In the case of 1.8.1, we added a default block to set merb-cache. The problem was that the block was being set and called twice and merb-cache was complaining that the default cache was already setup.</p>
<p>To fix this issue we worked on a band-aid type solution (read: kinda evil but ok). Even if you start Merb multiple times, the init.rb file will no only load once and the dependency require blocks will only be called once. However, in the case of merb-cache, the setup block is being called everytime you go through the bootloader. That&#8217;s why we added a verification on the block itself. In the long term, we are going to fix things nicely and optimize the way merb-cache loads.</p>
<p>We also addressed some other issues. Some people have been pointed out issues with some merb-helpers and patches were provided by the community (thanks a lot).</p>
<p>Talking about patches, we also accepted a patch fixing a small problem with merb-auth and some open-id servers.</p>
<p>Ruby 1.9.1: We started going through all the different places were things are not compatible yet, most of the work that needs to be done right away is focused on the router. Carl has been working on that and you can check his branch to see how we are doing. During the next week we will try to get things ironed out, we still don&#8217;t know how we are going to deal with the fact that action-args uses parsetree which is not 1.9.1 compatible.</p>
<p>The upcoming version also gets a brand new feature: memory monitoring by the merb master process. The master process checks that the workers don&#8217;t use too much memory ( you can set what you consider beign too much memory using Merb::Config[:max_memory]) and if one of the workers reaches the limit, it does a kill -1. It then waits a configured amount of seconds (defaults to 5) then kill using -9.</p>
<p>Finally, we also fixed a bunch of tiny issues.</p>
<p>1.0.9 should be released in the next few days.</p>
<hr />
<h2>MacRuby</h2>
<p>Finally, because for those interested in MacRuby here are my slides from last night&#8217;s SDRuby meetup:</p>
<div id="__ss_996441" style="width: 425px;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="MacRuby - When objective-c and Ruby meet" href="http://www.slideshare.net/mattetti/macruby-when-objectivec-and-ruby-meet?type=presentation">MacRuby - When objective-c and Ruby meet</a><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=macrubysdruby-1233909088215608-1&amp;rel=0&amp;stripped_title=macruby-when-objectivec-and-ruby-meet" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=macrubysdruby-1233909088215608-1&amp;rel=0&amp;stripped_title=macruby-when-objectivec-and-ruby-meet" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/mattetti">Matt Aimonetti</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/02/06/merb-progress/feed/</wfw:commentRss>
		</item>
		<item>
		<title>recent news Jan 13 2009</title>
		<link>http://merbist.com/2009/01/13/recent-news-jan-13-2009/</link>
		<comments>http://merbist.com/2009/01/13/recent-news-jan-13-2009/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 04:20:46 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
		
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=436</guid>
		<description><![CDATA[Lately, I have been really busy with my business, an upcoming training and some non rails-merb related experimentations. (I&#8217;m learning objective-c and playing with macruby)
However, here are some of the latest news:

Merb 1.0.8 should be released soon with some bug fixes and some improvements
The Merb book got 2 new sections, Sequel and Active Record. I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>Lately, I have been really busy with my <a href="http://ma-agile.com" target="_blank">business</a>, an <a href="http://merbclass.com" target="_blank">upcoming training</a> and some non rails-merb related experimentations. (I&#8217;m learning objective-c and playing with <a href="http://www.macruby.org/trac/wiki/MacRuby" target="_blank">macruby</a>)</p>
<p>However, here are some of the latest news:</p>
<ul>
<li>Merb 1.0.8 should be released soon with some bug fixes and some improvements</li>
<li>The Merb book got 2 new sections, Sequel and Active Record. I&#8217;ll be spending quite a lot of time on the book in the next weeks.</li>
<li>Ted Han is working on reorganizing the <a href="http://wiki.merbivore.com" target="_blank">Merb wiki</a></li>
<li>We started a new mailing list for people wanting to help with the <a href="http://groups.google.com/group/rubyonrails-wiki" target="_blank">Rails wiki</a></li>
<li>We also started a mailing list for people wanting to help with the <a href="http://groups.google.com/group/rails-activism" target="_blank">activism effort</a></li>
</ul>
<p>For those in the Phoenix area, next week, <a href="http://yehuda" target="_blank">Yehuda</a> and I will be at <a href="http://integrumtech.com/" target="_blank">integrum</a>/<a href="http://gangplankhq.com/" target="_blank">gangplank</a>&#8217;s for the <a href="http://phxrails.com/" target="_blank">Phoenix Rails User Group</a>.</p>
<p>We are looking to meeting you all.</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/01/13/recent-news-jan-13-2009/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.978 seconds -->
<!-- Cached page generated by WP-Super-Cache on 2009-07-03 17:23:35 -->
<!-- Compression = gzip -->