/ 06.May.2008 at 09:39pm

Hongli Lai and Ninh Bui, from Phusion, shaked the Rails world a few days ago. They unleashed the Holy Grail of Rails deployment: mod_rails which was received with much fanfare, and they deserved it.
They finally settled the big issue that embarrassed Railers in the past. This will also relieve dozens of hosting services that were clueless on how to solve this equation. Now, those two computer science students are above them all with this clever solution. And they have more to come.
I was very fortunate to be able to interview them. I think this is the second interview, InfoQ broke the news first with this other interview which I highly recommend to understand more of the inner gears of Passenger. They are very easy going and it was a pleasure to talk to them.

/ 21.Apr.2008 at 07:12pm
Chris is a very accessible and easy-going guy, and I just got him out of AIM and started the interview right away. For those of you who never heard of ‘Chris Wanstrath’, he is also known for Err the Blog and recently as one of the guys behind the Github phenomenon.
He answered everything in color detail and we speak a lot about his open source projects, performance, scalability and, of course, lots of Git and Github stuff. Hopefully it will make people even more excited with how the Ruby/Rails community is moving things forward all the time.
aos leitores brasileiros: assim que tiver tempo irei traduzir esta entrevista.
/ 11.Feb.2008 at 08:43pm

English Readers: click here
Foi Avi Bryant que evangelizou a idéia de “tartarugas o caminho todo”, querendo dizer que para uma linguagem se considerar ‘completa’ ela deveria ser capaz de estender a si própria. Então, o mundo ideal teria Ruby sendo estendido por Ruby, não em C. JRuby vai tão longe quanto pode construindo um sandbox para código Ruby rodar sobre a JVM. Por mais legal que seja, ainda precisamos de Java para podermos estendê-la.
Entra Rubinius e seu autor Evan Phoenix, atualmente contratado em tempo integral pela EngineYard. Rubinius pega pesadamente emprestado dos conceitos de virtual machine de Smalltalk e faz o menos possível em C somente para conseguir o boot inicial e todo o resto é desenvolvido em Ruby puro.
Rubinius responde a várias questões sobre o futuro do Ruby MRI mas também levanta diversas perguntas que espero que possamos responder hoje nesta entrevista com o próprio Evan.
Então, vamos começar.
/ 11.Feb.2008 at 08:42pm

It was Avi Bryant that evangelized the neat idea of “turtles all the way”, meaning that for a language to be called ‘complete’ it should be able to extend itself. So, the ideal world would have Ruby being extended in Ruby, not in C. JRuby goes as far as it can building up a sandbox for Ruby code to run under the JVM. As cool as it is, we still rely on Java to fully extend it.
Enter Rubinius and its author Evan Phoenix, currently a full-time employee for EngineYard. Rubinius borrows heavily from Smalltalk’s concepts of a virtual machine and does as little as possible in C just for the bootstrap and all the rest is developed over pure Ruby.
Rubinius answers lots of questions about going forward over the current Ruby MRI but also raises several other questions that I hope we can nail down today in this interview with Evan himself.
So let’s get started.
/ 07.Feb.2008 at 01:16pm

Last year we had our local event WebDevCamp SP’07, where Manoel Lemos, from the sucessful BlogBlogs introduced us to his friend James Crane-Baker, co-founder of the RedeParede (literally, “NetWall”), a classified Web 2.0 web-service written in Ruby on Rails.
Recently he got in touch with me about releasing his services APIs to the Rails community and therefore I decided to publish more about these Santa Barbara, CA based guys. They are credible people and James actually lived in Rio de Janeiro for a while, so he understands our Latin culture better than the average american, which is good as they plan to cover not only Brazil, but Latin America. I hope everybody can take a look at what they are doing as it sounds very promising, and success cases like this only augments the importance of our community as a whole.
So, here goes James himself explaining his product:
/ 11.Jan.2008 at 01:29am
I have a very embarrassing story. It is about 2 e-mails I got today. The first one came right in the morning and it was from one of my website readers. He reported to me that my homepage was all messy at IE 7. At first I didn’t care too much (“oh damn, IE always cracks down”). I am usually happy enough when I see it working on both Firefox and Safari – the rationale being: “if it works in Safari, should work in IE 7”
So I just let it go. Now the ugly part comes on the second e-mail I got tonight, from my boss, Carl. He reported that he was talking to a possible client and decided to proudly show off my website. Surely enough, the client fired up IE 7 and boom! Embarrassment! To Carl’s surprise, my website rendered completely broken and unusable at this client’s web browser! I can imagine the situation. And he tried to amend the situation saying: “but I can assure you he knows XHTML and CSS …”
Damn! I am not expert web designer but I know a trick or two about well formatted XHTML and CSS. So I fired up the W3C’s XHTML and CSS validators. 100 XHTML errors and 2 CSS errors! UGLY!
Ok, this is no good. Let’s fix it. Fortunately the validator gives up good clues on what was wrong. So let me tell you, almost all of my errors were from these elements:
Seems like the validator hates them all. Ok, fortunately Facebook has an option to switch from the Javascript badge to a static image based one. Cool. Twitter was no luck. I was not in the mood to tweak it down so I just ripped it off. Same thing about Rec6. The Flash players were deferred to internal pages so they don’t break my homepage. Aside from that, there really were a few of my own mistakes, unclosed tags and so on. After all this clean up, that’s how my status looks like now:
I went down from 100 XHTML errors to Zero and from 2 CSS errors to Zero. Looks like I am ok now. But not by much. Some of the internal pages will break because they still contain the Flash-based video players. My rant is: yes I could try to tweak everything. But this is not the point: the point is that those services offers the HTML for us to just copy & paste into our websites. So why can’t they just produce XHTML-compliant tags, for God’s sake!? I will definitely not waste my time fixing their tags.
So, I won’t have Twitter or any of those embedded players at my homepage until they fix this embarrassment. We bloggers help promote their websites, so the least they should do is not break ours, for crying out loud!
Bottom line is: now my website renders perfectly well on Safari, Firefox 2 (both Mac and Windows) and IE 7. But IE 6 still doesn’t render the sidebar correctly (give it a try). Even though it is now a “perfectly” well structured XHTML and CSS, IE 6 still refuses to render correctly … oh well, IE 6 usually doesn’t render correctly anyway …
Update: Carl send me an interesting tip for Flash in this link. I put my Twitter badge back. This is not the optimal solution, though (Twitter itself should provide us a better solution). Anyway, XHTML check is passing, all good and dandy.
/ 09.Jan.2008 at 09:27pm

