Archive for June 2008

I was playing around with rake the other day in an attempt to make Spree compatible with Rails 2.1 when I discovered an interesting new feature.  I began by experimenting with overriding the 'db:migrate' task that ships with Rails.  I took the original contents of the task and pasted them into my new rake file.  I then modified them by adding other steps.

Everything was working fine until I tried to modify ':abort_if_pending_migrations.' I kept getting only the listing of regular migrations that were to be run (instead of my the additional migrations that I was adding in my overloaded rake task.)  After struggling with this for a little while I realized something.  Rake isn't overriding these tasks, its calling both of them!

I verified this with the following simple experiment.

foo.rake


task :bar => :foo do
  puts "bar"
end

task :foo do
  puts "foo"
end

$ rake foo
foo
bar

foo_monkey.rake


task :foo do
  puts "monkey: foo"
end

task :bar do
  puts "monkey: bar"
end

$ rake foo
foo
monkey: foo
bar
monkey: bar

Well Rails Conf ended up being a very satisfying experience.  I was very impressed at how well the conference organizers took care of the problems that cropped up.  I also found the "intensity level" of the attendees went down each day we were there.  That made it easier to interact with people and find out more about what folks were up to.  Props to Chad Fowler who I'm sure put way too much of his precious time into organizing this thing.

If you never have been to Rails Conf, I would definitely recommend going.  You will get more out of the experience if you are a beginner to intermediate Rails developer.  I'm really more of an intermediate Rails developer (even though I am a very experienced developer in other languages and frameworks) so I learned a lot.  Even the experienced guys I talked to seemed to feel that they learned at least one new thing at every talk they went to.  I would also recommend the conference If you are interested in a full time job doing Ruby on Rails.  There were tons of people there doing recruiting. 

Overall I was impressed with the quality of the presentations.  The presentations were polished and most of the speakers had a very engaging speaking style.  The presenters were also extremely knowledgeable about their topics.  The presentation times were typically 55 minutes so they were long enough to cover some interesting ground but not so long that they became excruciating.  Most presenters used the entire time and took only one or two questions.  You could always ask them your question if you bumped into them at lunch or whatever.  Another nice touch was that all of the slides are now available on the conference website (100% necessary since they tend to breeze through them quite quickly.)

The second day of the conference was a complete reversal of the disaster the day before.  The keynote talk was by Jeremy Kemper of 37 Signals.  DHH introduced him and explained that he was one of the trusted people in charge of day to day Rails development now.  Jeremy wasn't exactly the most exciting speaker but the content was engaging enough that I enjoyed the talk.  He outlined the new features of Rails 2.1 and announced its release (which didn't really come as a shock to anyone.)  I have been reading about these features for a few weeks now but it was cool to see someone demonstrate them live.

The session crowding problem was completely solved.  They reorganized the conference space and made better use of the larger rooms.  I attended a session during every single timeslot yesterday and enjoyed them all immensely.  There was also a lot of extra space to set down you gear, etc. and they had setup additional projection screens midway back in the larger rooms for the people sitting in the way back.  I should also mention that they had powerstrips everywhere in the rows so if you wanted to bring your laptop you would have no issues there.  I personally did not bring my laptop but those that did were very happy about that aspect. 

In general I noticed less laptops and more people paying attention to the speakers.  That really improved the "vibe" of the conference for me personally.  I don't know why it affected me so much but its hard to get into the spirit of things when people are just sitting there typing Twitter messages to each other.  It seems weird to be experiencing the conference "virtually" when you are physically there! 

My attitude of the conference improved considerably from yesterday's feeling that I would probably not attend again.  Everybody seemed a lot more relaxed and focused on the conference which also improved the quality of interactions I had with other people.  Instead of bitching about the problems with the conference we were able to focus on interesting technical discussions.

The testing talks (one by Thought Works and one by the maintainer of Rspec) were both excellent.  I also forgot to mention the interesting BoF session the night before with the Radiant people.  I met Sean Cribbs and some of the other contributors to Radiant.  I also met several of the people who use Radiant.  In addition to learning more about how people use Radiant, I discovered that there continues to be a lot of similarities between the philosophies and long term goals of Radiant and those of Spree.

I met some interesting people during the meal periods.  In the hotel bar I met a guy that I had interviewed with for a Rails development position several months ago (before joining End Point.)  I also keep bumping into Craig McClanahan whom I know from my days at Apache.  He seems to be at the center of Sun's Ruby on Rails effort and talked very positively about the framework.  As the grandfather of one of the earlier web frameworks it was interesting to see him there with all of the young Turks leading the next generation of frameworks.

Another interesting topic that keeps coming up is DataMapper.  Apparently this is what the Merb people are using now instead of ActiveRecord.  A lot of random people that I talked with mentioned this as something they were impressed with and were interested in learning more about.  So if you were curious to know what the "buzz" was here at the conference, DataMapper is definitely one of those hot topics.

Late last night I ran into Obie Fernandez (author of The Rails Way) and his Hash Rocket team.  I complimented him on his book (which I will be finishing on the plane ride back tomorrow.)  People were trying to recruit us to play this strange nerd game called Werewolf.  At the time I was more interested in the cage fighting match on the TV in the bar (CBS of all channels.)  They were still playing the game when I left the bar and even though it was ridiculously late I decided to give it a try.  It was actually kind of interesting to see a group of programmers apply logic to situation where it was of questionable value.

The first day of the conference left a little bit to be desired.  The first problem is that the location itself is less then ideal.  The Doubletree Hotel is technically "walking distance" to the conference but in reality its several blocks to the OCC and then another few blocks of walking within the actual conference center to get to the sessions.  Generally I don't mind walking but I was irritated that if I needed to go back to the room for something (to drop off my laptop, change my clothes, call my son) it was a one hour round trip. 

The location of the conference center is also less then ideal in that there are no decent restaurants or services surrounding the center itself.  Of course the real downtown area is only a few free light rail stops away but I've been to many other cities where their convention centers were in better locations (ie. hotel across the street and interesting stuff to do all around the convention center.)  The free light rail system (free in the immediate downtown area only) is pretty awesome.  The city of Portland itself is also pretty cool.  Its just unfortunate that the convention center isn't located in a better area. 

The crowds were also a big problem.  At one point they literally barred the doors for every session because of crowds (apparently a fire marshal was involved in that decision.)  That was irritating enough but when I went down to see the exhibit hall that was closed to.  The unhelpful conference staff simply told me that it was closed because it was "time for sessions."  Its the first time I've ever heard of a conference where the exhibitors shut everything down to go to the sessions. 

DHH's keynote talk was later that evening.  He gave an interesting speech on how Rails programmers should be investing their "surplus" time.  It was really more of a motivational speech without any technical content.  The speech was solid though and it was well received.  I ran into DHH after the speech and mentioned the situation about the closed sessions.  He was really pleasant to talk with and emphatically agreed with me that this was not acceptable.  Obviously he has no control over the situation but he assured me that he had been told it would be taken care of by the next day.