Chatting with Geoffrey Grosenbach
The Dr Nic interview was a huge success and getting to know and exchange ideas with people as smart and intelligent is very addicting. So, I was again very fortunate to get in touch with Geoffrey Grosenbach, from Topfunky Corporation. He was very kind accepting my invitation for this interview and sharing some of his experiences with us, Brazilians.
I am trying hard to get to know and interview more celebrities from our industry, so hang on there, because we may have more surprises.
It was a very long conversation, which I enjoyed a lot. We discussed a lot about himself, his projects, the Ruby on Rails community and things to come. So, let’s get started.
Geoffrey: Who am I? That’s a big question, but I saw that you asked Dr. Nic, so I was expecting it. ;-) I got started in Rails about 2 years ago when I was living in Taiwan. I was a technology coordinator at an American school and wanted to keep up on what was happening in the web development community. I also had a few freelance gigs and thought, “I’ll try out Rails on one of them.” The client didn’t care what technology was used and it was a great opportunity to use Rails on a real project. That project was eventually abandoned, but I learned a lot. I started by reading through the entire online docs for Rails, which is probably something I should do again! At any rate, previously I worked for several startups, initially using Java and then Microsoft technologies (I live in Seattle), and also Perl, PHP, and the like. My college degree is actually in Philosophy, though, which I’ve never made a cent from (but it was a great topic to study).
AkitaOnRails: Nice. And what’s the deal about Taiwan? How long did you live there? It was just for some particular project?
Geoffrey: I lived there for a little less than 2 years. I wanted to live outside the USA for a while and a few friends had been encouraging me to come work at their school. There were some dry years in 2002-2003 where it was tough to get a good web development job here, so I took the opportunity. I taught a few computer-related classes to teenagers and also purchased equipment and kept the (Windows 98) network running.
AkitaOnRails: The post-Bubble era. You mentioned startups. Any known big names? And Jesus, Windows 98 in 2003? :-)
Geoffrey: Yeah, it was pretty sad. Fortunately it wasn’t Windows ME! I upgraded the whole network to XP while I was there. I also ran a few Linux servers for firewalls and such, and convinced the school to buy me a dual screen Mac. But as for startups….
I wrote data-mining type software for a company called Project Guides that was later bought by Onvia. Onvia was a pretty big company and sold computer equipment online before they went public. But now they have completely changed and are in the government contracting business.
It was a fun job because I basically created the position. I was hired to scan newspaper articles and run OCR software to pull out the text. (as a college internship). I thought, “Couldn’t this be done online?” So I researched the existing sources and wrote a proof-of-concept bot that would visit government project announcement sites and catalogue upcoming projects that companies could bid on. There was no RSS, so it was a lot of parsing of HTML to pull the data out.
AkitaOnRails: And all this in the Internet Bubble era? How bad did the burst of the bubble affected you, your life and your plans?
Geoffrey: Yeah. Well, with a degree in philosophy, I didn’t expect to be very wealthy. When I got that job doing programming it was a huge surprise. But I love to program (my first programming class was learning BASIC in 4th grade in the mid 80’s).
AkitaOnRails: And just out of curiosity, what led you to a Philosophy degree instead of, let’s say, Computer Science?
Geoffrey: I’m an avid self-learner and I felt that I would benefit more from learning many of the topics on my own instead of going through a program. After I graduated, many of my friends with CS degrees would come to me and ask how to do basic things like connect to a database or write a dynamic web page. I guess I just preferred to learn on my own, on the job, instead of in a class.
AkitaOnRails: Haha, I completely understand that. I have a similar situation. I’m a self-learner myself. But back to the first question. Isn’t it a little bit unusual to pick up Ruby as an option like 2 years ago? Or was it already famous there?
Geoffrey: I had heard about Ruby at about the time of the famous Dr Dobbs article in 2000 or 2001. I thought “That’s weird. Calling methods on a bare integer?” I wish I had tried it out more then, and I don’t know why I didn’t. I was trying other languages like REBOL and learning C and Java, of course. But why Ruby? I was doing some client work and stumbled upon Basecamp. From there I learned about Rails and decided to try it out. Also, I wasn’t working for a company that required a particular language. The school in Taiwan used Cold Fusion and I wrote some sysadmin scripts in Perl, but I could use whatever I wanted to.
AkitaOnRails: Do you work only on Rails nowadays? Maybe it’s time to ask about Topfunky. What can you tell us about it?
Geoffrey: Well, the job in Taiwan was on a 2-year contract. So I had to decide whether or not to sign on for another 2 years. I decided to come back to Seattle and that seemed like a good time to try to get freelancing gigs before applying to other jobs. Ironically, one of the jobs I did apply to would have sent me back to Onvia to write the next generation of bot software for them (as a subcontractor).
So I forget the exact series of events, but I started my blog and also got a small freelancing gig doing Rails. It’s been 100% Rails since then, mostly for PNN, a company near San Francisco. Actually, I’ve been working pretty consistently for PNN for about the last year and a half. But I’ll be going fulltime with PeepCode in the next month or two.
AkitaOnRails: I was gonna ask you that. Seems like PeepCode is very successful now.
Geoffrey: Oh, yeah, part of the deal was that I went to a Seattle Ruby Brigade meeting in the summer of 2005 that happened to be at Amazon.
The Rails Podcast
AkitaOnRails: You started it all together? The blog, the podcast, the screencasts?
Geoffrey: The blog first. I wrote the Sparklines library, inspired by a handout left on the table at Amazon. Then I did a few interviews for the podcast and eventually took that over. PeepCode is only about 6 months old, but has done much better than I ever expected it would.
AkitaOnRails: I didn’t listen to all of the Rails Podcast yet. Who was your first guest? Where did this interview idea came from?
Geoffrey: I didn’t start it, actually. Scott Barron, of the Rails core team did, based on a dare from Heinemeier Hansson. He interviewed DHH and then Dave Thomas, and then a month went by. I wrote to him and asked if he would publish an interview if I did one.
I’ve always been interested in recording and audio. Then I ended up doing 43 more and still going strong! My first guest was Thomas Fuchs, of Scriptaculous. Honestly, the sound quality was horrible initially. And I was a bit shaky on the interviews, but I’ve learned a lot in the process.
AkitaOnRails: Your last podcast episode was about Twitter, Alex Payne and the discussion around the scalability problem. I still didn’t have time to listen. How did it go? Is everything settled down already? They are not dumping Rails, are they? :-)
Geoffrey: I’m surprised that the Twitter issue has been such a big deal lately. There was that interview on a blog with Alex Payne and then the response from DHH, and it blew up from there. Hopefully this interview will command as much press as that one did. ;-) The podcast I did with Alex and Jack Dorsey, creator of Twitter, was pretty civil.
AkitaOnRails: Exactly, I’ve been following the flow of the events and it blew me away. But are the Twitter guys upset about all this fuss around them?
Geoffrey: They talked about the idea, how it took only 2 weeks to develop the first version. And briefly mentioned that they were having some scaling problems, which they were fixing. From comments by Blaine, their lead developer, they have been very open about it. They don’t seem to be too upset and have supported Rails throughout, while being honest about the issues they are tackling.
AkitaOnRails: And abruptly changing subjects, what about the conferences. RubyConf, RailsConf, US, EU, have you attended all of them?
Geoffrey: I’ve been fortunate to have attended many of them. yes. RubyConf 2005 and 6. RailsConf Chicago and London. I’ll be at Rails Conf Portland this year, and also Berlin. And I am going to GoRuCo in NYC tomorrow. I’ve missed some of the regional ones, such as the one in Salt Lake City and the SDForum.
AkitaOnRails: That’s the occasion where you do the podcasts? You hunt them all down and record them? Is that how it works? :-)
Geoffrey: I have always said that if I couldn’t afford the conference, I would just go for the afterparties! It’s great to meet people in person. I try to do as many as possible in person. Recording over Skype is a great option, but the sound quality is often poor. I like the on-the-spot, journalistic feel of doing it in person. And I just got a great little hand-held recorder that I take everywhere with me (the Zoom H4).
AkitaOnRails: Yes, that’s for sure, the afterparties! And I know the opinions will be biased in favor of Rails, but did you find any ‘skeptics’ between the audiences at the conferences? Do you feel they’re having a hard time learning or even using Rails at work? What’s the most usual good things or complaints you hear?
Geoffrey: Well, if someone is paying US$1000 or more to fly to a conference, buy admission, and hotel, they are probably not going to be a skeptic. But there is a great mix of people, some of whom are just learning about Rails. There are definitely some difficult parts of learning Rails, or at least parts that are unconventional. That’s what I try to cover on PeepCode.
AkitaOnRails: Are most of the programmers that attended to the conferences switchers, or do you see people starting their career going directly into Rails? Does Rails still hold the novelty status or is it well established already there in the US?
Geoffrey: Still novelty, I think. I’ve written to a local college and offered to give a presentation to their CS classes on Rails. They never wrote back. I think a lot of it is up to students to stay current and learn it on their own. Students write to me and say “Instead of going to a movie on Friday night, I bought a PeepCode and learned about Rails”. Which is kind of surprising! I also think that there are a lot of people who want to use it but are in a job where they can’t. But there is definitely more demand than there are programmers. So at least for now, people who know Rails can benefit from the novelty status.
AkitaOnRails: And are programmers getting used to concepts like “Convention over Configuration” or even the new RESTful approach of Rails 1.2? What do you think?
Geoffrey: Going into a bit of detail here, I think there’s a huge disconnect between people on the “front edge” of Rails who use trunk/edge Rails all the time, and those who are just learning and use the official releases. Even now, some people talk as if we’ve moved completely to the /articles/custom_action syntax instead of /articles;custom_action. So there are many people trying to learn Rails, or just get a product out the door that they have been working on for 6 or 9 months. For those people, there’s a lot of learning about the current styles that is difficult. Not everyone can rewrite their whole app every time the syntax changes. But the general ideas of Rails are leaking out into other frameworks, so I think people are becoming more familiar with the ideas, especially of REST. It depends on the person, of course.
AkitaOnRails: Having made several podcasts, blogs and the teaching material of PeepCode. Where do you feel people are having the most difficult times about Rails? Where are they getting stuck at? Many people I know are a little bit afraid about the terseness of the syntax (mostly are Java programmers) and the lack of compilation (static typing).
Geoffrey: Two things,
- The magic that goes on behind the scenes. In Django, for example, there’s a more explicit connection between the templates being rendered and the variables being passed. With Rails, there is a benefit of having things happen automatically, but it’s also confusing.
- ActiveRecord. It’s still the biggest part of Rails and the thing that attracts people, even though there are other ORM’s out there. I think it’s all about the user interface and learning to take advantage of what’s there without getting frustrated by what’s going on under the covers. For example, I was debugging a weird issue with validates_uniqueness_of last night. I still don’t know what was going on, and it may have been a problem with how late it was, but the error was deep inside active record somewhere. If someone was just learning Rails and expecting things to work smoothly all the time, that would be really confusing.
AkitaOnRails: Were you using edge? or the stable release?
Geoffrey: Stable. But any programming project is going to encounter those kinds of issues. It’s just that people expect Rails to be 100% smooth sailing, sometimes (including me).
AkitaOnRails: Java was like that back in the mid 90’s. Now people are cleverer about it’s behavior. And speaking of Django, I remember that you interviewed Adrian Holovaty. He seems like a nice guy. How did you invite him? A Python guy talking in a Ruby show. And have you been using Django? I liked it a lot.
Geoffrey: Well, I’m interested in seeing other perspectives on languages and frameworks. I think that’s part of what attracted me to Ruby. Previously, one of the most popular interviews was with Avi Bryant, of Seaside and DabbleDB. So I think people like hearing from someone outside Rails every once in a while. I was in Chicago for RailsConf, and knew that Adrian lived there. So I met him at his office on Sunday morning. It was a great chat, although I understand Django a bit better now so I would ask different questions if I did it again. That’s still the most-downloaded interview, after the one with DHH.
AkitaOnRails: No kidding! I tell colleagues all the time: “don’t be limited to one thing only. Most of all, don’t be religious trolls!” I once made a joke: “you all sound like Sauron, one framework to rule them all, and in the darkness, bind them!” :-) Do you see people like that there as well? I hope they are diminishing for a most open-minded generation.
Geoffrey: Strangely, many open source programmers approach software like a marketing department would. “We need market share!” Or religiously, thinking that you have to choose one and stick with it. But fortunately web services and remote API’s are changing that.
AkitaOnRails: Yes, it’s all about the APIs, “if it’s not an open API, I’m not using it”. Don’t remember where I heard that motto.
Geoffrey: Many people have a blog in Rails that imports delicious links from their servers running PHP, that tracks it’s stats from Google, running Python or whatever Google Analytics runs on. So there are many tools and they are good at different things. And by using others, you can loot their best ideas!
AkitaOnRails: I guess, it’s one of the most compelling things about all this “Web 2.0” talking. Not only the social networking aspect, but also the easy of interoperability.
Geoffrey: I’ve been using HAML for the last week, and I love the syntax, which is very YAML-like. Culturally, we do that, so it shouldn’t be a surprise that programming languages can do it, too.
Personal Projects and Discipline
AkitaOnRails: So, how’s your life with so many things to do, places to go and people to meet? Conferences, Topfunky, Peepcode, podcasts, interviews. How do you organize your many activities? Many people I know complain that they “don’t have enough time to learn new things”, as an excuse to not learn Rails or whatnot. Any tips for the audience?
Geoffrey: My model for personal organization and process refinement is Zed Shaw. I still need to interview him about it, but he keeps stats on how many bugs he writes, and then changes his workflow when it gets above a certain number. I’m not that smoothly engineered, but I do tweak my tools to get the most benefit. I use a few different to-do lists and project management systems (backpack, my own: The Online CEO). Mostly it’s trying to be aware of my own skills, needs, and mental stamina!
A problem I’m trying to figure out is how to maintain an open source project. I start a bunch of things and get patches from people, but don’t have time to actually apply and debug them, or rewrite them to work like I think they should. I’m thinking of running an open svn server where anyone can commit. Open source without the responsibility to keep a project going! ;-)
AkitaOnRails: You need to subcontract a maintainer :-) Nothing can be committed unless it goes through a peer review or a more serious test suite.
Geoffrey: Yeah, the problem is finding a maintainer who has free time. But it’s great to have a project that actually makes money, because it makes priorities clearer.
AkitaOnRails: By the way, what open source project?
Geoffrey: Well, I have a pile of 30 patches to Gruff that I haven’t had time to commit. And even some of my other Rails plugins and documentation, like the Capistrano recipes I posted for Dreamhost and TextDrive. I don’t even host Rails apps there anymore, so it’s hard to be motivated to maintain them. My wife loves to clean out the house and put a “Free” pile in front of the house. Usually, she can get rid of a pile of 20 or 30 objects in 24 hours that way. I need an open source version of that. ;-)
AkitaOnRails: Oh, that’s a nice subject I was almost forgetting: your open source projects. I understand you maintain some. Which is the one people like the most?
Geoffrey: Gruff is definitely the most popular. I enjoy writing graphical libraries, and use it in many of my own projects.
AkitaOnRails: Many people here probably are not familiar with Gruff. How would you present it?
Geoffrey: I started Gruff in the fall of 2005. Many people were on IRC or blogs saying “Where’s a good Ruby graphing library? I can’t find any.” So I was watching a movie one night and had my laptop. I started thinking about what kind of graphing library I would want to use, how the API would work, etc. By the end of the movie, I had a good start. So it does bar graphs, line graphs, pie, and a few others. It uses RMagick, which is the biggest problem. It’s hard to install all the dependencies. Ryan Davis, here in Seattle, wrote a pure Ruby PNG library. I’m hoping to use that to write a simple graphing library that’s all ruby.
AkitaOnRails: Yes, I heard about it. I hear that it’s more stable than ImageMagick (without the memory leaks)
Geoffrey: Actually, he has a few different ones in development. ImageScience does resizing. His separate png library can do drawing and render simple fonts.
AkitaOnRails: So, have you ever been in contact with Charles Nutter, Ola Bini or anyone from the JRuby team? Are you following this subject? Do you have any opinion or heard any Java programmer talk about it?
Geoffrey: I interviewed Charles Nutter at RailsConf in London, a few days after they started working for Sun. I think it’s very exciting to see that project getting near to completion. The interoperability with Java will be a huge boost for existing Java projects. I’m also excited about the Rubinius project, by Evan Phoenix here in Seattle.
The early culture around Ruby in Japan involved a lot of experimentation and hacking on the Ruby interpreter itself. I’m hoping that Rubinius will make that possible for people who want to hack in Ruby itself. And will probably be faster and more maintainable, too. It also has some great features for introspection. Even methods themselves are objects in Rubinius, with some more features than Ruby has now.
AkitaOnRails: It’s one of the obstacles the JRuby guys are facing. Do you see a stronger exchange of assets between the projects? Together with XRuby, maybe?
Geoffrey: They are definitely working together. I know that all the alternate implementers met at RubyConf in Denver last fall. And I think they may even have a mailing list.
AkitaOnRails: And with all this turmoil around the community, what do you think are the most exciting developments going on?
Geoffrey: PeepCode, of course!
AkitaOnRails: hahaha, of course! :-)
Geoffrey: Seriously, I think there are so many great projects that it’s hard to keep track of them all.
AkitaOnRails: You’re right, it wouldn’t be even fair to pin point just one or two. I was going to ask who’s your all time favorite guest at the podcast, but it would not be fair as well. So, instead I’ll ask: have you ever come across some funny or curious situation during all those interviews? Something that stood out?
Geoffrey: I love being able to document Ruby history. It was great to interview Matz, and have him translated from Japanese. Jim Weirich is really insightful. Interviewing Marcel Molina and Sam Stephenson together was great. Marcel did most of the talking, but when Sam spoke it was just in these concentrated, concise insights. He would be a great speechwriter, and the speech would only have to be 2 minutes long to communicate everything effectively.
Geoffrey: Recording a ‘bootleg’ of the why the lucky stiff concert at SXSW 2005 was a lot of fun.
AkitaOnRails: SXSW, South by Southwest. Brazilians are not aware of this event. Can you quickly describe it? Who meets there, what’s it all about?
Geoffrey: Ah, it’s once a year in Texas. It’s part of a music and film festival, both of which are much bigger than the web development part. But almost every web developer who has written a book or has a popular blog is there (At least in English). It’s only about 3 days long, but it’s a fun time.
AkitaOnRails: I know many podcasters go there. Did you meet the guys from Revision3, TWiT, C|Net, Podshow and others? Don’t you have a Podcast conference in the US as well? Many Brazilians are only starting to grasp the beauty of podcasts.
Geoffrey: I haven’t been to any podcast conferences. I know a few other podcasters from Boagworld Podcast, Web 2.0 Show, but not many. I got an iPod video at Christmas and started subscribing to more since then, now that I have space to carry them all. I like Dan Benjamin’s Hivelogic Radio Show some video podcasts, like ZeFrank. I like more journalistic, in the streets podcasts rather than overly produced ones.
AkitaOnRails: Nice suggestions for our readers. Let’s jump to one last subject before I bury you with so many questions. What about the Mac? Why are Railers so into the Macs? :-) (I am a Mac user, by the way, but it’s always good to hear from others)
Geoffrey: I think Ruby has a great user interface for programmers, and people who like that sometimes like Macs, too. I think that as Ruby becomes more popular, there will be more content and help for people using it on Windows. My step dad was a teacher, so I’ve used Apple equipment since 1983. I feel that I live in a parallel universe to go to a Ruby conference and see so many Macs.
AkitaOnRails: I was surprised as well. And probably everyone that got there was caught off guard. Or weren’t they? Is this a Ruby thing, or it all started with Rails?
Geoffrey: I’m not sure. TextMate is definitely a factor, and the lightweight, don’t need an IDE philosophy of Rails. And now that people can make a good income writing Ruby code, it makes the price of Macs a non-issue.
AkitaOnRails: Jason Fried and DHH surely helped this matter. Looks like Apple will release Rails pre-configured in Leopard (when it’s finally released next October).
Geoffrey: I’m also interested in the Ruby integration with Cocoa for those writing Mac desktop apps. It’s crazy that Java is being abandoned for that on the Mac, but Ruby will have bindings that ship with Leopard (I think).
AkitaOnRails: Are you an Objective C programmer as well? I hear that the Ruby integration with Cocoa will be stronger in Leopard.
Geoffrey: I’ve done a little bit. I experimented with OpenGL quite a bit, a few years ago. So I wrote a simple 3D game in OpenGL and Objective-C.
AkitaOnRails: Java is being abandoned because Sun was never good to Apple. Linux, Solaris and Windows were all supported directly by Sun. I think I have recollections that Apple had to make their own JVM and support it all by themselves.
Geoffrey: Right, and it was always a bit slower than the other implementations. Objective-C is getting more automated memory management, if I remember correctly. So maybe Ruby integrating with Mac desktop apps will have a chance to do well.
AkitaOnRails: Precisely. Maybe Open Java will make things easier in a future Mac OS X iteration. Who knows. And speaking of the future, what are your plans for the future of your projects?
Geoffrey: I’m going to be working on PeepCode fulltime. I shouldn’t say “this summer” because I think you’re about to enter winter.
AkitaOnRails: Haha, yes, exactly. I personally like PeepCode, but I never heard of anyone else here buying it. Would you make translated versions?
Geoffrey: A few publishers approached me and wanted to distribute it, but I really want to stay independent for as long as possible, and I think I have some great ideas that they wouldn’t have supported as strongly. I started talking to someone about Japanese translations. I’ve gotten a few reviews in Portuguese, though maybe not from Brazil.
AkitaOnRails: Wow, count me on that if you ever plan on a Brazilian Portuguese translation ;-)
AkitaOnRails: Now, that is cool. Instead of focusing on Rails details, you will broaden the subjects. I bought only the first 3 screencasts yet. Have you ever done something on Mongrel or deployment and optimization procedures?
Geoffrey: I did one on Capistrano, and also one with Zed Shaw on benchmarking with httperf. There’s also one on Page, Action, and Fragment caching. I’m also hoping to cover other topics that are barely covered anywhere, like scaling with memcached and mogilefs.
AkitaOnRails: I HAVE to buy those. To let everybody here knows: how are the pricing models?
Geoffrey: It’s $9 for a single show (they last 45-90 minutes, depending on the topic). You can buy 5 or 10 for a discount (US$7/each if you buy 10). I’m also rolling out team pricing, so you can buy at a discount for a development team of 5 or 10 people. And I’ll be giving out free coupons on my blog and elsewhere.
AkitaOnRails: And what’s the size of each episode? How many episodes do you have so far? You mentioned Zed, so you’re not the loner host anymore?
AkitaOnRails: Nice. PeepCode is only the name of the site? Is it a Topfunky related project? Or are both separated things?
Geoffrey: Topfunky is my company, PeepCode is one of my products. The business is just my wife and I right now. I hope to keep it that way for as long as possible, but I might hire someone short-term in the next year.
A Message to Brazil
AkitaOnRails: Ok, cool. Well, we could go on and on and on indefinitely (I’m loving this conversation). But I already have a lot of material here to work on. Anything else you want to talk about? Brazilian programmers, who are starting their careers, are very lost about what to do, what attitudes to have. What would be your words to them, as an experienced programmer and entrepreneur?
Geoffrey: My advice is to “stick it to the man.” There are so many opportunities for developers. With the internet, everyone has a distribution channel. Many people think that a business isn’t worth starting unless you can sell it to Google for 4 billion dollars, but there are so many ideas out there that would be perfect to support a small business or a solo developer. Then you can use the income to fund your next billion-dollar idea. ;-)
AkitaOnRails: yes, go on one step at a time. Kevin Rose is a bad influence to all those youngsters :-)
Geoffrey: Exactly. And you don’t even have to beat out the existing players in the market. There are many small niches that can support a person if the business idea is good.
AkitaOnRails: Jason Fried’s motto: underdoing instead of overdoing.
Geoffrey: Right. There are many businesspeople with great ideas, but they can’t implement them. As a developer, you have that skill, but you need the ideas. I’m not sure which one is more difficult!
AkitaOnRails: Ok, Geoffrey, so it was such a pleasure to have this chance talking to you. I do hope I didn’t bore you because we have to continue this conversation in another occasion.
Geoffrey: It was enjoyable, thanks! I’d love to come to Brazil sometime. I’ll be there if you host a Rails conference!
AkitaOnRails: Ha! You bet, I’ll invite ya! I just need to find a sponsor :-)
Geoffrey: Some of the best food I ever ate was at a Brazilian restaurant run by famous skateboarder Bob Burnquist.
AkitaOnRails: There in Seattle?
Geoffrey: No, in Los Angeles. The restaurant isn’t there anymore, unfortunately. Anyway, thanks for the interview! It was great to chat with you.