The Ruby Way is the undisputed must-have book in any Rubyist bookshelf. Rather than being a ‘reference’ book it explains what it takes to really dive into the intricacies and marvels of the Ruby programming style.
Today I am very happy being able to engage in a conversation with one of my favorite authors, Hal Fulton. This was a great chat and I know people will be delighted as well. He is one of the Ruby veterans and certainly has a lot of experience to share. So, let’s start:
AkitaOnRails: First of all, it is a tradition at my blog to ask for the guest’s background. How long you’ve been at the programming career? How did you first get there? What inspires you about the computer world?
Hal Fulton: I started college as a physics major, but I found that I was taking computer courses for fun. I switched to computer science and the rest was history.
Unlike most younger people now, I never was really exposed to computers until I was sixteen, because personal computers were much less common then. I was hooked right away. I saw the computer as a “magic box” that could do anything I was smart enough to instruct it to do. Really I still feel that way about it.
/ 04.Jan.2008 at 07:30am
Ruby Inside is one of the greatest Ruby/Rails website available and a great source of news. Its creator is the British entrepreneur Peter Cooper, also the author of the recently published book Beginning Ruby, from Novice to Professional, an excellent source for anyone willing to learn the Ruby language.

Peter speaks about Ruby on Rails, business, novices and, as a last-minute exclusive, he comments on the recent Nuclear Zed episode that shocked a lot of people in the community. Just to clarify, Peter answered my questions before New Years Eve, it’s only the last question that was added today.
Once again, I deeply apologize the brazilian audience because I didn’t have time to translate this into Portuguese today, but I will do very soon. Stay tuned.
/ 03.Jan.2008 at 08:44am

1/1: Wow, I am really honestly frightened! I just read this rather long rant from no other than Zed Shaw – creator of Mongrel who, for non-starters, is (was) the #1 in popularity at Working with Rails, just a little bit higher than DHH himself.
Two comments that TechCrunch selected were:
In the article he literally shows the finger to people like Kevin Clark, Dave Thomas, Chad Fowler, Michael Koziarski and even David Hansson! He claims to be abused by them and that the Rails market only offered him mediocre jobs. He also attacks ThoughtWorks. We have to admit, he has good points although we can disagree on the presentation.
That’s one true thing: programmers – specially those that become famous overnight – have their egos inflated exponentially. I don’t believe that the Rails Core Team is different. We can’t tell if Zed Shaw is right in every claim or if he exaggerated a lot. But I don’t believe someone like him simply woke up crazy today out of nothing. If he is angry, he has his reasons. Let’s watch how the community reacts in the next few days.
On the other hand, this is not exclusive in the Rails community. As I say all the time, Ruby on Rails is not a perfect technology. None is. Its creators are not perfect, they are human beings like you or me. It is the community that plays the major role in an open source project. Few can have the luxury to be both extremely smart and arrogant at once like a Linus Torvalds, for instance.
Take your own conclusions. Anyway, one Zed Shaw or one Kevin Clark doesn’t make Ruby or Rails worst. It is the Rails community as a whole who’s gonna decide how things go on. If the Rails Core Team really becomes unbearable one day, as Zed accuses them, and the community still believes that Rails is worth it, we always have the last choice of forking it (let’s just hope it is not the case).
/ 01.Jan.2008 at 12:01am
Traducción en Español
As I promised after the Avi Bryant interview, here’s a great conversation with Adrian Holovaty, well known creator of the Django web framework written in Python.

For me this is an important piece because I always say that technology doesn’t have to be about divorce. Technology is about integration. I am a full-time Ruby on Rails developer and evangelist, but above all, I try to be a ‘good’ programmer. And good programmers acknowledge good technology and their creators achievements. And Adrian’s Django is such a remarkable achievement that deserves the attention and success.
So, as my very first post of the year (published at 0:01hs!), I would like to celebrate the great minds of our ‘development’ community, wishing that the good developers use their time creating great technology instead of wasting it in useless flame wars.
/ 29.Dec.2007 at 11:46am
New Year’s Eve is the time where we look back at the year that has just passed and reflect about it for the next one. That’s the time we slow down a bit and allow ourselves to see what did we do, what difference did we make, and if we are still headed towards the right direction.
Fortunately, everything I’ve deemed important (technology-wise) was bookmarked at my del.icio.us/fabioakita account. I invite everybody to subscribe to it or just take a peek. I’ve selected just a few that represents some of the most interesting events this year (at least from my point of view).
For me, 2007 was a tremendous year, no complains. I worked like crazy in the last few months, but at least I am proud that I made an educated decision more than a year ago and stuck with it. And guess what? It paid off in spades! The book I published in September, 2006 was a success, I am working full time with the great guys at Surgeworks LLC and I now have a local brazilian team of my own, with 3 fellow Railers (follow the links to get to know them).
I’ve attended to no less than 5 brazilian Rails gatherings, one every weekend since November 17th. It was great to see the brazilian Ruby on Rails community flourishing. And I hope that 2008 is the year where people finally start to notice us down here.
My Rails 2.0 Screencast was a huge success, achieving world-wide recognition (see the Google Analytics graph below). I’ve made great friends like Dr. Nic, Geoffrey Grosenbach, Satish Talim and more. (Read the exclusive interviews here)

