Attending and speaking at RubyConf Uruguay was my first time visiting South America and turned out to be a great experience all around.
The conference was run very well by the organizers/volunteers. It was the first time I experienced a conference that was primarily conducted in a foreign language. Aside from the conference, I had a lot of great experiences, most notably a bus ride that gave me new awareness of the hidden treasures of foreign adventure motor sports.
My talk was on how to apply concepts from Domain Driven Design while building a Rails app. We're still waiting for the video to get published. The conference was just before the world cup, so I'm pretty sure that had something to do with them dropping the ball (see what I did there?).
The Bus Ride
Apparently, there are two types of buses that can take you to your location from the airport. The one where they driver wears a suit and tie and you feel like you're a pristine guest going on a luxury ride. The other, which was the bus I took, looked and felt like you're riding a bus straight out of Twisted Metal, similar to this.
The bus driver drove an old run down manual transmission bus. At all times, he drove faster than any of the cars around it, weaving in and out like some sort of car chase in a movie. There were several times where the bus barely brushed by bicyclists and I was sure that someone was going to die. When dropping off and picking up passengers, if there was only one or two passengers, he would just slow down and the passengers would jump on or off while in motion. No joke.
As I told this story to the locals, the response was something along the lines, "You took the bus? Oh, we don't take the bus. We've never taken the bus and we've lived here X years." All of that being said, it was the most exhilarating bus ride of the my life. I highly recommend it.
I soon learned about cheap taxis that get your around the city. They're easily hailed with a handy iPhone app called "Easy Taxi".
From what I know about South America, I imagined it to be very green and lush, a perfect agricultural landscape bursting with all sorts of fresh vegetables and produce. WRONG! Well, not entirely. Whatever's green and lush has one sole purpose, to feed livestock. There were almost no vegetarian options at any restaurants, it was meat, meat, and more meat.
So, I like to pretend that I'm vegetarian, mostly because I am most of the time, but I can't keep myself from dipping into tasty unique meat-experiences. In Uruguayan culture, meat is a sacred food whose production is held to the highest standards, and you can taste the difference. No factory farms here, just good old-fashioned pastured cattle with a culture evolved to create the most perfectly grilled, masterfully prepared meat explosion of flavor that has ever hit your tastebuds. No regrets.
The Uruguayan/Ruby Community/Culture
I'll be honest, I'm not a traveler or too aware of international history, geogrpahy, you name it, it's just not my thing. To my suprise, everyone looked European but spoke Spanish, and in fact, most Uruguayans were all transplants from Europe some time ago.
When at the conference, at first, no one would talk to me. It was strange, I wasn't sure if it was a language thing and they were avoiding an awkward attempt at a converstation, but then I thought, I look more Spanish than any of them do, so that can't be it. Eventually, I learned that Uruguayans are just shy, as told to me by several Uruguayans. Once I approached them and started a conversation, I started to learn how kind, friendly, and open the Uruguayan people are. Their culture meshes very well with a Ruby culture of sharing and creating, which now makes sense why they're one of the few South American countries that have a strong Ruby community.
By the end of trip, I unexpectedly made a lot of new friends, and couldn't be more impressed with how friendly and inviting the Uruguayan Ruby community is.
This being me my first foreign conference, I found it very interesting how the whole langauge translation process worked. So, fair warning, I'm going to geek out and get really detailed about it.
They had two translators closed off in their own individual sound rooms that had a direct view of the stage. Everyone was able to get their hands on a headset to listen to the translators. When someone spoke in Spanish, one of the translators spoke in English, and vice versa. Only one translator spoke at a time, translating both English and Spanish, allowing the other translator to take a break while being on alert just in case the other translator got into a coughing fit or something.
I never really thought about the challenges around translating technical language, but it's a pretty challenging thing to do. For example, at one of their previous conferences, I was told that the translators translated the word backbone, referring to Backbone.js, to the Spanish word for the human anatomy's skeletal backbone, which obviously made no sense for the context. If a translator is trying to translate the word "backbone" for Backbone.js to Spanish, they need to know that it is a "tech word" that should not be translated to the Spanish word for "backbone". So how do they know this?
The tech literate organizers of the conference compile a list of tech words that shouldn't be translated, or if a special tech translation exists for a given language, then they'll need to know that specific translation. Then, the translators need to study those translations and ingrain them in their memory because there's no time to reference a translation sheet while their trying to keep up with a speaker's mercilessly fast pace of speaking. It just blows my mind how difficult that would be.
Some of the Talks
There were several talks that really made an impression on me.
There was a very fun, non-technical talk by Chris Hunt about how to become a world memory champion. It basically demonstrated how we can use our natural spatial memorization, coupled with dramatic emotional thoughts, to create a long lasting memory. Then, take that and layer on top the ability to combine memories, and finally, compress several memories into one. It was brilliantly done, you should definitely check it out. To give you a taste of how it works, his introductory example shows a picture of a guy that he called Ryan. Pretending that we just met Ryan, shook his hand and said hello with a bit of small talk, chances are you'll forget his name. We do this all the time, especially at conferences and other networking events. Chris offered a trick to help your brain remember a name matched to a face. Ryan has a large tatoo on his neck. Now think of a name of an animal that rymns with Ryan. Lion. Good, now create a emotional memory that ties Ryan to Lion. Envision a lion biting the tatoo on his neck and tearing him to shreds. That will definielty have an emotional imprint.
Another talk was given by Ben Orenstein on Closure from a Rubyist's perspective. It was presented purely though live-coding in VIM, and it did a fanstastic job at explaining and demostrating how Closure works, its constructs, and the benefit of passing values through functions as a form of application flow. Being a VIMer myself, and having an appreciation of the benefits from using value objects, I really enjoyed the talk. Unfortunatly, I can't find a link to it in the intertubes, but if you come across it, definitely watch it.
Another talk that I really appreciated was the straight forward, simple breakdown of ensuring good security of a Rails app by Najaf Ali. His main point was that in order to understand how to create good security, you need to understand how vulnerabilities work. And then, it's the simple things to get right that are sometimes tedious to do, but necessary.
Here are some of his pointers:
- Make sure proper access control is in place in all areas.
- Make sure mass assignment vulnerabilities are protected.
- Don't leak your session secret, make sure it's only stored server side in an environment variable.
- Sign up to be notified of security vulnerability announcements so you can react immediately.
- Make sure you can fix vulnerabilities right away, which heavily depends on how quickly you can get a new deployment out the door.
- Make recovering from breaches easy. Automate and practice tearing down and standing up servers.
- If you notice vulnerabilities but can't address them for various reasons, at least keep track of them so you can address them at some point. Don't just ignore them because you don't have time for them.
Uruguayans Party Hard
So, every night was a party, with drinks and good times, but they made a big deal of drinks stopping at 11, in hopes to force people go home and rest for the next day's talks. I didn't realize why they made such a big deal about ending the party at 11, until the last day of the conference when they really let loose and partied Uruguayan style. Apparantly, they have dinner, drinks, and coffee until 2am, at which point the dance clubs begin to open and the parting really starts, lasting until god knows when. I couldn't stay up long enough to find out. I can barely make it past midnight, but I'm sure it was a blast!
In conclusion, I didn't really have time to explore Uruguay itself and its history, but I got a stong dose of the culture and enjoyed every minute of it. If you get a chance to travel to South America, I'd highly recommend visiting and experiencing the friendly culture of Uruguay and say hello to some Rubyists along the way.