WindyCityRails 2008 conference notes

Published 09/23/2008 – Events Programming1 comment

What follows are my notes from the WindyCityRails 1-day conference held Saturday September September 20th, 2008 in Chicago.

DHH Q&A

David (DHH) had a 30-minute morning Q&A session. Recently 37Signals publicly discussed performance-improvement work to Basecamp, so it did not surprise me that performance was a theme of David's discussion. David said "optimize for HTTP" to improve the user experience most. Do this by setting long expiration headers, gzipping static content, and using etags. Follow guidelines from tools like the Y!Slow plugin. David discussed an upcoming addition in Rails, a "fresh?" method available on "request" which prevents generation of a page again if the etag is the same.

When asked about guarding intellectual property (Ruby code) in Rails apps, David suggested trying to host it (like Basecamp). Regarding upcoming thread safety in Rails 2.2, David said this is like free ice cream, everyone loves it. However for most applications, using the Matz Ruby interpreter, there wouldn't be much performance improvement (but hey, it's still free ice cream). JRuby (or other alternative Ruby interpreters) will benefit more because it has true system threads More JRuby information here.

David discussed some "ActiveModel" work forthcoming in Rails that would replace cache sweepers. He also discussed internationalization support. A "translate" function is how a developer will look up a language string. He discussed language peculiarities the Rails core team has discovered as a result of adding internationalization support, describing how in Russian, the month is said differently depending on the format of the date string. One person asked what David was excited about on the web in general, he replied CouchDB (and document databases) are interesting. My personal question however, whether he arrived in his Lamborghini, went unanswered.

Metrics and testing

A testing tool 'flog' was demonstrated. It assigns numbers to Ruby methods, where higher numbers indicate more complex methods. More complex methods could be good candidates for refactoring. Saikuro is a testing tool that analyzes cyclomatic complexity. Semi-related, one presenter mentioned a "developer card" which could be part of a user story approach to project planning. A developer card builds explicit time into the project for developer activities like refactoring. "Source control churn" was mentioned, with the idea being that files that are checked in very often are a "smell" and potential candidates for refactoring. metric_fu 4 is a Rails plugin for metrics and reports.

Web development on iPhone

iPhone Mobile Safari supports CSS3 properties like -webkit-box-shadow. Using Safari on the desktop? Use XRAY for CSS and DOM help. "Tank Engine" was announced by the creator Noel Rappin (github source), a successor to plugin rails_iui, addressing issues he has faced with prior tools. Many developers will be excited to hear it is built on jQuery.

Sleight of Hand for the Ruby man

Aaron Bedra demonstrated writing a configuration file parser using metaprogramming techniques. He mentioned the Inspector tool 6 that lets developers run Inspector.where_is_this_defined in script/console to find where a method has been redefined. He recommended the Pragmatic Programmer screencast series on metaprogramming.

Merb

Yehuda Katz overviewed Merb, a Ruby web development framework (an alternative to Rails) approaching its "1.0" release. Small points I noted: "plugins stay stable" and code like "logged_in?" could be moved to the router (equivalent to routes.rb in Rails) instead of the application controller. Merb can detect whether a page is page cacheable or action cacheable, and do that automatically. Yehuda demonstrated managing Merb as a single process with Ruby Enterprise Edition while still having multiple Mongrel instances to which requests were routed (he had nginx doing load balancing), providing easier management as seen with Passenger Rails deployment, however this is built-in to Merb and does not require installation of a separate server software. Some of the above features may not be available until the 1.0 release.

RSpec

Cucumber is a replacement for StoryRunner from RSpec. Off topic: iGo is a car sharing program not available in Minneapolis.

1 comment

@SamSchroeder

@SamSchroeder 3 months ago wrote:

I'm glad you took notes for the metrics section as I was in the other session. Thanks.

Comment Form


(not displayed)
 

(optional)
 

HTML removed, line breaks preserved, consider a pastie for special formatting.