More important of all: I was able to drift away from the mainstream and do what I wanted to do. I wanted to do Rails full time, and I got it. That’s the way to go: do whatever it is that you really want, not what other people tell you to do. You have to know better! And education is key: the only way to make a good decision for yourself.
/ 27.Dec.2007 at 03:29am
For the last 3 years a lot of people have been asking “Why should one use Ruby on Rails when my framework X is clearly superior?” or something like this.
That’s a good question, raises a lot of good points but the way those discussions end are a real shame for the whole community to say the very least. I can’t praise myself too much either because I was part of some flame wars as well and I don’t like what I said in some occasions as well. Yes, I acted like a troll myself and for that I apologize.
/ 25.Dec.2007 at 07:56pm
According to this article Matz should release Ruby 1.9 TODAY!! Probably around 1AM EST.
Anyone interested in what´s new at Ruby 1.9 should follow the eigenclass blog. He´s been tracking the changes for 2 years not using a mechanized script procedure to analyze the CHANGELOGS. That´s 50k lines of processed text lines!
Merry Christmas!
Update 12/25: Exactly as we said yesterday, Matz officially announced Ruby 1.9. Se also here, here and here And the first question everybody´s gonna ask is “does Rails 2.0 runs over Ruby 1.9?” and the short answer being No. Neither Rails, nor Mongrel (Jeremy Kemper seems to believe that it´s almost there), not dozens of gems are ready yet. Ruby 1.9.1 seems to be just around the corner as well. All gem developers need to re-test and modify their codes taking into account what has been deprecated and which sintaxes changed. Wait a little bit more before attempting Rails with Ruby 1.9.
Update 2 12/25: This presentation should help you get up to speed on the newest features of Ruby 1.9. Keep in mind that 1.9 is an odd release – tagged experimental – and the next version, 2.0, is the one that´s gonna be held stable, same way that happened for 1.8 and 1.6. Do not expect to run projects in production with 1.9 so soon, but this gives us the necessary time to adjust to the differences with the now older version.
Summarizing? New lambda/block syntax, more splats, new Enumerator, subtle differences with Modules, Unicode support (finally!), new asynchronous I/O. Then again, the best source to research what´s changed is Eigenclass and, of course, the soon to be released Dave Thomas Pickaxe: “the” definitive Ruby 1.9 reference.
Update 12/26: Exactly as I recommended and is well known, 1.9 is an experimental version. Dave Thomas reminds us again that this is intended for anyone interested in experiments, upgrade gem code, etc but this is not intended as a drop-in replacement for 1.8. There are still known bugs that will be squashed in the next few months before we finally have a stable 2.0 release.
Update 12/27: This is an old post but it explained well how to install Ruby 1.9 without breaking your existing 1.8 (though I still recommend using some virtual machine to test experimental stuff). It basically goes like this (updated to the new 1.9 tag):
svn co http://svn.ruby-lang.org/repos/ruby/tags/v1_9_0_0/ ruby19
pushd ruby19
autoconf
./configure --prefix=/usr/local --program-suffix=19 --with-readline-dir=/usr/local
make
sudo make install
popd
Chris Shea explained this well: Certainly, old hands have this down, and much of this is in the README. But the secret is—program-suffix=19, which leaves ruby alone and gives you ruby19 as your 1.9 executable.
/ 22.Dec.2007 at 06:36pm
If you didn’t read it, take a look at Part 1 where we get to know more about Avi Bryant and his amazing product Dabble DB. In Part 2 Avi goes a little bit more in elaborating his technology opinions and points of view. It’s a very insightful reading for every programmer.
As I always say – and Avi is competent pointing out -, Ruby has its drawbacks – most of them being improved on Ruby 1.9, JRuby and Rubinius. Avi gives us good reasons why Smalltalk is yet another great platform to learn, bringing back decades of evolution and maturity. So, here goes, the unabridged version of the interview.

And stay tuned! I hope to have Evan Phoenix, Hal Fulton, Peter Cooper and Adrian Holovaty as my next guests. Lot’s of material to begin 2008 in great style.
/ 15.Dec.2007 at 10:15am
Someone once challenged all other frameworks implying that no one would get close to what we are doing in Rails … except for Avi.Seaside is such a departure from the status quo that Avi himself describes it of a ‘heretic’ framework. And he is right. He looked back in history and took what is considered ‘the’ father – and arguably ‘the’ best implementaton – of object-oriented languages: Smalltalk.
Taking clues from the venerable Apple WebObjects he set his way to implement Seaside and his very successful web product, Dabble DB. Check it out who is the man, what are his opinions and why he is so relevant to the Ruby and Rails community even though he advocates another language and another framework. Sounds strange, but when Avi speaks, you listen.

He was very kind to provide me a very long interview. It is so long I divided it in 2 parts. This is the first Part. I will release the second one in a few days. Hope you all enjoy it.
/ 18.Nov.2007 at 04:14pm
Yesterday took place the anticipated RejectConf SP’07, the first relevant Rails event in Brazil, at the Jacy Monteiro auditorium over at the Instituto de Matemática e Estatística da USP. It was a terrific event, even more so considering the I was the responsible for it (meaning that I am a very amateurish [dis]organizer :-) ). It was a community-driven event, non-profitable, that counted on the support from Caelum and IME, which made it possible for an event without entrance charges. It was well worth it.

All volunteer presenters showed up, the audience was excited, cooperative and interested, which certainly made me happy. There were delays, people was attending even in the middle of a holiday weekend (chaining holidays from last thursday until next tuesday, here in Brazil), hungry, heated but even so they all attended. This surely shows how united and strong our community is.
/ 12.Nov.2007 at 04:37pm
It’s been a while since my last international interview, and I am back with no other than one of the responsibles for Ruby being enabled in the .NET platform. That’s correct, I’ve covering a lot about JRuby and Rubinius but we can’t neglect that one of the biggest platforms out there in the market is receiving the Ruby treatment as well. So I invited John Lam , who kindly answered several questions regarding this endeavor.
Remembering that IronRuby – named after IronPython, the first of the main open source dynamic languages built on top of .NET – is a true open source project, and also has a 3rd party addon for Visual Studio.NET, so programmers used to the VS.NET workflow can get onboard with a lower learning curve ahead of them.
Despite of opinions against Microsoft just for the sake of arguing, the fact remains that Java and .NET represent the biggest corporate development market today. And this is also a fact that the Ruby meme is spreading in a very fast way. Being built to run on top of both the JVM and the CLR represents Ruby being enabled for market niches that it wouldn’t reach otherwise, and this is huge win. I talked a little bit about this in my article (in portuguese): For myself to win, the other one has to lose. There are very intelligent people at Microsoft, John Lam being one of them.
/ 16.Oct.2007 at 06:51pm
Pessoal, é com muita satisfação que anuncio que nosso encontro regional RejectConf SP’07 irá acontecer no dia 17 de novembro de 2007, sábado, das 11:00 às 17:00, no auditório Jacy Monteiro do Instituto de Matemática e Estatística da USP, em São Paulo/SP. Com entrada franca para todos que confirmarem presença através deste cadastro. Aliás, o local comporta no máximo 80 pessoas!! Quem se cadastrar primeiro terá prioridade, portanto não se cadastrem se não tiverem certeza e se desistirem por favor nos avise.
Auditório Jacy Monteiro – Bloco B
Instituto de Matemática e Estatística da Universidade de São Paulo (IME-USP)
Rua do Matão, 1010 – Cidade Universitária
CEP 05508-090 São Paulo – SP – Brasil
Para quem não é de São Paulo, veja esta página com indicações de como chegar.
Desde que eu coloquei a idéia aqui no blog, mais de 140 pessoas opinaram na enquete, muitos de vocês me contactaram pessoalmente, deram idéias, sugestões. Em especial gostaria de agradecer o empenho de algumas pessoas como Danilo Sato, Fabio Kung e André Santi que correram atrás do auditório do IME, do Paulo Silveira da Caelum que também está colaborando com o evento.
/ 03.Aug.2007 at 07:46pm

