Who is Yehuda Katz?
I’m not really sure how to answer this. I was born in Minnesota and grew up in Monsey, New York (a suburb of New York City). I went to college at Brooklyn College, where I ran the school newspaper and met my lovely wife Leah (who works with me at Strobe as Director of Marketing). I lived in Santa Barbara for a year before moving to San Francisco to work at Engine Yard. There, I worked on Merb, and then became a member of the Rails Core team after Merb was merged into Rails. Lately, I’ve been working at Strobe, where I am the Chief Technologist, and work on bringing SproutCore technology to the masses.
Where and when did you start programming?
I did my first programming as a child, in QBasic in MS-DOS 5. I wanted to get more lives in Nibbles, a Basic game that came with DOS. Since it was written in Basic, I had the entire source code for the game, and was able to find out where to change the code that ended the game when the user ran out of lives. I programmed a few very simple games for my family, and then didn’t program again until after college. After college, I got a job doing web site design, and needed to quickly learn how to do more than just HTML and CSS. This was in 2005, so it was right at the beginning of the development of both jQuery and Rails.
I got involved in both of those projects, and fell in love with the idea of open source. Open source gives us engineers a way to work together outside the narrow political sphere of corporate management. This allows innovations to spread quickly, and many times outpace even companies with thousands of engineers and billions of dollars.
When I started working as a programmer, DHH (David Heinemeir Hansson, the creator of Rails) had just made the point that a lot of what we do on the web is the same sort of thing over and over again. Rails was a way to eliminate the drudgery that came with doing PHP or Java development by hiding the repetition. It also did more than other frameworks did at the time, by taking the position that a lot of things that developers think they want to choose on their own simply slows down the process. Two such cases are deciding the name of the column holding a foreign key, and deciding what to name the methods in your controller. Embracing REST took Rails a step further, defining a very standard way of building applications that worked well with the web’s infrastructure.
Ruby made a lot of this easy by allowing very high-level abstractions, including at the class level, and via a culture that embraced the open nature of the Ruby class structure. This meant that the Rails codebase was never really “done”, even when it shipped, and enterprising Rails developers built a lot of plugins that took advantage of this openness. This was very important for the early stage of the framework, and it helped us understand what kinds of things required more explicit APIs, which we built into Rails 3.
It’s easy to get caught up in negative feelings about the way people monkey-patch extensions into existing libraries in Ruby, but it helps a library or framework grow at a critical stage of its development.
How to become a good Rubyist?
The same way that you become a good developer: read and implement. Spend a fair amount of time learning about new ideas, whether they come from Ruby code, other languages or academic papers. When you find something that sparks your interest, go build something based on it. It might feel out of your league, but nobody ever became a better developer without trying out ideas that are outside their area of knowledge.
You favorite IDE. JS Framework?
I use MacVim (with Janus, https://github.com/carlhuda/janus) for day-to-day development. I use jQuery for its low-level DOM manipulation and its browser abstraction and SproutCore (which uses jQuery under the hood) for application development.
What does your typical day look like?
Way, way too much coding. I spend a fair amount of time reading Twitter, email lists and other communication to learn how users of my software are reacting. I try to provide timely responses to new users, and help interested developers get involved in active participation in open source. I personally believe that there are a lot of people out there who would love to participate in open source projects, but find it hard to get a grip on something (I was one such person!).
What do you do in your free time?
I like to watch movies and read books. My living room is set up with a large 100″ projection screen and a kick-ass media projector, a dream of mine since I was a child. I like to watch documentaries that teach me something I didn’t already know, and this often sparks an interest in books that go into more detail on a subject. If a subject is really interesting, I sometimes spend a lot of time reading the primary sources about it. I also like to fictional movies and read fictional books, especially Sci-Fi, although I much prefer the sci-fi of the 1990s to the sci-fi of today.
I’m a sucker for Disney movies, especially the movies written by Howard Ashman (Little Mermaid, Beauty and the Beast, part of Aladdin) before he died of AIDS in 1991. This is mainly because I really enjoy musicals, which don’t try as hard to be true to reality, and therefore represent a different kind of art form than the traditional live-action film. My wife says that this is a secret I should not tell people, but I’m a bad listener sometimes ;) Despite her saying that, I rarely watch Disney movies alone: truth is there are any number of secret fans in the OSS and development communities. I won’t name names.
Current favorite apps?
I love the Twitter app for the iPhone. Like Tweetie for the iPhone, the Twitter iPad app innovates in terms of UX paradigms in a way that most applications don’t do. I’ve pretty much switched to Chrome for the vast majority of my browsing, and love the work they’re putting into the Web Inspector, although I wish they would put a bit more time into UI polish.
What OS do you prefer?
OSX. It’s a Unix with polish.
Small picture for your Workplace?
Name something that has inspired you recently?
All of the protests across the world have reminded me that human beings fundamentally strive for self-determination, and those who attempt to hold that back are on the wrong side of history. Similarly, the tide seems to have turned in the United States in favor of the rights of gays and lesbians, which gives me faith that intolerance and hatred may eventually be relegated to a small group. In general, watching people fight for their rights from the comfort of San Francisco reminds me of how good I have it, and I find the successes of those struggling to be extremely inspiring.
What do you prefer (and why)? Freelance work or full time employment?
Full-time employment gives me the focus and resources to get important projects to completion. Freelancing requires a certain amount of focus on the business side of things that can detract from long-term goals. That said, I think owning a non-trivial stake in the company you work at is a goal worth striving for, so that you get to help decide the direction of the company and make sure your goals are aligned with its goals.
What are your personal projects and goals for 2011?
I work on a lot of things. These days, I am working a lot on SproutCore; I want to make it extremely easy to pick up and use within the next few months (by the summer). I am also working on improving Net::HTTP (https://github.com/wycats/net-http) in a lot of technical ways that make a big difference in how it can be used. It’s a hard problem, and has been taking a lot of time, but it will give Ruby a robust library that we can use for virtually any HTTP usage.
I also want to try to get version 1.0 of Moneta (my abstraction library for KVS) out in the next month or so.