Rails Conference 2006 - Day 3
Posted by Mike Blake Wed, 28 Jun 2006 02:50:00 GMT
Working Software Over Comprehensive Documentation
After throwing back a few drinks with some software icons the night before, I managed to make it to the morning talk, given by Justin Gehtland. Justin covered a bunch of the basic Ajax tricks available in Rails then finished his presentation with a bang.
He debuted Streamline, an open source framework that drasticaly improves scaffolding. I’m looking forward to the release in the next couple weeks.
Next up was Doug Fales who is a great example of a single developer creating some great software in a way that just wasn’t possible in the not too distant past. He showed us WalkingBoss which allows users with digital cameras and gps locators to document hikes, runs or rides online.
Inspiration
Afterwards I took a break and began blogging in the lobby about the day before when suddenly an interview with David Heinemeier Hansson broke out as I mention near the end of my post below.
Most of what David said, he said again in his keynote. My favorite part of the interview, the woman interviewing him looked around and at me and said, “It seems like there’s a lot of people here in their 20’s and 30’s.” Then she asked if only young people use Rails. I must look like such a young whipper-snapper carrying around my mac-book on my back.
David replied “I don’t think age matters really.” And continued to say that it’s more attitude and willnigness to learn new things. When asked about confronting people with old habits he responded that if he sees someone doing something that can be done a better way, it would be immoral not to say anything. It really struck me at that moment how driven this guy is.
The interviewer then asked why he made Rails open source. He responded that it would be selfish not to. Again I sensed that this is a man with deep convictions which clarifies just why his framework is so good.
After the interview ended, I sat there fully enjoying the moment. Some Charlie Parker came on, “Hot House” with Dizzy Gillespe from that video clip of the two of them. Then an interview with Chad Fowler began. Chad mentioned to the interviewer that he is a Jazz Saxaphone player, and everything was groovy.
Motivation
In the afternoon Mike Clark gave an awesome presentation on testing, and managed to get some guys who admitted to neglecting testing excited about doing it.
[Nathaniel Talbott] gave a cool talk about Homesteading, which inspired this site, barnraisr .
Today the focus was on working software, and the keynote from dhh was no exception.
Edification
David’s not a preachy guy. He got right into telling us some of the latest enhancements going in to Rails. He also repectfully disagreed with Dave Thomas a bit about making Rails flexible enough to support poorly designed corporate databases. David certainly hasn’t seen as much of the world as Dave Thomas has. But you’ve got to admire his idealism.
On page 241 in Agile Web Development with Rails is a section called “When a Join Wants to be a Model”. This section really made me think when I first read it, and dhh talked about this design technique quite a bit in his keynote. He talked about when a contoller has 12 methods or something like that, you’re probably missing a model in your domain. Also, when method names have namespaces, or underscores, they likely belong somewhere else. He touched on interesting concepts that I had never really grasped, like modeling Adjectives and Adverbs. Both are easy with ruby.
| Speech | Design Concept | Ruby | Java |
|---|---|---|---|
| Noun | Class/attribute | Class | Class |
| Verb | method | method | method |
| Adjective | AOP | Mixins | Langauge Extentions |
| Adverb | Dependency Injection | Closures | IOC Container |
Adjectives are typicaly Mixins like Enumerable or Comparable. Adverbs, which modify behavior of a verb (function), are code blocks (or closures) in ruby. Then he took a dig at Java and pointed out that Java needs Dependency Injection and Aspect Oriented Programming to accomplish the same things.
The most stunning enhancement he talked about is ActiveResource. ActiveResource provides an HTTP interface for basic CRUD operations on a model.
He proposed using POST, GET, PUT and DELETE to represent Create, Read , Update and Delete repsectively.
In order to handle PUT and DELETE which aren’t implemented by most HTTP servers or browsers (yet), he proposed having a hidden variable in the HTTP header along with a POST to signal the correct action to the server.
ActiveResource would of course support the usual types of authentication. The great thing is, it would be easy to create web apps in any langauge to conform to this clever protocol. So dhh may have greatly simplified how we handle RESTful (I had to look it up too) Web services.
Recreation
After the speech, Gregg and I decided to head towards downtown Chicago. Gregg mentioned earlier in the week that he and his wife love going to the theater, so I located a theater in an interesting neigborhood just within the city limits. As the Agile Ones say, “Individuals and Interactions over processes and tools.”


Great article! I think that many of us realised that we have unmodeled joins in our applications. I guess it is because many of us remember how hard it was to do all that O/R code. With Rails it is easy!