This is another big interview. This time with Jamis Buck, the programmer that helped David Hansson himself right at the beggining of Rails, at 37signals.
Today most renowned for his achievements in Capistrano and a lot of other Ruby libraries as sqlite-ruby bindings and Net::SSH. Jamis was very kind to give us the opportunity to know more about his career and the beginnings of the Ruby on Rails story.
AkitaOnRails: Ok, so let’s get started. first thing I always ask my guests: what’s your background? I mean, when, how, why did you start on computer programming? Did it began the classic way, as a hobby, or was it a more recent thing because of career or something else?
Jamis Buck: I started programming when I was in the 10th grade, when my mom got a brand-spanking-new Tandy personal computer. It had all of 20 megs of disk space, and came with GW-BASIC. I’d done some programming before, turtle-graphics and a bit of BASIC, but that Tandy was when I got serious about it. I taught myself GW-BASIC from the little reference book the computer came with and wrote a few simple games and utilities. Then I taught myself Turbo Pascal and Turbo C++ in 11th and 12th grades, and it’s gone from there :)
AkitaOnRails: Then you decided to go for CS in college? I read at your profile in WorkingWithRails that you’re a repentant Java programmer? How long have you programming in Java?
Jamis Buck: Yeah, I then jumped into Computer Science when I got to college. I graduated a bit late, in 1999, after working full-time for the university (BYU) as a programmer for a couple of years. That was where I did all my Java work. We were actually doing web-apps in C, which was not as insane as it sounds! But then we had a change of leadership when a new CIO came in, and he basically issued a blind mandate: “learn Java, ditch C!” So we had to massively retool and get certified and so forth. I was on the team that led the research into what Java tools we should use, and so got a lot of experience that way. I did Java work full-time there for about 2 years, until 37signals came along in Feb 2005 and made me a better offer, and I’ve never looked back!
AkitaOnRails: Wow, so you jumped right in from Java in the university to Rails at 37signals? This is a little earlier than I expected, but as you already mentioned it: how did you get in touch with the 37signals guys? How did you start on Ruby being so overwhelmed with Java before?
Jamis Buck: Well, I’d been involved with Ruby (primarily as a hobby) since about 2001. I’d written a few libraries, like the sqlite and sqlite3 bindings, and at RailsConf 2004, I met DHH. I did a bit of work at the conference there to make Rails speak to sqlite databases. After that, around November 2004, I think, David asked if I would be interested in doing some consulting for 37signals. In December and January I did a few odd jobs for them like adding SFTP and time zone support to Basecamp. And then in February they flew me to Seattle to attend the Building of Basecamp workshop there and they made me an offer.
AkitaOnRails: I understand that 37signals is a small company in terms of number of employees and most of its inner power comes from this very fact. Did it change much since you began, I mean, in the last 2 ~ 3 years? What did you like the most back then and what do you like the most right now?

Jamis Buck: Well, when I came on, I was the 5th employee, and the second programmer. Previous to my coming, David did all the programming and sysadmin work, so I think it was a big relief to him to have someone to share the load! About a year later, we hired two more programmers, and we’ve since hired two more people, including a full-time sysadmin. The changes have been for the better :) I like having a real sysadmin. I can’t tell you how much I hated being a sysadmin, since I had little idea what I was doing!
AkitaOnRails: You seem to be the kind of guy that like the kitchen-sink because you’ve been involved with ‘low-level’ stuff like sqlite-bindings, Net::SSH and so on. Is this the kind of thing that excites you the most? Or it’s just a coincidence and you actually rather do GUI work as well?
Jamis Buck: I actually swore, some years ago, that I would never be a web-app developer :) I’ve always preferred writing the tools as opposed to writing the apps. But I’ve really enjoyed writing web-apps at 37signals. The team is great and the toolset (Rails!) is amazing. I still do enjoy writing libraries (working on Net::SSH and Net::SFTP v2 right now, in fact) but apps aren’t so bad either :)
AkitaOnRails: But back then when you were literally second-in-command you didn’t have much choice, did you? I bet you did some of the Basecamp interfaces? And you mentioned that you didn’t like much of the sysadmin work because you didn’t know what you were doing, but now you probably are an expert because Capistrano rocks in this field. I remember it being called SwitchTower before. Can you tell us its story?
Jamis Buck: I’ve done quite a bit of the work on all of the apps, some more than others. I don’t actually write the UI’s (that’s the domain of Jason Fried and Ryan Singer), but I’ve plugged them in and made them work.
I learned a ton about sysadmin work from when I had to do it. I’m still a major newbie at it but I learned more than I ever thought I’d learn about how mysql really works, for instance :)
When I first released Capistrano, a year and a half ago or so, it was called SwitchTower, but around March 2006 I got a C&D from a company that had the name trademarked, and so I had to scramble for a new name. The Rails Core Team helped immensely at that time, they offered a TON of suggestions for names. Marcel eventually IM’d me and suggested “Capistrano” which just clicked for me and I went with it. I got some flack from some people, who thought the name was lousy, but I laugh now because most people that use cap today probably came to it after the name change and never knew any other name, and they don’t even think twice about it.

