More Notes from the Silicon Valley Ruby Conference
As for Day 1, I'm leaving the actual details to other people, and just including as many clever or interesting remarks as I can.
Day 2 had more stable wi-fi, and the room wasn't as stuffy. Presentations were still good and covered a wide range of topics and styles - although a drinking game built around the phrases 'domain-specific language', 'metaprogramming', and 'Saphir-Worf hypothesis' would have been pretty successful. Interestingly, while one presenter had a speaking style and tone that reminded me a lot of Joss Whedon, another presenter looked and acted a whole lot like Wash, the pilot from Whedon's Firefly series.
In his opening comments, Mike Slinn showed how people can do pair-programming remotely with VNC or even just the 'screen' command in UNIX. I work freelance and so don't get to work with other programmers much - so if anybody wants to try this, send me a note at my email address listed above.
I managed to get a seat near a power-bar, so I was able to take notes on my PowerBook, but quotes here are still loosely paraphrased and, as before, any misrepresentations or errors are entirely my fault.
Generally overheard
- 'Self' is the Scheme of object-oriented languages.
- Sites have to adjust themselves to different cultural assumptions in China. People in China don't like asynchronous communication. When you search for something in China, the top of the results gives you a chat room on the topic, so you can talk to other people about it.
Mike Slinn: Opening Comments
- I'm a full-time Expert Witness these days.
- There's a full interactive Ruby user's guide at zamples.com
Steve Baker - Behaviour Driven Development
- Behaviour Driven Development is Test Driven Development if you do Test Driven Development very well.
- The word 'Test' is very misleading - especially for new developers.
- 'TEST' is a four-letter word.
- ... his examples were in Smalltalk, and I'm not cool enough to know Smalltalk.
- We set up RSpec in one night.
- Bacon.new.should.be.chunky
- '?' is the 'eh?' operator. chunky? -> 'chunky, eh?' [If you couldn't tell from the 'u' in 'behaviour', Steve is Canadian]
- RSpec is functionally complete in 1200 lines of code.
- [About the 1-to-1 mapping between models and tests] I know Ryan doesn't agree with me. We'll fight about that later. In Seattle.
- We have an integrated mocking framework. [I just like how that sounds completely out of context - AB]
- Misunderstanding mocks is ... unfortunate.
Jason Hoffman - Scale With Rails
- I'm not going to tell you anything special in terms of special sauce. It's basically like we were doing with Perl a decade ago, when FastCGI was hot hot hot.
- I'm going to start with a 5 minute story with too many slides about how I started at Medical School and came to stand here before you.
- It's amazing how many medical people are in this business. The guy who invented CGI is an ACTUAL DOCTOR.
- Port Upgrade is a beautiful, beautiful piece of software.
- We host the Pragmatic Programmers, but I still have to pay for the books. [Jason just emailed me to let me know that he insists on paying for the books.]
- Ruby on Rails, TurboGears, are all hosted by us. That's fine - but then they all started making these 50 meg 'Screencast' videos. One day all of them were linked in the same paragraph on Slashdot. We started pushing 150 - 200 Mb/s for a week and a half. You think open source is free? They just used $16000 worth of bandwidth!
- Well, what is a 'large scale' application? I mean, do many of us really have one? I mean a BIG ONE? Everybody thinks they have a big one. But really?
- A 4 million dollar Wiki written in Java that took a year to deploy. That's Enterprise!
- Craigslist does 110 million page views a day with apache, mod_perl, lots of caching, and a crazy system. They only have 4 programmers/admins working on the site.
- We've been doing this for years with Perl, PHP, Python, and Java. Does the language really really matter to the System folks?
- The key is good system folks. People often say 'System Folks? Who are these System Folks of which you speak?' Really, success is about more than just having your designers learn 'The Rails'.
- We 'Myers-Briggs'ed our staff: ENTP, INTP, INFP (support), ENTJ (executive) - No 'S' at all.
- People ask me what language they should learn - I say 'does white space matter to you? No? Then use Ruby. Is proper indentation important? Then use Python.'
- Scaling: will your app run on a phone? Scaling is also about scaling down.
- One Solaris box can push 60% of a gigabit connection. BSD can't.
- When the blog post 'Web 3.0' came out, we had a big hit. We cached it with 10 lighttpds with 5 rails-FCGI each - we stayed on with one 3.2 GHz P4 with 4GB of RAM.
- Fiber-attached EMC storage. That was a mistake - a leftover from my Enterprise days.
- You want to use any filesystem other than ZFS? I say 'FSCK YOU'
- Selling processors faster than 3.0 GHz is a big scam. Our CPUs are mostly idle - it's all about RAM RAM RAM RAM RAM.
- The Sun T1000 Ultrasparc T1 machine is the best match between actual CPU and RAM usage. It's also the cheapest.
- [About their previous setup] It's a great setup - as long as you have a lot of money to spend on it.
- That's right: we buy Ethernet cables from Dell - not servers.
- I talked to a guy from Google the other day - he said 'all we negotiate these days is power contracts'.
- Many shared hosting companies just buy old refurbished gear and use it to death.
- Why do we use Solaris? They made it for free - and Linux is not a modern operating system. You need to do a lot of fancy stuff to access more than 4GB of RAM.
- Solaris started out as a system for a 64 chip box and they scaled it down.
- Rails isn't a framework that somebodoy put together to be a geek - it's a framework that was built to run a business.
Joe O'Brien - Create Your Own Tools: Building DSLs With Ruby
- So you can say 'Smothered, Covered, and Scattered'. Oh. I guess you're not from the South. If you've been to the Waffle House, you'd know what I'm talking about. I guess the California version would be 'Large, Tall, or Venti'.
- Sorry, my colours are really bothering me right now.
- You've got one of the ultimate rites of passage in the UNIX world, which was figuring out LEX and YACC.
- [He didn't like some of the design decisions of RSpec. Steve from the back of the room: 'Thank you for hating us because we're clean!', Joe: 'I liked the bad code better'.]
- One of my favorite features about Ruby is that it's never too late to do anything.
- CODE is DATA. This is where it starts boggling the mind. I like watching the Lisp guys, and they're always leaning back and saying 'yeah, we can do that.' Well we couldn't before!
- 'Napkin-Driven Development'
- Jim Weirich on creating Rake in a few half hour bursts: 'I'm really really sorry - I did this by accident'
- JetBrains, the brains behind IntelliJ - no pun intended.
- [To the back of the audience after some off-colour comments] 'Once again, Steven, there's that line, and you're just wandering across it.'
- If you follow the DRY principle enough, you'll end up with a Domain-Specific Language soon enough.
Alex Chaffee - Anatomy of an Agile Web 2.0 App
- Raise your hand if you're doing Ruby? Rails? If you're being paid for it? [From the crowd: If you're being paid for it but your payee doesn't know it?]
- I'm a Java recovery expert - it's a lifelong process.
- The rule is every slide takes three minutes - this is an hour long talk, and I have 60 slides. So there are three potential talks. [From the crowd: Do all three - just talk fast!] I guess I'll talk even faster!
- Back in the 80s was client-server and that was a disaster and the web came along with a thin client and that was a disaster, and now we have AJAX and we're back to client/server again. It's always a disaster.
- This is sad. Our developers learned Ruby and joined a rails shop - and they spend all of their time working on JavaScript.
- I spent the last two months becoming a JavaScript expert - something I said I would never do. But you have to make sacrifices.
- Kent Beck supposedly said "I always knew that one day Smalltalk would replace Java. I just didn't know it would be called Ruby." - I asked if he actually said that and he said "I don't recall saying that, but it's the kind of thing I would say".
- I see a lot of method_missing abuse.
- On an agile team, if you go away for two weeks and come back, you don't know anything anymore, since they've refactored everything.
- I don't know who said it - it might have been me - but every code comment is a lie waiting to happen.
- If you have people who don't know what they're doing, they still won't know what they're doing in Ruby. Bad Java looks like C; bad Ruby looks like Perl.
- Rails is the best webapp framework I didn't design myself.
- Rails grew up rather than growing down.
- The optimist says the glass is half full, the pessimist says the glass is half empty, the engineer says it's the wrong size glass. That's one of my three jokes.
- [In a discussion about dependency injection] I think we violently agree.
- [Comment from the audience: YAML isn't a DSL, it's a serialization description] - I't s floor wax AND a dessert topping.
- JavaScript is tragically flawed. There's something in it that could have been so great, but it went terribly wrong. It's like a Greek Tragedy. I don't know what the flaw is, but it may have something to do with the fact that they were really proud it only took them a weekend.
- [JavaScript:] Any language where globals are accessed by default - Lisp notwithstanding - is a bad language.
- JavaScript has power, but it's more like a super-villain than a super-hero. It's like the guy from X-Men 2 - actually, JavaScript is a mutant.
- [Audience member asks if it would be good if Ruby was the browser scripting language rather than JavaScript] That would make my head explode with joy!
- Almost everything is designed in Firefox these days, but then you have that annoying phase where you find out what breaks in Internet Explorer.
- CSS is so baffling - it's a great language in certain ways - but it's like they shipped it before they used it.
- I'm seeing a lot of fear on the faces of a whole lot of language nerds [Including myself - AB] 'I just want to stay on the server side!'
- I'm going to spend five minutes on my final rant of the day, then I'll open up the floor, and open up the door so you can go and have a nap.
- AJAX In Action - not to be confused with AJAX Inaction, which is what a lot of people get when they start learning.
- [About AJAX+JS] It just makes me uncomfortable [Audience: That's not an a priori definition of bad!]
Joel VenderWerf - Mixing Ruby and C for High Performance Hybrid System Simulation
- My boss asked me why I did this in Ruby. I replied 'It's okay - it's just a prototpye'
- Has anybody heard of hybrid systems at all in this room? A few? Well, that's better than most rooms.
- Okay, so this simulation was built in Tk - don't all pelt me with rocks!
- [On screen: 'A mature system that's been in use for 5 years'] I don't know - that's B.S. - I don't know if it's really that mature. It's not mature in human years.
- I know I promised robots - I'll come up with Robots for the next talk.