It’s pronounced “go-gay-roo-ko.” Did you know? I did not.
Also, let it be known that the Swedish-American Hall is awesome. The grand ballroom just needs a huge fire in the middle with a pig roasting and smoke rising up to the rafters. The chairs look like viking thrones! In non-Scandinavian-related coolness, there’s Ritual coffee at the cafe, and a club in the basement where I used to go see Lavay Smith.
…Oh yeah, and there were talks! My main takeaway from the day is that I need to get involved in some kind of code transformation project, because turning one language into another is cool.
A few quick thoughts on the talks:
Rich Kilmer talked about Ruby on the Mac, which was more interesting than I thought it would be. I have a G3 powerbook whose hard drive died a few months ago that I haven’t fixed. Below, please find my excuse.
I’ve been stuck in Windowsland at work for a while, between that and the dead laptop I don’t do a lot of OSX these days. But it was interesting to hear about the evolution of the Objective-C-Ruby bindings and how they had to account for Objective-C’s ordered parameters. I know! I share your outrage.
Aaron Quint talked about Sinatra, and how it’s a board and you can … make shelves out of it? Um…his slides had a cool fire animation?
I actually really enjoyed this talk, though I had to step out two-thirds of the way through and as one of five women in a room of 250 men, I felt more visible than I am used to being.
So Aaron, it had nothing to do with your talk, and though you may have bagels, we have burritos. Really, really big burritos.
Anyway, coming into this, I knew next to nothing about frameworks outside of Rails, but now I can recommend Sinatra to folks who don’t want a whole huge MVC/ORM/etc stack. It’s interesting to think of it as a component in my own stuff, rather than a Grande Plan like Rails that I fit my code into.
Then we had David Stevenson’s sandbox talk, which was the first time I wished I had brought my laptop. Normally it distracts me and I read email when I should be listening, but David put up a “break the sandbox” challenge and a hangman algorithm game that I really, really wanted to play.
Sandboxing in Ruby is actually pretty straightforward: you remove the methods you don’t want people to use from the objects. Ha! It’s brilliant! No backtick method, no eval. I’m not sure what I could use it for, but it’s cool.
Gregory Miller from TrustTheVote was next. They’re working at light speed (by government standards) on a completely open-source voting infrastructure. With, evidently, buy-in from elections officials. It’s a good thing someone’s doing that, and it sounds like a very sound project run by smart people. Thank goodness I don’t have to do it, though, because I got frustrated by proxy just listening to him talk about how long stuff takes. I worked in academia and for NASA – I know – and I don’t really want to go back.
After lunch we had haml creator Hampton Catlin, doing an informal talk about his project at Wikipedia, in which he reformats their pages to display nicely on an iPhone. Then he told us to just go out and be awesome like he is: take your ideas and spend a weekend, and make them into actual code!
I had mixed feelings about this one. On the one hand, the Wikipedia formatting server sounded really cool, I love hearing smart people talk, and it was a nice break from the other more formal presentations. On the other hand, I have a job and a husband and a four-year-old and a baby, and the logistics it takes to enable me to spend an unbroken weekend working on something are…uh, prohibitive. Like DHH at RailsConf last year, who told everyone to develop some freaking hobbies already and go outside, I know he meant well, but it made me feel old. Then again, I’m 33, so…I guess I am.
Ilya Grigorik talked about building custom web proxies. This is one of the talks where I looked at the description and thought “eh,” but it turned out to be really interesting.
You can write a piece of code to intercept traffic between two applications and do whatever you want with it – log, benchmark, rewrite, etc. He used it to convert Beanstalkd (an in-memory job queue) to an in-memory job queue with a disk archive for jobs that won’t be run in the next 5 minutes.
There must be more to the story than he had time to tell, because the solution seemed much more complex than the problem warranted. Although certainly I’ve been guilty of overcomplexifying a solution because there was something cool I wanted to try…
Then we had the centerpiece of the conference – the framework panel. Reps from Shoes, RAD (Arduino), Adhearsion, Merb, and Rails got up on stage, and although some folks talked more than others, it was interesting to hear about the difficulties they face in developing and maintaining a piece of code that they don’t know how other people will use.
It turns out that using Ruby to serve webpages is kind of…pedestrian. It can do all sorts of other stuff, like blink the blinky lights, make things go beep, put your annoying customers on hold and play them “it’s a small world”, write cross-platform windowing apps (AWT! Ack! NOOOO) and maybe do my laundry? That would be neat.
Then we had Carl Lerche talking about writing fast Ruby code. I missed the first part of the talk, but I did catch the part where he was saying that named_scopes have 4 nested lambdas and each saves all the local variables and it’s 6 times slower than just writing out the equivalent AR call.
Yeah – the magic is slow. This would be a useful talk to revisit when I find my code is the bottleneck rather than the database.
Finally we had Nick Kallen on scaling, another talk that at first glance looked a little meh. But this one turned out to be the most fascinating of the day, by far. He walked us through, bit by bit, how you determine latency and throughput on an application, and then demonstrated various strategies for increasing throughput and decreasing latency.
I don’t spend a lot of time on this stuff typically – my previous Rails projects were so small that scaling was never an issue, and at Looksmart we have an ops team – but I really liked his logical, measurement-based approach. I may try his “put a transaction ID on everything” technique at work to see if we can get some more visibility into our logfiles.
All in all, a great first day. Josh and Leah did an amazing job with the logistics. Only one person assumed I wasn’t a developer (why would I go to a Ruby conference if… oh, never mind). I met some really interesting folks. And evidently some significant portion of the women who write Ruby code in San Francisco are named Sarah. Who knew?