AkitaOnRails: You are probably very overwhelmed now because of the Capistrano 2.0 release. It is a major departure from the 1.4.1 if I understand correctly. You rewrote a lot of stuff, had to break backward compatibility. Do you feel you got what you wanted with this release or are you aiming for more in a 3.0 release?
Jamis Buck: Cap2 is pretty much just what I wanted it to be. There are few minor tweaks in the pipeline, but nothing significant. It is about 90% backwards compatible with Cap1, so most people should have no problems switching. And since the 2.0 release, the maintenance load for cap has been really small. I’m very pleased with it. I still need to get busy with documentation though :) That’s the thing that still holds a lot of people back.
AkitaOnRails: What is it that you like the most about cap? You obviously use it at your own deployments at 37signals. I fantasize you having a bunch of shell scripts more than a year ago and then weaving them together to build what was the first release of Capistrano.
Jamis Buck: Prior to SwitchTower/Capistrano, we had a tool that David had written for deploying Basecamp. Back then, Basecamp ran on a single server, so deployment was little more than “svn up”. Later, we moved Basecamp to multiple servers and launched Backpack, and we realized we needed something more powerful for deployments. So I was tasked with writing something and Capistrano was the result. The thing I like most about it is how it takes the tedium out of being a sysadmin. The “cap shell”, in particular, lets you immediately and easily execute arbitrary commands on multiple servers, simultaneously, which is really handy. Of course, “cap deploy” is nice too :)
AkitaOnRails: I remember one episode where David reported about a 72 hours glitch that let Basecamp out. Were you involved in that episode? :-) Headaches like this seems funny when you remember about them now, but obviously not so funny at the time.
Jamis Buck: ha, yeah, that actually happened a few days after I was hired :) We were adding UTF-8 support to Basecamp and the database migration did not go well. We pulled an all-nighter. Quite the introduction to 37signals’ culture :) Fortunately, that kind of thing hasn’t happened since, though we’ve had our share of other emergencies, of course.
AkitaOnRails: Lessons learned? I think that’s the most important outcome of these situations :-)
Jamis Buck: The main lesson I learned that time: when you’re mucking with charsets, make sure you test it on as many non-Latin1 alphabets as possible :) Naturally, we tested it a lot before we deployed, but we didn’t really think to check any Russian or Japanese data that was in our database after the test, which seems obvious in hindsight. We did try some non-Latin1 alphabets during testing but the ones we tried just happened to work in spite of the bugs. Another lesson learned: no matter how hard you prepare, something’s going to fall through the cracks!

AkitaOnRails: I headed a group of very committed volunteers and got your Getting Real book translated into Brazilian Portuguese a while back. I believe you were involved in it too? This book is iconic to picture the 37signals spirit I guess. Do you really move the way it’s written? :-)
Jamis Buck: I was actually not too involved in the composition of the book, though I gave some feedback during the writing process. But yes, that book describes our own processes. There really isn’t anything in that book that we don’t actually do.
AkitaOnRails: How do you operate? I believe that not everybody work in the same physical location? Do you do a lot of remote work? How many programmers/sysadmins/designers are there now?
Jamis Buck: Chicago is definitely the “heart” of 37signals: Jason, Ryan, David, and Sam all live and work there. We have an office there as well, and the Chicagoites go there pretty regularly to work (though they also work from home some, too) Matt Linderman is our writer, he lives and works in NYC. Mark Imbriaco, our sysadmin, lives and works in Chesapeake, Virginia and Jeremy Kemper is another programmer, living in Pasadena, California now. The distributed nature of it works very well for us. I really love working from home, it lets me be more involved in my kids’ lives, for instance, than I would otherwise be.

AkitaOnRails: I hear you’re from Provo, Utah? It is a coincidence as my current boss, Carl Youngblood, is also from there and also studied at BYU :-) You don’t possibly know each other, do you?
Jamis Buck: I actually live in Caldwell, Idaho now, but I was in Provo for about 8 years and yes, I do know Carl! We were both in the Utah Ruby Users Group. He’s a great guy.
AkitaOnRails: You attended many conference for the Ruby community. I don’t remember if you wrote any books. Are you writing some now?
Jamis Buck: I was originally going to write a book about Capistrano for Apress, but that’s fizzled. I’m not actively involved in any book writing at the moment, and don’t really have much interest in it, honestly. I much prefer writing software! And I try to post to my blog once in awhile, too.
AkitaOnRails: Yes, the buckblog, it has lots of great tips that I like to read. Did you start it because of Rails or you already had a Java blog back then?
Jamis Buck: I started it pre-Rails. If you read the early articles, you’ll see they were pretty eclectic. I was still trying to figure out this whole “blog” thing :) I’ve since come to focus on software-development and use my family blog for more personal posts these days.
AkitaOnRails: I was a Java programmer myself and I still try to maintain myself informed about what’s going on in other communities as Java, some PHP, Python. What do you think or feel about other frameworks and technologies as CakePHP, Avi Bryant’s Seaside or even Django?
Jamis Buck: Honestly, I’m a bit ashamed to admit that I don’t keep up on other frameworks as much as I should. Seaside has some neat ideas and my desire to improve my Smalltalk programming skills has made me want to poke into that further. But other than that, I haven’t shopped around much (to my own personal detriment, I’m sure).
AkitaOnRails: And still about Java, I am very excited nowadays about JRuby. I interviewed Ola Bini and I’m also kind of stalking Charles Nutter. Did you know the guys? Did you got interested in trying it?
Jamis Buck: I know who they are, and I’ve met Charles at a few conferences, but I’ve never really had a chance to talk to them in depth. JRuby definitely sounds exciting. I’m very curious, in fact, to know whether it can support Net::SSH or not since that would mean you could run Capistrano under it. But I’ve not had a chance to actually try it out.
AkitaOnRails: Insisting on the Java subject, I posted a while back about some discussions about Design Patterns pointing to flaws in languages, and I just read a post you wrote about Dependency Injection and your Net::SSH library. What do you think about Design Patterns now that you’re a full-time Ruby programmer?
Jamis Buck: Design Patterns are wonderful. They give us a language to talk more concisely about programming. It is so much easier to say “use a factory method” than to circumlocate and confuse each other. As for specific design patterns, some are more useful than others in different environments. As I wrote in my post, Dependency Injection is just not something you need in Ruby, but in environments like Java, it can be a life-saver.

AkitaOnRails: About 37signals again, you are very committed to Apple products. I saw that video on Apple Education with Jason and David. And now we see that Leopard will bring not only Ruby but also Rails, Mongrel and even Capistrano. How is your relationship with Apple?
Jamis Buck: I wouldn’t say there is any “relationship” with Apple. We’re big fans of their designs and interfaces and I think that reflects in our own work. Apple itself is including Rails, Mongrel, and Capistrano in the wake of those tools’ successes. Mac OS X really is a powerful environment for programmers and adding those tools “out of the box” makes it even more so. It makes sense to include the popular Ruby tools, too, since Ruby is going to be a first class citizen when it comes to developing OS X applications, thanks to the adoption by Apple of the Cocoa bindings for Ruby.
AkitaOnRails: You obviously use a Mac for your work. What are the tools you use the most besides Textmate?
Jamis Buck: Well, Capistrano :) Firefox w/ Firebug, Parallels (for IE testing), iTerm (though I’m looking forward to the new Terminal.app in Leopard), Campfire is indispensable, AdiumX, NetNewsWire, Knox (for simpler encrypted filesystem access). I still fall back and use vim pretty often too, for quick edits. There are probably others :) But I can’t think of them off the top of my head.
AkitaOnRails: There are a lot of talk about GTD nowadays. I think I saw your profile at 43folders. Are you into this kind of organization philosophy as well? How do you maintain your routine organized? Many people (myself included) have a hard time differentiating work from hobby and keeping ourselves within the project’s deadlines and such.

