David on Rails

http://www.nextangle.com/

We hired David of Basecamp and Ruby on Rails fame, to come in and teach us something about Rails. He asked me recently for a testimonial, so I figured I’d give one publicly.

We’d done our homework – watched the intro video and the 2-hour presentation, and played around with Ruby and Rails a bit before he came, and had prepared a list of questions. It felt more like a discussion, based on his experience with PHP, Java and other frameworks, and our experience, particularly with OpenACS. And we got all of our questions answered in full.



But what ended up having the biggest impact was that David had brought in his 17” Powerbook, and we had a chance to watch David work in his native environment, running everything locally, using TextMate, quickly modifying the data model using CocoaMySQL, running Rake to dump the data model and run unit tests.



Watching David demonstrated to me directly, visually, personally, a very productive way of working that broke with a number of traditions we’ve held for years, like Ye Shall Name Thy Constraints (just an example). It demonstrated in a powerful way that you can achieve pretty amazing things despite not naming your constraints. (Or even having the constraints in the first place—if they’re dealt with in the layer that interfaces with the database, the Model, why replicate that in the RDBMS layer? DRY!) Anyway, it obviously goes much deeper than just naming constraints, but meeting with David finally tipped me over to something I’d been drifting towards for years. It was way more than worth what we paid.



So that very same night, I went online and ordered a Powerbook (12” – I now realize that I should’ve probably gotten the 17” since I’ve pretty much stopped using both my Windows desktop at the office and my Thinkpad laptop – and yes, David told me to get the 17” ...).



A when Dalager a few days later pointed me to the Alistair Cockburn interview on IT Conversations, things just seemed to click.



These are exciting times. Get David to show you just how :)

6 comments

Sebastiano Pilla
 

Little disagreement Sorry, but I disagree a bit with this approach... If you subscribe to DRY, the database is the right place for your constraints: in the end, the data must come into the database and out of it, either by using OpenACS, or Rails, or JDBC, whatever. So in my view you add to your data as much meta-information as possible, in the form of constraints, or domains, or whatever your database supports. Then, you proceed to another layer to add something else, like an user interface with a .Net application, or an OpenACS module. I don't understand why doing all the work in the "Model" is acceptable, I'm still under the impression that is done because of serious limitations in the underlying RDBMS.
Read more
Read less
  Cancel
Dave Bauer
 

Am I missing something? I think maybe you are on to something, but I am not quite sure you got it across with this post :) I really agree that if you have an RDBMS that supports constraints, use them. I don't think that adding constraints has ever slowed me down. The reason you name them is so that you don't have to dork around in the data dictionary when you need to change something. I do agree that you need to focus on what is really important for your application, and make sure you are always making progress and delivering value. I am on the right track here? I just think maybe your example isn't getting across what you really wanted to say. BTW, did you also say that you ordered a Powerbook because of what you saw? I think what you really saw is someone dedicated to getting the most out of his tools. I bet if he had Linux and Emacs or Windows and whatever he would have wrung ever last bit of productivity out of the envoriment.
Read more
Read less
  Cancel
Guan Yang
 

What will you do? Does this mean the next time you <a href="http://www.rubyonrails.org/show/CommercialSupport">start up a Rails project</a>, you will use CocoaMySQL and not name your constraints?
Read more
Read less
  Cancel
Mark Aufflick
 

podCasting Thanks Lars for finally getting me hooked in podcasting. I was inspired to listed to the Alistair Cockburn interview enough to figure out how to hook my (slightly dodgy) LG mobile phone to my PC to listen to mp3's on the train. Planning to port openACS to Ruby now? ;) I love the look of the language, but I think I'll stick to Perl 5 for now.
Read more
Read less
  Cancel
Jonathan Ellis
 

Why constraints belong in the database "if they're dealt with in the layer that interfaces with the database, the Model, why replicate that in the RDBMS layer?" Because one of the reasons to use an RDBMS at all instead of an embedded object store is that an RDBMS lets you access your data with many different tools. If only one of the tools is aware of your constraints, you're playing russian roulette with your data.
Read more
Read less
  Cancel
Harish Krishnan
 

The C of ACID Wouldnt this be contrary to one of the core arguments of Openacs community not choosing to support Mysql initially. Apart from that wouldnt it be more work implementing such constraints at a higher level than the DB?
Read more
Read less
  Cancel

Leave a comment