Rails Conf 2010 Day 1

09 Jun 2010

I tweeted 73 times today. What the hell is wrong with me? When twitter went down in the middle of the day I panicked until I realized that things continue to exist even if you don’t tweet about them.

Anyway, here’s my thoughts on Rails Conf Day the First interspersed with relevant tweets in italics and director’s commentary.
(Is this Lazy? Yes – Bite me.)

Woke up to “Theme Song from Shaft” – Bring it #railsconf
Set the old iPod classic to some inspirational music to psyche myself up for a day of interacting with strangers. 160 Gigs of storage – take that solid staters.

I ate my customary breakfast of bacon topped with eggs, salt, and cheese and then was off to the castle-like mammoth Baltimore conference center.

Keynote - David Heinemeier Hansson

Number 1 Fave of DHH in Rails 3: Bundler. #railsconf
Nice to see some validation of my blatant fan-boy cheering on of Bundler. DHH loves it so suck it, haters.

DHH - “When I would swear Bundler was a piece of shit it usually turned out to be me not listing a Gem” #railsconf
Yep, just when I think it’s Bundler doing something wrong, it’s not. It’s the canary in the coal mine telling you about gem problems in your app. As such it gets blamed a lot for problems out of its control.

DHH - “Hashes are great but we’ve kinda been drunk on them for a long time” #railsconf
The new ActiveRelation gets rid of hashes in favor of method calls (.order vs :order => …) #railsconf
DHH - ActiveRelation makes building up queries much easier. #railsconf

The ActiveRelation stuff (covered in yesterday’s post a bit) does a good job of fighting ‘hasheritous’ and making queries readable. No small feat.

If you just please your core users you create an impenetrable framework. Stepping away from that is what makes Rails 3 great. #railsconf
This may be the most important but overlooked thing about Rails 3. Keeping things easy to get into and read while increasing the power of Rails is a powerful combination that will increase adoption.

DHH is bashing on the old routes format: concise but unreadable. #railsconf
DHH - “there’s just too much hashing going on” in routes #railsconf
DHH - The majority case is now complicated routes files and Rails 3 is trying to make them more readable. #railsconf
map.with_options is now a scope – looks cool #railsconf

This is something like the 4th re-write of routes. But the emphasis this time is on readability. Which is awesome as almost all routes files were becoming impenetable piles of hashes that did some bad ass shit. Rails 3 increases the bad ass but adds some intentionality.

If you like the new stuff in ActiveRecord, thank @miloops, whose GSOC project integrated Arel. Great job Emilio! #railsconf
True dat. Mad props to Emilio.

@dkastner Why not use Ruby for configuration – I understand it better than the pitfalls of yaml
I was responding to this: “Hm, so the question is, why are we using Ruby to define our routes? Do we really need loops and conditionals?” Basically I love config in Ruby for reasons stated above.

DHH’s 4 faves of Rails 3: Bundler, Active Record Queries, Router, and ActionMailer #railsconf
The official @railsconf twitter account retweeted this tweet. I’ve really arrived.

DHH - “Mailers for a long time had a split personality” Half controller and model and the worst of both. Controller won in R3 #railsconf
Complaints that I and others have been making for years. Glad to see Mailers finally becoming one thing.

Signed permanent cookies in Rails 3? Neat. #railsconf
I had not heard about that.

DHH - wants asset pipeline for Rails 3.1 #railsconf
May I suggest http://github.com/aberant/css-spriter for creating sprites? as part of asset pipe-lining #railsconf

Would be cool to handle css, javascript, and images not as a bunch of junk in the public dir but as first class important things. Also, why not use css-spriter for creating sprites of your many images? Full disclosure: Css-spriter was written by some friends of mine. But they’re real smart so you (and Rails) should use it.

Keynote - Michael Feathers

