The Ruby Knowledgebase
Every week a group of Ruby Enthusiasts get together in a Virtual Roundtable and explore/discuss/argue some aspect of the Ruby language or the Ruby community. They allow the rest of us to listen in on their discussion by way of The Ruby Rogues podcast. The podcast can be accessed on iTunes or on the website and offers a ‘fly on the wall’ view of a great bunch of technology savvy people sharing their ideas and opinions.
In this series of articles I will share the results of my interviews with each member of this special group.
Thom: The first thing I’d like to ask, James, is tell us a little bit about yourself.
James: I’m a programmer. That is my day job. I use primarily Rails to build web applications. I’ve been in the community a long time now. I came in kind of at the end of the first era of Ruby, you might say. The first era where we had a handful of people just playing with the language before Rails even landed. Suddenly Rails got popular and one of my hobby skills turned out to be valuable.
Thom: About how long ago was that?
James: Ruby, actually as a language, has been around since 1995. But there weren’t a lot of people playing with it outside of Japan back then. Dave Thomas found it. I can’t remember when the original Pickaxe Book was published, but I would suspect it’s in the early 2000s. I came into the community, I think, in the summer of 2004.
Thom: Unlike many of us who discovered Ruby through Rails, you actually came the other way around. You discovered Ruby first before Rails existed, is that correct?
James: Yes. I was playing with Ruby back when Rails was under development.
Thom: So what kind of things did you do with Ruby? Desktop development and scripting?
James: I used it largely as a scripting environment. At a big job I worked back then, we used Perl everywhere to do a bunch of data manipulation. It was for a company that had a very large product-base. They would transform the products into reports, static websites, and such. We just used Perl for all of that. Then I got into using Ruby in those similar applications. Eventually, after Rails became popular, I began playing with that and figuring it out. I moved up the ladder that way. So you’re right, I came the other way.
Thom: That’s very interesting and I think that’s probably (as I said) not the norm. Many of us discovered Rails which brought us to Ruby.
James: It’s an interesting story. I listened to another podcast that is a panel discussion on a totally unrelated topic. I just always liked that format, where there are several people talking to each other and hashing out ideas instead of just individual interviews. I can’t remember if it was me or Chuck that originally tweeted, “I’d like to see a panel discussion of Ruby.” But both he and I had been thinking basically the same thing at the same time. So one of us tweeted it and then the other one was like, “I’ve been thinking about that, too.”
That was what put Chuck and me in touch. We became the first two. We started fleshing it out and then the original members of the podcast were all friends of ours; Aaron Patterson, Peter Cooper, and David Brady were just people we knew and we asked if they would do it. They did and that was how we originally put it together.
Then, over time, people came and went and we settled on the group that we currently have today.
Thom: So you and Chuck were following each other on Twitter, had you met maybe at a conference or something or how did that happen?
James: Yes, I believe we had met at that time. I think we did meet at a conference. I had gone down to a MountainWest Ruby Conference, the one in Salt Lake City, Utah. I went there maybe in 2009. I spoke there. I think my wife also gave a small presentation.
Thom: Is your wife a techie? Is she a programmer also?
James: Yeah, she worked for me for a couple of years doing Rails development, but now we have a small baby and she spends more time chasing her around.
Thom: I understand that. But I am envious!
James: She still helps with the non-coding side of the business, but the coding side is a bit much with a young one.
As I said, I think I met Chuck when I was at the MountainWest Ruby Conference. I had met all of the original Rogues by that time, with the exception of Peter. Then Josh and Avdi came on and I had not met either of them.
Thom: You mentioned some names that are now, I want to say ‘household names’ within the Ruby on Rails community, but I’m guessing at that time maybe they were not. They were just the guys that came to a few conferences and were giving talks?
James: It’s a good question. I’m not sure how much Aaron Patterson was doing with Rails at that time, probably some. But he was already known for things like Nokogiri. He had built many tools before that time. People knew him that way. Peter Cooper had his Ruby Weekly mailing list by then, but not the massive empire that he has today.
Thom: Yeah, you can kind of claim, “I knew him when…”
James: Right. That’s what I think led both of them actually to eventually move on as their time commitments are much, much bigger now.
I think it was Aaron, when he was off one week, who said, “Hey, we ought to have Josh on the show,” and we tried him. Somebody else mentioned Avdi or I knew of Avdi and we had them on a couple of times. It was a great fit and we all loved that. So, as the others moved on, we brought them on full-time and it’s just been a great group ever since.
Thom: I think Chuck put it well when he told the story about Katrina, that her guest appearance had been so well received and you guys got along so well with her, that it got to the point in the discussion that there simply was not enough room for another person, everybody raised their hand and said, “Well, I’ll give up my spot!”
James: Yes, that’s pretty much how it happened.
She has those rare qualities of being good with code—able to think about code and stuff—and then also being able to explain code. That is one of my favorite things about her. That she can take something and she just describes it in a way that’s very simple. I think that’s really unusual to have in programmers. I think we’re notoriously not great at communicating our ideas.
Thom: Boy, you’re absolutely right about that!
I know as a listener, I am very impressed with her. Katrina doesn’t seem to speak as often, but when she has something to say, it’s usually very insightful.
James: Yes, both her and Avdi are the quiet ones. They don’t jump in there and butt in a lot. I’m the loud one. I’m the one they can never get to shut up, right? They don’t talk as much but whenever they do pipe up and ask a question, it’s very insightful and usually leads to a great discussion.
You also don’t see how much people do behind the scenes, Katrina especially. She used to be a transcriptionist and so, as we’re sitting there talking, we tend to use a lot of horrible things like acronyms or strange words like “The Threequel Operator” or something that would drive a transcriptionist mad. Katrina is sitting there in the back channel typing all those out as we say them, typically.
She supports us a lot in that way and recently she’s been booking shows and stuff, too. She set up the show on Regular Expressions, with Nell Shamrell, which was a really great episode. So she helps out a lot even when she’s not asking questions. But I tend to enjoy the ones where I take a week off. Without me butting in all the time, I think the others get to talk more and I always enjoy those episodes.
Thom: So the Ruby Rogues has crossed 100 Episodes, which is a pretty big deal.
James: Yeah, we were surprised.
Thom: Does it feel like it’s been 100 or maybe, in some ways, it feels like it’s been more?
James: You know, I think we were all surprised when we hit the 100-episode milestone, that we’d been going so long. Just the other day we realized that our mailing list was one year old, and that’s shocking.
Thom: Oh, what a great confluence.
James: I think we’re all surprised by it. I’m sure that there’ll come a point when burn-out sets in or we feel like we’ve talked about all the things we want to talk about. But I can tell you from our current list that we have a lot of things we would like to talk about and we haven’t gotten to. I mean, like you said, we’re 100 episodes in and Regular Expressions is one of my favorite things in all of Ruby and we just did the episode on that.
Thom: That’s exciting.
James: I was excited about doing that one, too, although I think it has even more of the problem, as usual, of me talking too much because it’s my favorite subject.
Thom: You’ve been a pretty regular contributor to Rails, and since you mentioned you’ve been involved in Ruby even before Rails, how does that feel to have such a strong influence on something that has become quite an important and well-recognized framework?
James: Actually, I’ve only contributed to Rails a couple of times in minor ways. I have done a lot as far as the teaching Rails and stuff, but as far as the source code itself, I’ve only had a few small commits.
Josh, actually has done quite a bit more than I have as far as contributions.
Thom: Okay, I misunderstood that then, but you’ve written a lot of Gems.
James: I have written a lot of Gems, I don’t know how many of them actually end up being useful…
Thom: We all feel that way.
Thom: That’s something to be proud of, certainly.
James: Yes, I was glad to see that. The HighLine Gem that I wrote with Greg Brown’s help, it also is still pretty widely used, I believe. Those are probably the two I’ve written that have had the most impact.
Thom: You mentioned earlier, and I realize it was kind of in the vein of self-deprecating humor, but you mentioned that you’re the one that’s always talking and butting in. But honestly, what do you see as your role in this panel of an obviously very diverse group of people with different perspectives? Do you see yourself as providing some specific role or guidance there?
James: At one time Josh put up the various roles of TV Tropes—the TV Tropes website has a TV Trope called a “Five-Man Band” and for like a week afterward we were all trying to figure out which position is us.
But seriously, I think one of the things that I bring to the table in the Rogues is not so much technique and things like that, I think the others are better at that than me. Josh especially has a really strong Rails background and Avdi being so good with patterns and things like that. Katrina, the great communicator, like I said before. David is funnier than I am and Chuck is the glue that makes the whole thing possible.
But I have an almost encyclopedic knowledge of the various corners of Ruby and that comes mostly from running The Ruby Quiz for three years. Every week people would email all these programs to me and I had to read through them and understand them enough that I could talk about them in the write-up I did that week. People solving programming problems use every dirty and metaprogramming trick in the book. So, in my time overseeing that contest, I’ve learned so many dark corners of Ruby and the API. I don’t know what percentage of it is actually in my head, but it’s a very high percentage.
Thom: That’s wonderful.
James: Just because I’ve played with it a lot and had to figure that stuff out. When we did the regex discussion, at one point we got into the horrors of why the replacement strings of
gsub. Why do I have to start doubling my backslashes and I end up with four or eight or whatever? I’m like, “Oh, that’s because,” you know, and I start explaining why that is.
I think that’s maybe the thing I bring to the table. I have the knowledge of Ruby and how it works.
Thom: A final question. Is there anything that you’re working on presently that you would like to promote or to tell the world about?
James: That’s a good question. I’m one of those people that never hurts for ideas. I wake up every day with more ideas and I keep this file on my computer where I squirrel them all away for some day. I’m always working on 3-500 of them at any given time.
Thom: Is that 3 to 500 and not 300 to 500?
James: Yeah, it’s something like that. “Too many” is how my wife would describe it, I’m sure. I never hurt for ideas, but, some become other things or some I end up using on work projects or some I give up on for various reasons of time or realize it was a bad idea or whatever. I don’t know which ones actually end up being things that get there. I think we all have that problem. There’s several things I’m working on that I hope turn out to be as cool as I think they’ll be, but I don’t think I’m ready to share those yet.
I will say the one thing, of interest to Rogues listeners, that we’re working on. We’ve mentioned it a bunch in the past and there was kind of a long period of us not talking about it for various reasons, mostly just getting it all working, but we are in the process of working on the Ruby Rogues first book, which will be “Ruby Best Practice Patterns”, a Ruby port [basically] of SmallTalk Best Practice Patterns from Kent Beck.
Thom: Oh, that’s an excellent idea for a book.
Thom: Thank you, James, for your time and the insight you provided us.
James Edward Gray II can be found, in addition to the weekly broadcast of the Ruby Rogues,