Placeholder Image

Subtitles section Play video

  • [Music]

  • Back in 1999 or 2000 I had this web design company  called 37signals and I had two partners in the  

  • business, and we were doing some web design for  people, but I had this side project that I was  

  • also doing called Single File which was this bookonline book database thing that I was trying to  

  • build. And I was building it out of PHP, I didn't  know how to program but I picked up a book on PHP  

  • and I started making this thing. And I got pretty  far, but then I got stumped. So I wrote this post  

  • online asking for help, it was a general call  for help, "there's my problem -- anyone know how  

  • to do this?" you know, this is way back before  StackOverflow and all the places you could get  

  • answers, there were no answers, so help! SomeoneAnd it turned out this guy wrote me from Denmark.

  • Back then I was here in CopenhagenDenmark working in the web industry,  

  • and I was just a big fan of the company. Right  from the inception there was a web blog, Signal  

  • vs. Noise, that I followed religiously right from  the get-go. It was just such a weird company,  

  • this was a design company that was focused more on  writing than it was on pretty pictures or graphics  

  • or anything else that I associated with design at  the time. So I was following this company for a  

  • couple of years and then in 2001, Jason Fried, one  of the original co-founders and still my business  

  • partner to this day, posted on the blog a question  about programming. I saw this question and I went  

  • like "Hey, I know the answer to this!". This isway for me to give something back to someone I've  

  • enjoyed reading and learning from in the past two  years. So I did just that, I wrote up an answer  

  • explaining how to do this thing he wanted to do  in PHP with great detail, the best as I knew it,  

  • I wasn't an expert programmer really  but I knew the answer to this question.

  • His answer and his help was so thorough and there  was this quality and this character to his answer  

  • that made me feel like he really wanted to help  and not just respond, but he really wanted to  

  • help. And so we started talking back and forth  about this help, and then we got deeper into it,  

  • and he's like "Can I see the whole thing?" and  I said "Sure!", and I showed him the code and  

  • he's like "This sucks, we should really start  over, let me do this for you" and so that's how  

  • my relationship with David actually began: he  telling me my work sucked, and me going "Okay,  

  • let's do something better then". And it wasperfect partnership from the beginning there.

  • I got my first computer when I was 6 years oldthis was in 1985. It was an Amstrad 464 and that  

  • was my first exposure to programming, typing  video games in from the back of a magazine. I  

  • wasn't very good at them, I only made a couple  of them work, but this was how I got started.  

  • Next up was trying to learn programming  once more when I was around 10, 11 or 12,  

  • a programming environment called Easy AMOS. It  was not easy for me, it may have been Amos but  

  • it wasn't easy. So I failed once more to learn  programming, I had a hard time with even the  

  • basics of variables and loops and conditionals  and all the basic constructs you need to learn  

  • how to program. So I gave it up once more, and  it wasn't until I discovered the internet in  

  • 1995 getting involved with making HTML that  I thought "Hey, here's another opportunity  

  • for me to be able to create something!". And  in 1999 I started working on a gaming website  

  • with another programmer in PHP. and that was  really the first time things clicked. At that  

  • time I'm 20 years old, this is my third attempt  at learning to program but now I understood it.  

  • And that was really the prep I had beforeyear later I would write Jason that email.

  • So the first time I met Dave was in  Chicago, we were working together,  

  • we had been working together for quitewhile actually but we never met in person,  

  • just on Skype you know. So I'm at the John  Hancock building in Chicago, which is a famous  

  • building in this big plaza waiting for him  to arrive. We agree that we're going to meet  

  • in the morning and so I'm waiting there and I'm  looking around like is that him?, is that him?,  

  • is that him?! and then no, it wasn't him, but  then this guy shows up and it comes around the  

  • corner and he's wearing all white rail thin  like white T-shirt, really short sleeves,  

  • white capri pants, white shoes. I'm like "there's  Denmark right there, that's David". And I think,  

  • actually you know, I'm thinking he had white  shoes but I think he may have had rollerblades  

  • on now that I think about it, I'm not exactly  sure. But it was so obvious that it was him

  • After we'd worked on this book thing forwhile, we worked on another client project,  

  • then actually a few because we were a web design  firm so we were just doing web design, we did  

  • a few more things together and then we started  getting really busy and needed a way to manage our  

  • projects. And so we had this idea to build this  project management tool for ourselves. Now, David  

  • was still a student at this time, he was still in  Copenhagen at business school there so he didn't  

  • have a lot of time, he wasn't a full-time employee  or anything yet. And I hired him to do this right  

  • the back end of Basecamp, and at the time he's  like "I don't want money, I want laptops, I want  

  • computer equipment" because it was very hard for  him to get modern Apple stuff in Denmark. So every  

  • time he came to the US - this is probably illegalbut anyway - every time he came to the US I gave  

  • him a laptop or I gave him a, you know, whatever  he needed at the time right. And that was payment  

  • for Basecamp, and he would only give us like 10  hours a week cause that's all the time he had.

  • 2003 is when we decided to start on Basecamp. We  had worked together in these consulting projects  

  • and most of the organization around that had  been over email, an experience everyone feels  

  • I think if they try to organize projects over  email. So we thought, do you know what? we know  

  • how to make web applications, can't we just  make an application that'll make this easier  

  • for us to do so we don't have to deal with  all these email threads and which version  

  • of the file is the latest and what's left to do  before we can launch?. And that's what we did,  

  • and I had just earlier that year discovered  Ruby through the writings of Martin Fowler  

  • and Dave Thomas who were using Ruby to illustrate  programming concepts that they were writing about  

  • in programming magazines. I just thought, this is  a really interesting programming language. First  

  • of all I hadn't heard about it before, and I'd  been working with the web for quite some years  

  • at that point, that was intriguing. It was out  of Japan, that was intriguing. I saw the code  

  • and it looked just like pseudo code, you know how  if you're trying to explain a programming concept  

  • sometimes you won't write the exact right syntaxyou'll just write something that more looks like  

  • English. And that's exactly what Ruby looked likeAnd I thought, this is just really interesting.  

  • And here are these two titans of the industryDave Thomas and Martin Fowler, who were clearly  

  • very enamored with the language, expressing that  they would wish to write systems in this language  

  • if they could only get permission to do so. And  I thought, you know what? Here's a project where  

  • we can choose to do whatever we want, so I got to  make the choice and the choice was let's try Ruby.

  • I remember in the early days of building Basecampyou know, I didn't have any input on the backend,  

  • but David's like "you know, I'm going to use  this thing called Ruby to build Basecamp",  

  • cause we've been been working in PHP previously  and I'm like, "What the f()c% is Ruby?!?" I've  

  • never heard of this. He's like, "It's  this thing out of Japan". I'm like,  

  • all right, I mean really I truly I didn't  care because it's his part of the project,  

  • it's not my job to tell him  what to use, and I trusted him.

  • When we started working on Basecamp in 2003, I  was getting proficient enough in programming to  

  • start to develop a taste for what I liked in  programming, but I hadn't found yet somewhere  

  • to express that taste. It really wasn't until  I discovered Ruby that I found the programming  

  • language that simply clicked for me. And what  I loved about Ruby was this sense of combining  

  • the immediacy of PHP being able to get Hello  World onto the web with a minimal amount of  

  • fuzz together with a really sophisticated well  thought out coherent object-oriented program  

  • language. That was the appeal I found in Java  that there was all this intellectual rigor the  

  • software pattern and all the other stuff that  serious system development engineers were all  

  • about. And Ruby to me brought both of those  things together, or at least could bring both  

  • of those two things together. And that's wheresaw an opportunity. It started out really simple,  

  • I had a two week window that I gave myself  of could I build just the basics of a web  

  • application, could I get HTML up in the screen  that was rendered from Ruby, and I was talking  

  • to a database and could I simply make those things  happen. So there wasn't a lot of libraries, there  

  • were not a lot of frameworks, there were certainly  not a lot of things to help you with database  

  • access or with the web development in generalAnd that's how Rails came about, that I simply had  

  • to build the tools myself in order to be able to  use Ruby as my programming language for this new  

  • system we were creating. It wasn't because I had  already looked at a bunch of other things in Ruby,  

  • I had looked at other things in PHP, I looked at  things in Java, so I had a good idea of what I  

  • wanted. But Ruby was the language that gave those  ideas wings, where I thought I could write code  

  • that wasn't just functional, but it was beautiful. Over the next six-seven months, we created  

  • Basecamp, and during that process I extracted  Rails. Not as a big upfront design that I want  

  • to create this grand web framework and release  it to the masses. There was not even a thought  

  • of releasing it originally. I simply needed  these things, so I did that. In the period  

  • between the summer of 2003 and the release of  Basecamp in February of 2004, that was the main  

  • gestation period for the framework itself. Butdidn't really release Rails until later in 2004  

  • because I had this vision right from the get-go  that here's something that could be special,  

  • the first version of Rails needed to be good and  good not just in terms of the code, but also good  

  • in terms of the documentation. So I spentgood six months I think it almost was after  

  • the release of Basecamp, polishing things uppolishing the documentation before putting it out.

  • Right here behind me is where I lived  when I started working on Rails.

  • So when Rails started to take off, it was  pretty wild. And was a bit of a two minds  

  • about it. On the one hand, it was great to see  that something I had created was creating this  

  • much excitement. And at the same time I was  also highly protective of the integrity of  

  • the vision I had put into Rails. More and  more people were interested in Rails, and  

  • some of those people were interested in pulling  Rails in one direction or another. I think it's  

  • very easy to lose control when something like  that happened, be so enamored and just pleased  

  • with other people's contributions that you put  it all in and you have a hard time saying no.  

  • If you say no to someone, you are riskingconflict. And I said no to a lot of things,  

  • I said no to certain things I did not want  Rails to be. There was this infamous slide  

  • at a early Rails conference in Canada where  I simply just put up the words "F()c% You",  

  • and I put up those words as a way of expressing  my at times frustration when someone would show  

  • up with what I considered an unreasonable demand  for me to put something into Rails, then followed  

  • up with a threat: "Unless you put this thing into  Rails, you will fail" F()c% you! That's just not,  

  • you don't get to tell me what to do. I'm working  on Rails because I want to work on Rails,  

  • and I will solve my problems, and I will protect  the integrity of the framework. I'm not here to  

  • be your servant, I am not allowing you to buy  anything from me. This is one of the main reasons  

  • I love open source so much, it is not a commercial  relationship, you don't get to tell me what to do,  

  • you don't get to tell me the direction the Rails  has to take. I'll make those decisions on my own,  

  • thank you very much. I'll take input, absolutely,  I'll take feedback. And Rails is what it is today  

  • because thousands of people contributed really  great work that I had no hesitation saying yes to.

  • [Music]

  • I arrived in the Ruby Community cause I thought  Ruby was cool. I liked programming languages,  

  • I would dabble in them and just try things out in  them. And when I tried Ruby I really liked it. It  

  • just it stuck with me in a special way that I kept  coming back to, just felt close to my heart and I  

  • didn't try to analyze it too much at the timeAs the years went by and I did web development  

  • in Java and PHP and Pearl and other languages, I  kept thinking about feeling that little tug of why  

  • isn't Ruby here?, Why isn't Ruby showed up?. Here  comes this guy announcing on the Ruby talk mailing  

  • list, "I've got a plan". It's like, are you coming  down from Mount Sinai with your tablets of... who  

  • gave you these commandments?! The way to develop  for Ruby and the way it developed for the web,  

  • we haven't seen you before! So it was it was  a provocation and there was some spice to it,  

  • I was like: "Is this guy an $%/&!* or does  is there something to it?!" And it was a  

  • little bit of both: hear this guy with like  a kind of well-carried arrogance about having  

  • the right ideas and willing to set those ideas  out for everybody to see and they were great,  

  • they were good ideas. Sure, some of them were  like old ideas reconfigured but they weren't  

  • pitched as anything but that. The active  record pattern says it right on the tin,  

  • now it took it from a pattern to being a framework  and that added a it was a jolt of energy and kind  

  • of electricity and a Ruby community that was  very generous, very kind, and now had this kind