Jamis Buck: I’m not a GTD fanatic. I guess I try to be pretty pragmatic about it. I’m terrible about procrastinating, though. Mostly, from 8-5 I try to focus on the tasks that have been assigned to me and outside of that, I work on my hobbies… which happen to overlap work sometimes :) I’m really the wrong person to ask about being organized! If it weren’t for my wife, I think I’d get very little done, actually.
AkitaOnRails: What are you most interested nowadays besides Rails, Capistrano? Not only technology-wise. Any hobbies?
Jamis Buck: I’ve lately become very interested in military history, which has lead me to read about the American Civil War among other things. My wife and I are really enjoying Harry Potter #7 right now, too :) And I’ve become quite attached to my Nintendo Wii lately, as well! I used to be quite into role playing games, but haven’t done that for a few years. I’ve still got a ton of books for D&D, though, and maybe someday I’ll dust them off :) I enjoy spending time with my kids (Nathaniel is 5, and Katie is 3). We’ll be going camping for a few days in a week or two, actually. Always something to keep me busy!
AkitaOnRails: Haha, I see. And do you travel a lot? Outside of the US, I mean.
Jamis Buck: Not really. Last year I went to London for the first time, for RailsConf there, and this year I went to the Czech Republic. But aside from that, I’m really a homebody. I’d kind of like to do more traveling, but I don’t like to travel alone and having kids puts a damper on the spontaneous “get up and go” aspect of travel. We do occasional road trips and stuff, though, which is fun.
AkitaOnRails: Do you hear what’s going on the Ruby/Rails communities around the world? What do you feel about the meteoric rise of Rails in the US? 37signals, of course, was the fuel for all this and the reason we – both Rubyists now – are talking today.
Jamis Buck: I hear some news, but I’ve trimmed my newsfeed quite a bit. I think I only subscribe to 30 or 40 feeds these days. It was really exciting to go to the Czech Republic and see the excitement there about Rails. It reminded me a lot of how things were in the US a couple of years ago.
The rise of Rails has been incredible. There have been growing pains, of course. With wider adoption you begin to accumulate people who aren’t passionate about the tool, and only want to learn it for the resumé, or because a client has asked for it, and I think that dilutes the waters quite a bit. But there will always be a core of passionate users and that’s what makes the community so wonderful. It’s been a really amazing experience to have been a part of that core, almost since the beginning of Rails.
AkitaOnRails: You have the rare opportunity of seeing all this from a VIP perspective near Jason and David. And of course, yourself, being one the propellers of the community. Many people think of David as an arrogant :-) I can perfectly understand his opinionated point of view. What do you think of it, from the perspective of someone who actually know the man?

Jamis Buck: David is one of the most confident people I have ever met. My biggest frustration with him is that he’s RIGHT so often. He’s a very clear thinker and jumps right to the core of the issue, which can be very disconcerting if you aren’t used to that. All those attributes combine, I think, to make people who don’t know him consider him “arrogant”. But he’s not arrogant. He doesn’t put people down in order to raise himself up. He’s just extremely gifted, very smart, and doesn’t beat around the bush. I’m very honored to be able to know him. I’ve learned a lot from both him and Jason.
AkitaOnRails: I don’t know if I got it correctly but Jason Fried was the one that started 37signals? Can you give us a small glimpse on the origins of the company? I know that David is not from the US, how did they get to meet each other?
Jamis Buck: Jason co-founded 37signals, in the late 90’s. It was originally a design consultancy. In 2003, Jason started to work on a project in PHP, and asked around online whenever he got stuck. David responded to his queries several times and Jason finally just asked David if he would write the project. David came on part-time for awhile, then, since he was still finishing school. But eventually, Jason wanted to write Basecamp, and David did all the work on that, part-time, in Ruby. His experiences with that, of course, led to Rails. And eventually David become a partner in the company. That was in 2004, if I remember correctly.
AkitaOnRails: Great. And coming back about you. Now that Capistrano 2.0 is finally released, are you involved in some new open source tool?
Jamis Buck: With Cap2 out the door, I’m really focused on rewriting Net::SSH and Net::SFTP. Some frustrations with their limitations in writing cap2 has made this necessary :) The only “new” thing to come of this is Net::SCP, which is an implementation of an SCP client in Ruby and which I will release when I release v2 of Net::SSH and Net::SFTP.
AkitaOnRails: Oh, and speaking of which, I remember that the former Cap 1.4.1 didn’t play very well on Windows boxes. Is that correct? Any advances in this field or do you feel that supporting Windows is just too much?

Jamis Buck: Well, as far as I know, cap 1.4.1 worked fine on Windows machines. The limitation was that you can not deploy TO Windows. Deploying FROM Windows works fine. And as for making cap deploy TO Windows, I have no plans. The difficulty is that Windows is not a POSIX environment, which is one of the fundamental assumptions of Capistrano, regarding the target machines.
AkitaOnRails: Ah, yes. I never tried that, therefore my confusion. You’re right. Well, I think I already got a lot from you. Anything that you would want to say to the Brazilian community? :-)
Jamis Buck: “Stay passionate” :) Keep the passion for Rails burning, it’s what makes the community worth belonging to.
AkitaOnRails: Couldn’t be better. Any plans for coming here?
Jamis Buck: Ha, none in the immediately future :) I’ve got a baby coming in September, which puts a damper on travel plans :) I’d love to visit Brazil someday, though.
AkitaOnRails: Didn’t know that. Congratulations!
Jamis Buck: Thanks.
AkitaOnRails: Well, thanks a lot for your time. It was a very insightful conversation. I know people will enjoy this.
Jamis Buck: Thank you very much, Fabio. I’m grateful for the opportunity!
/ 20.Jul.2007 at 11:36am