Hard - breaking dependencies to write usable tests in java/c# - Not so hard in Ruby @mfeathers #railsconf
Novices start out writing good code, but as they become experts they write complex code as they understand too much @mfeathers #railsconf
Big Ball of Mud from @mfeathers talk http://www.laputan.org/mud/ #railsconf
“Your commit history is a Gold Mine” Most change areas are important to know about. @mfeathers #railsconf
“Find the most executed path and hammer it” make it awesome and tested @mfeathers #railsconf

Hard to follow DHH’s Rails 3 is ponies and rainbows talk with a thoughtful one but @mfeathers did a good job #railsconf

Michael’s talk was good stuff but it did come after the excitement for DHH’s keynote so I hope people could shift gears and appreciate his insights. He’s not always the most dynamic speaker but “Working Effectively with Legacy Code” was an important book in my development as a coder so he definitely has good ideas.

Real Software Engineering - Glenn Vanderburg

Winston W. Royce wrote a paper entitled “Managing the development of large software systems” which is generally credited with starting waterfall. However it was actually designed to be a warning against waterfall software processes.

People who designed software engineering misunderstood 2 things: Software and Engineering @glv #railsconf
Royce: defined waterfall and said it would not work. The world saw the definition is easy terms and adopted waterfall. @glv #railsconf
Royce: An implementation plan keyed only to these steps (waterfall) is doomed to failure. @glv #railsconf
Of all the thing’s in Royce’s paper (that started waterfall) the easiest to understand was waterfall so it was adopted @glv #railsconf
There is no kind of engineering where you put something in one end and turn the crank. @glv #railsconf

I signed up for a Lightning Talk tomorrow at #railsconf I wonder what I’ll talk about…
I should probably figure that out. Soon.

Build models and test them. Early bridge makers new this before they had the math to prove things. @glv #railsconf
In fact when math came along, it was incomplete and led to the Tacoma Narrows bridge collapse - testing would have helped @glv #railsconf
Mathematically modeling was introduced (to engineering) as a cost saving measure @glv #railsconf
The source code is the design of our system @glv #railsconf
Source code is math that does real work. @glv #railsconf
RT “SW engineering is the science & art of designing & making… systems that can adapt to situations they may be subjected to” @glv #railsconf
Agile processes are optimized feedback engines @glv #railsconf
RT Glenn Vanderberg is the Garrison Kellior of software engineering conferences. #railsconf

Good thoughtful stuff. Glenn later said to me that he’s dying to give this talk somewhere where he isn’t “preaching to the choir.” Check out his slides for cool quotes at: http://assets.en.oreilly.com/1/event/40/Real%20Software%20Engineering%20Presentation.pdf

Lots of “Fail Whale” today. Twitter can handle Ashton Kutcher but not #railsconf
The dark time of the day when twitter went down. The horror, etc.

Metrics Magic - Aaron Bedra

Seems like people really like failing the build on bad metrics – I should really get around to putting that into metric_fu #railsconf
Churn mentioned in @abedra talk can be found here: http://rubygems.org/gems/churn #railsconf

Churn is a gem extracted from metric_fu that looks at your source control to see which files change a lot (possibly too much – god objects).

Liked @abedra talk on metircs - he focuses a lot on failing the build with metrics #railsconf

Check out Flack-jacket if you want to fail the build on poor metrics results: http://github.com/abedra/flack-jacket

Saw a “Save the princess, Save the world shirt” with a image of Link. Nice. #railsconf
Old Heroes ref (remember when that show was exciting? Me neither – its been too long.) but still funny.

@dastels Totally – I got a free pony plushy for signing up with http://workbeast.com/ Haven’t seen any rainbow swag. #railsconf
Dave Astels was giving me (and the rails community) crap about Rails 3 being ponies and rainbows.

Garbage Collection and the Ruby Heap - Joe Damato

