Interview With Jamis Buck (formerly at Basecamp and Ruby On Rails)
Jamis is a senior developer who among other things was a part of the Basecamp team for 9 years and was one of the core team members of Ruby On Rails. Jamis also runs a blog and shares endless cool stuff on Github.
How did you get into programming?
It was the summer before my junior year of high school, and my mom had just purchased a brand-spanking-new Tandy computer with a whopping 20 MB hard drive. Of course, being the self-respecting nerd that I was at the time, I tinkered. I discovered GW-BASIC tucked away in an obscure directory, and being thus equipped with the instruction pamphlet and a vague memory of learning BASIC and turtle graphics in grade school, I dug in. So began a love affair with software engineering that has lasted more than 25 years, and looks to continue for many more.
What is your favorite programming language and why?
Well, Ruby is my favorite day-to-day language. I use it for a lot of stuff, and I love how expressive and flexible it is. Before I discovered Ruby, though, I did a lot in C, professionally and on the side, and I still really love a lot of things about C. I’ve experimented with Go and Rust, and while both are interesting, neither of them really capture the wonder I still feel about working in C. (I know, right? “Wonder” is not a word most people use when dealing with a language like C…)
Tell us a bit about creating Ruby On Rails, how did get to work on it and what was it like?
Okay, this is going to be a bit of a novel.
My first Ruby conference was at the end of 2004, in Washington DC. I went as a speaker, in fact, with a presentation about a dependency-injection system I’d written (based on Java’s HiveMind project) called Copland. (Needless to say, my thoughts on dependency injection have changed since then, see here).
It just so happened that there was another gentleman at the conference, also his first time, also there to present about a new project of his. This fellow’s name was David Heinemeier Hansson, and (as you may have already guessed) the project he was telling us about was a little something called “Ruby on Rails”. He and I chatted at the conference, and he confided that he was wanting to be able to bundle Rails with everything you’d need to build a web app–even the database. As I had written some Ruby bindings for SQLite, we began discussing how to integrate that into ActiveRecord. I wrote a simple adapter for it as a proof of concept, and that was that.
Or so I thought. DHH contacted me a short time later and asked if I would like to do some work on the side for 37signals. I had also written SSH and SFTP clients in Ruby, and DHH wanted me to implement a feature in Basecamp that allowed people to upload files and have them stored on their own SFTP clients. (If I’d only known what a headache that feature would later turn out to be, I might have declined!) So I spent a couple of months moonlighting for 37signals, and in January of the next year, they few me to Seattle for a “Building of Basecamp” workshop, made me an offer, and I accepted.
Once I was working for 37signals, it was just a short step further to working Rails itself. Jeremy Daer and I were the first two committers on the project, after David. Those were fun times! It was exciting to be at the front, watching adoption climb, fighting against the antagonism from established environments like Enterprise Java and the like. At first, every feature we added to Rails came directly from our needs in building and maintaining Basecamp, but as more and more people started using Rails for a wider variety of projects, we began accepting more and more patches.
Like I said, it was a lot of fun. Definitely one of the greatest experiences I’ve had with being involved in open source. I started to burn out on it a few years later, though. This is very obvious if you look at the contributors on the Rails project. If you find my card there (I’m #26 as of right now), you can see my involvement kind of petered out around the start of 2007.
You worked at Basecamp for nine years, how is it like to be a apart of such a growing company and how did that effect your work?
Basecamp was absolutely amazing. It’s the kind of environment that most people probably can’t even believe actually exists. Jason and David are amazingly supportive and generous, and everyone that works there is easily in the top 99%, ability-wise. Everyone helps everyone else. There’s no politicking for advantage, no gossip-mongering. Being in an environment like that makes you want to be as good as everyone else around you. You’re lifted up. You get to try a lot of things, learn a lot of things. It was a powerful, life-defining nine years. I truly hated to leave.
You run a (great!) blog , how do you decide what to write about? Does writing come as easily to you as developing?
Thanks! When a topic starts tickling my mind, the writing tends to come pretty fast. Sadly, the topics come in fits and starts. Lately, I’ve been really short on time (my wife is back to school, full time, at USU, and with four kids and a house to maintain, that means we’re both far more constrained in our free time these days).
I really want to get back into doing a weekly post around a programming challenge, though. I did that for a few months at the end of last year, and had a lot of fun doing it.
You post a lot of cool projects on Github, tell us a bit about these projects.
I like to tinker.
I’ve done a lot with maze algorithms (even wrote a book about them — Mazes for Programmers), but I also like to play with algorithms in general. I’ve experimented with generating Celtic knots, SQL manipulation, logic puzzles, fractals, and more. Some things (like the SQLite bindings, and Net::SSH, and Capistrano) have since found other maintainers, and it makes me happy to see them being useful to so many people.
What do you currently do?
I’ve been doing freelance consulting for the last couple of years, and it’s really suited my situation well. With my time as constrained as it is, being my own boss has let me fit work in better than a more formal obligation might. I’ve worked with some great clients, and been exposed to things that I probably wouldn’t have been otherwise. (I’ve learned a lot about PostgreSQL, for instance!)
Where do you see your self in the future? What would you say are your challenges at this point of your professional career?
I actually sat down with my wife recently and we tried to gaze into our metaphorical crystal ball, to answer just these questions. I’d like to author another book, maybe later this year if I can make it happen. I imagine I’ll continue freelancing for the next few years at least, until my wife is done with school, if not longer. The biggest professional challenges I’m facing right now are making time for work, and finding clients that are cool with my constrained schedule!
But honestly, life is good. Crazy, busy, and hectic, but also rewarding, fulfilling, and wonderful!