This will be a fun interview. My guest this time is my boss. He not only is an employee of Surgeworks but an active Ruby contributor and participates mainly in the Utah Rails User Groups (URUG). Many of his values and ideas resemble my own.
Carl Youngblood has worked professionally as a software engineer for over ten years, and is currently the Rails Practice Manager for Surgeworks, a software engineering consulting firm (where I happen to be as well :-). In addition to his work at Surgeworks, Carl is an owner of Confreaks, a company that records conferences, seminars and workshops, and is a director of the Mormon Transhumanist Association. He received a bachelors degree in Portuguese from Brigham Young University and a masters degree in Computer Science from the University of Washington.
AkitaOnRails: So, let’s get started. This is very strange to interview someone you already know. But let me try. Before talking about Ruby. The first thing most of my readers get intrigued is about your Portuguese skills. Can you tell them what led you to it?
Carl Youngblood: Yes. My first introduction to Portuguese was as a Mormon missionary in Brazil. I arrived in Sao Paulo having only received a two-month crash course in Portuguese. When I got there, it seemed like I had to learn everything over again – this wasn’t the language they taught me! :-) But after spending two years in Brazil in a context in which it was imperative to converse with other people, I learned Portuguese well. However, I would say that my skills were primarily in conversational Portuguese. Later on I discovered Portuguese literature and developed my written skills further.
Upon returning to the States, I decided to do a double-major in Portuguese and Computer Science. I decided on Portuguese because I enjoyed the language so much, and felt like I had a real talent for it. I chose CS because I have been in love with computers ever since I was 12 and got my first Commodore 64. Or maybe it was 10 years old. I can’t exactly remember.
AkitaOnRails: Where did you stay during these 2 years here in Brazil? What were your responsibilities here?
Carl Youngblood: I spent time in Monte Mor (a small town just outside of Campinas), Campinas, Marilia, Umuarama, Maringa and Campo Grande.
AkitaOnRails: But did you do anything computer related here during this period? People here would be interested to know what do you think of our country, being an outsider that really spent a serious amount of time around us. What’re your personal impressions about the country, the people, the culture, our local habits? Maybe a few words about the good and the bad :-)
Carl Youngblood: My first 4 months were spent mostly meeting people in the streets and in their homes and trying to teach them about our church’s doctrines. Just to clarify, Mormon is a nick-name given to my church because they believe in a book of scripture called The Book of Mormon, along with the Bible. But the full name of the church is The Church of Jesus Christ of Latter-day Saints. Anyway, I spent the first four months teaching people and helping to conduct church meetings, and walking A LOT – we walked about 15 miles a day, and I frequently remember waking up in the middle of the night with pains in my legs :-) After the first four months, I was called to work in the mission office in Campinas as Historiador da Missão – a secretary of sorts. Here my computer skills came into play.
After spending four months in Campinas as mission historian, I was called to help open up a new mission in Marilia, and spent another four months working in that mission office on the computer.
I didn’t really develop any amazing software for the mission, although I did help design an Access database that promptly fell into disuse after my departure :-)

Overall I really enjoyed my time in Brazil. I discovered how much I enjoyed learning another language, and this newfound fascination led me to study this language later at the university level. The Brazilian people I met were for the most part very friendly. It was not uncommon to be invited into peoples’ homes and offered food before we even knew them, and they were usually willing to give you the shirt off their backs. I also really like Brazilian music, especially Brazilian Popular Music (MPB). Tom Jobim is my hero, along with other legends like João Gilberto, Luiz Bonfá, Vinícius de Moraes, and other more modern artists like Caetano Veloso, Gilberto Gil and Djavan. It was wonderful to discover a whole world of music and literature that opened up to me when I learned Portuguese. The food was good too, although I missed a few items from home, like corn chips and peanut butter, strange as it sounds.
On the other hand, I frequently noticed a profound lack of ambition. Most Brazilians we met were content to have a roof over their heads, food in the fridge and a TV. Of course, my observations are bound to be skewed a little by the fact that I mostly interacted with the poorer class of people who did not live in closed highrise apartment complexes, which were difficult for us to make house calls in, unless we had a prior appointment. One of Brazil’s most difficult problems is the large disparity between rich and poor and the consequently small middle-class. When Brazil abolished slavery (one of the last countries to do so), little or no effort was made to assist emancipated slaves in transitioning towards gainful employment in the new economic system, which led to the development of many autonomous shanty towns that were nearly completely isolated from the more “respectable” centers of commerce. This isolation continues today. It is not uncommon to see a wealthy suburb right next to a sprawling slum, as if each were ignoring the existence of the other. Overall though, Brazil is really making headway and the standard of living is improving dramatically.
One event that I distinctly remember was the advent of public internet access and the WWW in 1995 while I was in Maringa, I believe. I had often commented to my brother back in the days of text-based bulletin-board systems that it would be cool to create a markup language that allowed computers to render graphics over a modem connection. When I saw the WWW in 1995, I said, “Somebody stole my idea!” :-)
AkitaOnRails: Haha, so you were involved in online activities since before the advent of the Web per se? And, you went to college after this 2 year period here?
Carl Youngblood: I was involved in modem-based BBSes in our local town of Provo, UT since about 1990 or so. My brother ran a BBS called London after Midnight. He was sort of into the goth/cyberpunk scene (or at least wanted to be :-) ). We mostly used them to pirate games, before I grew up and realized that other people were trying to earn a living off this stuff.
I had already done one year of college as a music major (Clarinet performance) before I went on a mission. After the mission I returned to college and changed majors.