GC talk is cool. We really need to tweak our GC settings on REE to get better performance. #railsconf
Where are you leaking memory? Memprof knows. It rewrites your Ruby binary in memory to do deep awesome. #railsconf
memprof.com “a web-based heap visualizer and leak analyzer” Sounds good but site is showing a passenger error page now. #railsconf
@aslak_hellesoy Download the PDF @ http://timetobleed.com/ Looks better on your laptop

Joe’s slides had poor contrast - luckily they were available online. Check ‘um out, there’s some good info there.

Garbage Collection and the Ruby Heap with Joe Damato was technical but still graspable. Slides here: http://timetobleed.com/ #railsconf
I’m old and repeat myself sometimes.

http://memprof.com should totally get bought out by @newrelic and the coolest performance site eva! #railsconf
New Relic totally owes me a %10 finders fee for this idea. It would be teh awesome.

Later http://memprof.com came back up and I looked around. Nice interface and cool site.

Ruby’s Dark and Dusty Corners - Evan Phoenix, Charles Nutter

I loved Charles’ 3 rules for threads:
1. Don’t use threads
2. If you do, don’t share state
3. If you share state, don’t share mutable state


Interesting super nerdy language implementation talk here in the “Dusty Corners” talk. Some important caveats. #railsconf
RT #railsconf : just say no to _id2ref!
“Memoized values are a memory leak.” #railsconf
GC.start - MRI: sometimes helps, REE: better tuned not needed as much, JRuby, Rubinius, MAcRuby, IronRuby: May actually hurt #railsconf
More sophisticated GC implementations need more ‘room to breath’ but are faster. #railsconf
About GC: Memory is cheap, CPU cycles are not. #railsconf

GC is important, you should probably take some time to look into it if you need to make your app perform better.

Keynote - Yehuda Katz

Rails: Make hard things easy and impossible things possible #railsconf
Slogan stolen from Perl and modified.

“Find something that looks impossible and then do that” @wycats #railsconf
Both @wycats and I started programming in earnest in 2004 #railsconf
We both also used Front Page in the early days. It’s like we’re twins. @wycats #railsconf
Even if you are a total noob you can help @wycats #railsconf
Rewriting TMail and ActionMailer seemed impossible but it’s done and in Rails 3 @wycats #railsconf
Lots of dudes without CS degrees and no followers on twitter so they were not in the ‘in’ crowd. But they are now. @wycats #railsconf
People say Ruby will never be as fast as C. Who wants to bet against the JRuby and Rubinius boys? Not me. @wycats #railsconf
The Secret to getting into the ‘in’ crowd: Almost nobody turns down an offer to do hard work. @wycats #railsconf

A really inspiring speech by Yehuda. I had no idea that he, like me, didn’t have a CS background.

Ruby Heroes Awards Ceremony - Gregg Pollack

Congrats @qrush on your Ruby Hero award. Well deserved. #railsconf
Congrats on your Ruby Hero Award @wayneeseguin How could I live without RVM? It wouldn’t be worth it. #railsconf
RT 2010 Ruby Heroes: @josevalim, @qrush, @fxn, @tenderlove, @wayneeseguin, @seacreature – well deserved, great job! #railsconf
Take the initiative this year. Don’t ask permission. Think it, write it, ship it. @greggpollack #railsconf

The Ruby Hero Awards are very cool. Kinda made me feel like a slacker but that’s OK. Do as much as you can and the rest will sort itself out is my motto.

Long day of shaking hands and kissing babies for an introvert. Time to hide in my room and call the wife. See ya tomorrow #railsconf

@polgardy Perl was credited in the talk, but the slogan was improved upon.
Fred was asking about the Perl slogan mod.

@dastels GC has, sadly, not been ‘solved’ in Ruby. It’s finally getting the attention it deserves.
@dastels Why so long to take GC seriously in Ruby? A. You solve problems when you need to. B. The East/West Ruby/Rails divide.

Dave wanted to know why all the tweets about Garbage Collection.

Time for bed. Thanks for reading this sham of a blog post.