I'm super busy with my duties as technical chair and M.C. for the
conference and I'm not getting the opportunity to live-blog the
Professional Ruby Conference the way I would like to. Luckily Nick
Quaranto is doing a great job documenting the proceedings in details
here: Professional Ruby Conference Notes
So far it's been a really great experience. Along with friends and familiar faces, I'm also meeting amazing people from all sorts of backgrounds and it's doing wonders for my reputation (heh!)
The single track, 30-minute format is wonderful and we've gotten ample praise about it. Everyone in the audience gets the same content at the same time and has plenty of opportunities to meet informally and discuss what was presented. We have quite a mix of experience levels in the audience -- keeping the talks short and sweet ensures that no single group is bored for an extended period of time. We've covered the gamut of topical ranges, from pure case study "this is what we did" in the New York Times newsroom to Philippe's detailed explanation of DTrace.
We distributed two pieces of colored paper to each person, which they used to vote on their preferred choice from the two displayed on the screen. After most of the votes, I asked for the audience to chip in with an explanation (and occasionally apology) for their choice.
I was asked to post the results, so here is my list of the smackdown lineup:
vim vs emacs: About half of the audience voted, skewed heavily to vim. I didn't want to start a "religious war" so I didn't ask for elaboration.
svn vs. git: Heavy voting, with fairly even split (perhaps slightly skewed to svn). Will from
jQuery vs. Prototype Apparently when I introduced this lineup I said "...still using Prototype" which I apologize for, since it was leading the audience and it got a laugh. I've been a fan of Prototype for a long time, but Hashrocket as a whole has switched over to jQuery in the last 6 months.
Chad Pytel told us that he's still using Prototype on existing projects because it doesn't make sense to switch over, essentially "if it's broke don't fix it".
Sinatra vs. Camping A few people in the back of the room voted for Sinatra. Matt Bauer told us that it's good for very small standalone web apps and yes, it's ready for production-use.
Blueprint vs. YUI About half the audience voted, skewed towards Blueprint. Someone pointed out that the 960 Grid System is cool, and then we spent at least 30 seconds trying to figure out the name and URL.
MySQL vs. Postgres Heavy vote for MySQL. Consensus appears to be that if you come from big enterprise databases then you're going to prefer Postgres. Also, Postgres is more standards-compliant and
blank? vs. empty? This one was a joke (pretty much) that Sebastian and I included in the smackdown to remind the audience to consider the semantic meaning of API methods. The correct vote would have been for both, since they are not used for the same purpose. The blank? method is for strings and returns true for strings consisting of purely space characters. The empty? method is primarily meant for arrays, but works on strings and returns false for strings consisting of purely space characters.
attachment_fu vs. paperclipEvenly split audience, but consensus was that Paperclip is better than attachment_fu in terms of features and flexibility and its implementation code is very clean and easy to figure out. Also, paperclip allows for attaching more than one file to a single model.
system gems vs. frozen gemsFrozen gems won hands-down. Bryan Liles said that if anyone thinks system gems is the way to go then obviously they aren't doing production deployment. Sebastian chimed in that using system gems saves 10 seconds on his deploy time, which everyone took as a joke. Not sure if he meant it seriously. :)
Vlad vs. CapistranoA handful of people voted for Vlad, but otherwise the audience favored Capistrano heavily. I asked Matt Bauer to defend Vlad. He mentioned some reasons about its simplicity and how bad early versions of Capistrano were, but in the end he said it's not worth switching at this point because the pain-points of Capistrano have been resolved.
FactoryGirl vs. ObjectDaddyNot too many people voted and those that did went for FactoryGirl. Earlier in the conference we heard from the testing panel that ObjectDaddy has way too much magic to be useful.
resource_controller vs. make_resourcefulA couple of people voted for each. Got the impression that the audience was largely unfamiliar with these great plugins, so I asked Joe Fiorini to explain them. Bottom line, if you're writing your apps in a RESTful manner then you should check out and use one of these libraries because it'll spare you a bunch of boilerplate code.
HAML vs. ERBOne of my favorite topics! The split was maybe 33% HAML with surprisingly heavy voting. The reasons for sticking with ERB? Mostly to keep designers happy or based on what I detect as a resistance to change. I gave my typical impassioned explanation of how HAML lessens the amount of mental mapping needed to effectively think of your views as semantic markup and match them to your CSS.
Bluecloth vs. Redcloth Meh...
RMagick vs. ImageScience Meh...
restful_authentication vs. clearanceThis one was funny. A handful of votes went up for Clearance, which disturbed its author, Chad Pytel. He stood up and told us not to use it since it's not ready. The offshoot of Github's popularity, is that once public projects go up, they start getting used -- whether they're ready or not. :)
Test::Unit vs. RSpec I was pretty much out of time at this point, so I skipped a bunch of slides to this matchup. Even distribution and some confusion about whether Shoulda belongs to TestUnit (yes) or RSpec. I think the consensus is that it doesn't matter as long as you're putting some effort into testing. I wondered to myself if the people that didn't vote weren't doing any testing. Things that make you go "hmm..."
If you're so inclined, take a moment to tell me your vote for the following smackdown matchups that I didn't have time to get to in the session...
This commentary about Palin was just too good to pass up (font emphasis mine):
Let's be real in a way the national media seems incapable of: this person should never have been placed on a national ticket in a mature democracy. She was incapable of running a town in Alaska competently. The impulsive, unvetted selection of a total unknown, with no knowledge of or interest in the wider world, as a replacement president remains one of the most disturbing events in modern American history. That the press felt required to maintain a facade of normalcy for two months - and not to declare the whole thing a farce from start to finish - is a sign of their total loss of nerve. That the Palin absurdity should follow the two-term presidency of another individual utterly out of his depth in national government is particularly troubling. 46 percent of Americans voted for the possibility of this blank slate as president because she somehow echoed their own sense of religious or cultural "identity". Until we figure out how this happened, we will not be able to prevent it from happening again. And we have to find a way to prevent this from recurring.
One of the promises of our new President-elect Obama is to establish a role of CTO in his new administration. A lot of blogger and media attention has focused on potential candidates for this position, among them Eric Schmidt of Google and Lawrence Lessig of Creative Commons. However, I think it is more important at this point to participate in a dialogue about the initiatives that will be tackled by our new CTO.
The first one about adoption of Agile is totally serious and I believe it's one of the only ways to reduce costs and improve effectiveness and success rates of government-sponsored IT projects. For example, the Department of Homeland Security (DHS) Directorate of Science and Technology has an annual
budget of $830 million. It has 250 projects in process and 50 percent
of them are expected to fail, according to Jay Cohen, Under Secretary for Science and Technology for the DHS.
Breaking that status quo is going to be a ridiculous challenge and will require radical and idealistic thinking from the top.
The second priority suggestion, to "standardize on Ruby on Rails" is just one of my (unabashedly self-serving) pet causes that I'm not 100% serious about, but I think merits some debate. Does it make sense for the government to standardize on any particular technology? My fear is that the normal way that government agencies go about making technology decisions is skewed towards big vendors with money and influence and without a degree of activism on our part, projects will continue to be based on proprietary and brain-dead old technology.
By the way, the Obama transition team also announced its internet outreach staff yesterday, but as far as I can tell everyone named so far comes from the existing group of insiders already involved with Obama via campaign operations. I will be much happier if/when I begin to see Web 2.0 thought-leaders such as Lawrence Lessig drafted for those jobs. Frankly, I'm still somewhat dazzled that Obama actually won and that we're having this conversation with any degree of seriousness.