By the way, we were also connected to a worldwide network called Fidonet, where we participated in newsgroups and had delayed discussions. Every night our computer dialed up a system in Nevada to download the new messages.
AkitaOnRails: Oh, that’s cool. Going back to this subject, I was into BBSes as well because of my neighbor. He hosted a hacking BBS called Medusa and we played a lot brute-forcing against passwd files, using Blue boxes and so on. (Damn, we’re confessing a lot of crimes here, hope we’re not going to litigation for that ;-)) Getting back on track. So were you also caught in the period of the Internet Bubble? Doing PHP websites and so on?
Carl Youngblood: Haha, good point. Those BBS days were fun. We felt like we were on the cutting edge. Yes, I was involved in the Internet bubble. Omniture (called MyComputer.com at the time) was in the middle of an acquisition by NetObjects. However, before the acquisition took place NetObjects’ share price had plummeted to the point where they were valued at half of the acquisition cost, which basically meant it wasn’t going to happen. MyComputer.com laid off a bunch of people, but I left a couple months before that happened. My boss, speaking after the fact, told me that I would have been able to keep my job (I was one of the first employees), but I saw signs of trouble and had another opportunity, so I took a job at Legato Systems developing mirroring drivers in Windows of all things :-)
AkitaOnRails: Same thing for me here in Brazil. I was involved with a dotcom company that went bankrupt but I was able to get out a few months earlier. Anyway, so you went straight to low-level programming. How many programming skills do you have? From low-level assembler all the way to Ruby not to mention Pascal, VB, PHP, etc?
Carl Youngblood: Legato eventually closed down their office in Orem, Utah, at which point I went back to school to get a masters degree. I began thinking I was going to do a masters in Portuguese and eventually work as a professor at a University after getting my PhD. However, I found myself constantly working on software projects, even while I was teaching Portuguese classes and doing my graduate studies. I eventually decided I should face the obvious and continue my passion of software development. So I switched over to the Computer Science department and began working towards a masters degree in CS. All this was at Brigham Young University in Provo, Utah.

I first learned Pascal and C++ in high school Computer Science classes. My first professional experience was as a C++ programmer developing Windows applications using MFC. I then got a job doing PHP/MySQL development for Omniture. After that I was doing C-based windows drivers but also doing Ruby, Perl and PHP work on the side. Drivers are really a totally different beast because you don’t even have the regular ANSI C libraries available to you. So the C syntax is the same but that’s about it. I later got a job at Boeing doing more C++ development on Linux platforms, all the while nurturing my Ruby/Rails skills with side projects. I also learned functional programming with Scheme, as well as a few other languages like OCaml, Prolog and ZPL during my masters degree. I wouldn’t call myself anything but a beginner in most of those other languages, but they definitely opened up my mind to new development paradigms.
AkitaOnRails: You’ve pretty much followed the paths described by Pragmatic Programmers as David Thomas and Chad Fowler: learn new languages, specially ones with very different paradigms. Did you already know their work around these recommendations? Or was it just a natural curiosity thing that led you to learn so many languages?

Carl Youngblood: Well, the CS programs I’ve studied in (BYU and the University of Washington) did a good job of giving us at least some exposure to a wide range of concepts and languages. I really am grateful for my education because it introduced me to ideas and concepts that I probably would not otherwise have studied. I had also read the Pragmatic Programmer and tried to follow the advice of always learning new things and exposing myself to new languages. I am also somewhat of an information junkie. I am nearly addicted to my RSS feeds, and I feel an incredible anxiety if I start to get behind on my reading—almost as if I’m being left behind while the world reinvents itself. The truth is that I usually don’t miss anything extremely revolutionary by being away from the computer for a few days, but sometimes it feels like it.
Or rather, I worry that it might happen. :-) It can be a problem. It’s hard to strike a balance, especially with a wife and kids to pay attention to.
AkitaOnRails: You’re right. That’s another thing that I always shout at my blog posts: being well informed, all the time. There’s no excuse with tools like RSS aggregators nowadays. And if an American went all the way to learn Portuguese and still being a technology specialist like yourself, there’s even less excuse for Brazilians to avoid improving their English and read more.
Carl Youngblood: I’m not sure if you’ve heard the theory of maximizers vs. satisficers. I read about it on somebody’s blog, taken from a book (can’t remember which). Sometimes I … worry so much that there must be a more elegant solution out there that I can’t ever decide when it’s good enough and get down to the actual business of coding.
AkitaOnRails: hm, yes I believe I read something about this.
Carl Youngblood: That is a problem in this era of rapid innovation. It’s always a moving target, and sometimes you just have to say something is good enough for now and move on.
Joel Spolsky talks about this and compares it to the military tactic of laying cover fire and firing while advancing. Rarely is a new technology or buzzword all it promises, but it keeps the competition struggling to keep up.
In general, it seems like society is advancing toward ever-increasing levels of abstraction. Rails is a good example of this. Its whole mentality is to predict as much as possible the things that the developer will be wanting to do all the time and make convenient abstractions for them. But I’m sure this is only the beginning. We can expect future frameworks to do more and more of the heavy lifting for us, which will in turn enable us to accomplish more and more with less and less effort.
AkitaOnRails: Yes, this is a good very point. Because people tend to ‘fall in love’ with one particular super-new technology and forget about all the rest. This leads to pure obsession. And after a while, this ‘new trend’ is forgotten altogether and you just wasted your time.
Carl Youngblood: Yes, we need to stay current on new technologies but try not to get too dogmatic about them. Chad Fowler’s recent address at the MountainWest Ruby Conference talked about this.

AkitaOnRails: Hey, sorry for the pun, but coming from someone with such a formal dogmatic religious formation like yourself, this is a very refreshing thing to listen: not being too dogmatic. In the end its all a matter of common sense, but even common sense has to be trained. Hence the need to be always informed, constantly studying and keeping an open mind toward new stuff while not closing the eyes to all the rest.
Carl Youngblood: I believe that one’s belief structure should never be so rigid as to not allow for modification. I should always be willing to re-examine my beliefs in light of new evidence and be willing to reject or modify beliefs that seem wrong or misinformed upon closer scrutiny.
In defense of my Mormon upbringing, although it is a fairly conservative religion, it does place a high value on education, which inevitably leads to enlightenment and often to a modification of one’s prior beliefs. Fortunately my fellow parishioners still welcome me, though some of my beliefs may be a bit unorthodox and are different from those I had when I was younger.
AkitaOnRails: We do need more of this way of thinking here in Brazil: pragmatics. Anyhow, coming back again, you were very busy for a long time. Learning Portuguese, finishing your major in CS, working in Internet companies, traditional companies. And all the time Ruby was sneaking somewhere, waiting. When did you finally realized you wanted to do more Ruby? Was it during some project at your day-job, or something you decided by yourself?
Carl Youngblood: I think the real awakening was the meteoric rise of rails and 37signals evangelization of the whole getting real mentality. I attended the Building of Basecamp seminar in Seattle and went to the first RailsConf. I was really inspired by Nathaniel Talbott’s speech about homesteading.
One thing that really struck me about my experience at RailsConf was that I saw colleagues there who started using Ruby at the same time I did and whose names appeared on the ruby-talk mailing list alongside mine. The main difference between them and me was that