James Edward Grey III

Interviewee: James Edward Grey III
Community: General
★ Transcript Available Jump to transcript
Duration: 22 min · Published: Apr 08, 2013

Transcript

Hi, it’s Mike again with UGtastic. I’m sitting down with James Edward Gray, who is known for Shades of Grey, the Ruby Rogues, and also if you’ve used his faster CSV library in 1.8, and now it’s part of the standard lib in Ruby 1.9. Well, just Ruby 1.9. But thanks for taking a moment to sit down, James. I appreciate it. Can you tell me a little bit about how you got involved with Ruby? Yeah, it was a long time ago. I think I entered the community in summer of 2004 or something like that, and I had just kind of gotten off of a job and went into that cycle of learning new things, and I grabbed a copy of the programming Ruby and decided I’d teach myself a new language and kind of got stuck and never left. What were you doing before Ruby? I’m Java certified. I did that for several years. I spent a lot of time in the Perl community working there. The project I came off of just before getting into the Ruby community was a big Perl site using CGI and all kinds of crazy stuff. So you’ve kind of really embraced the Ruby community, and it seems to have been a lot of fun for you. What was it about? Ruby early on. Because 2004 was, I mean, it hadn’t just come out, but that was pre-rails. Yeah, it was really early. It was easy to get hooked in the community back then. It was a very small, tight-knit group of people. We had basically one mailing list where most of our communication happened, and you would literally be posting questions and getting answers from people like Dave Thomas and stuff like that. So I was just on the tail end of that era and got kind of sucked in that way. Okay. And then you created the faster CSV library. What drove that? It was an accident, actually. They were talking on the Ruby core mailing list about how the CSV library was so slow, and people were trying to analyze why it was slow. Really interesting. Really interesting. But it wasn’t any particular fault of the library so much, just that it did a lot of work in a really tight loop, calling a bunch of methods and stuff, which in Ruby is pretty slow. And people were talking about ways to speed it up. And just a few weeks before that, I had read Mastering Regular Expression or something like that. Right. And it had, in the book, one of the major examples was a regex. And it was a regex, which is a way to make a really fast parsed CSV. Okay. And so I said, well, you can do it with one regular expression. And everybody’s like, no, you can’t. And so I went and pulled it out of the book and put it in the mailing list discussion. And a bunch of people threw really nasty examples at it that it didn’t handle well. So I kept tweaking it and tweaking it to seeing if I could get it to do all of it. And I wrote this kind of tiny parser using primarily that one expression. And then a few other things to handle some gnarly edge cases. And that actually ended up being the faster CSV core for a long time. Eventually, somebody came along and rewrote the parser not to use a regular expression. But that was the start of it. Yeah. And then, I mean, what was the process that went from being an external Ruby gem to being part of the standard lib? What did you have? Did you have to pay a fee? Did you have to sign a license agreement? Yeah, yeah. Sign a right on my, like, no, actually, there was discussion once faster CSV had been around for a while. And there was discussion multiple times about, you know, should we replace the library and the standard core? And I think most people were positive to the idea in that, you know, we wanted a faster library and stuff. And, you know, we didn’t want to break backwards compatibility. And I had a compatibility mode where it would behave like CSV. But it wasn’t perfect. There were some cases where it couldn’t do the right thing. And so that was discussed for a long time. And nobody ever really came to a decision on that. And which stalled it getting in. But then Greg Brown, a friend of mine, kind of got tired of it. Not being in there and wrote a pretty impassioned plea to, you know, this is ridiculous. We have a much better choice. Can we just put it in? And they were decided at that point, it was discussed one more time. And it was decided, all right, compatibility be damned. We’ll just switch over. Yeah, well, I remember upgrading from standard CSV to faster CSV, and then migrating to one nine and had no problems. I mean, but then again, maybe our case wasn’t that exotic. One nine was actually kind of a hurdle because when I brought it in, one nine had the M17n engine, right? So it had to be reworked extensively because of encodings, which encoding, you know, your data is in matters how you find things like a quote and a comma, right? And so actually, CSV, the standard one nine library was probably the first practical application of M17n. And I basically had to figure out how all of that worked so that I could rewrite the core of CSV to be aware of encoding. Oh, so that’s, that’s how your encoding article came to be? That’s exactly right. Yeah, I had to figure all that out to port the library. Yeah, because that actually that article is very helpful for me on more than one occasion, just trying to figure out why data was being lost between Rails. Talking to Postgres and back in an earlier version of the gem. But we actually drove some bug fixes in Ruby. At that time, when I was fixing CSV, I would, I would figure out a lot of encoding stuff. And I would find some kind of bizarre edge cases and then post them to the list. And that actually ended up fixing certain bugs in Ruby. Okay, so because you were you were actually driving a use case for a lot of these encoding issues, like, putting in weird data, putting in foreign languages and different variety of languages. So that that makes sense. Yeah, you were kind of up burn in testing the, the encoding engine. Right. So the hardest thing when I was doing that is there was zero documentation, you know, the encoding was just a chunk of code that had been dumped into, into Ruby. And I had to basically sit there and reverse engineer it and talk to certain people about what it did. And, and that drove me crazy. So I wrote those articles that you mentioned on my blog. Yeah. And so you’re jumping over to some of the more social aspects, not just the code, but the Ruby rogues, you’re on there, you’re your regular contributor to the Ruby rogues podcast. How did you get involved with that? I’d had an idea from some other podcasts I listened to that had panel discussions. And I thought, man, it’d be really cool to do that in Ruby someday. And I guess Chuck had had pretty much the same idea. And I can’t remember who mentioned it first. But one of us mentioned it on Twitter, wouldn’t it be cool to have a panel of, you know, Ruby discussions and the other, whichever one didn’t mention it, the other one was like, I’ve been thinking the same thing. And so we, we kind of started trading some emails over it and put together the, the original panel and just started doing it. And it was just something we did, you know, for fun in our spare time. And, but then it got popular pretty quick, really. And so we got lots of feedback, you know, your audio sucks and, you know, things like that. Yeah. I hope eventually to get that kind of feedback. Because I’ll be like, yeah, they all suck. Yeah, when you get a bunch of listeners, they’re, they’re, they definitely bug you about it quick. So we started, we started fixing that. And, and, you know, we had some people leave and some people come in and then we just kind of got lucky and in getting a team that really gelled eventually, you know, and played well off of each other. And I think that’s mostly what led to its success. Yeah, I, I listened to quite a few and Ruby five and Ruby rogues are two that I can, I can tolerate listening to in the background. Because sometimes it’s almost like listening a little bit to like, I used to listen to talk radio and then. The banter, it’s, it’s not too heavy, but, you know, you can kind of tune it out and just, it’s like a conversation in the background. Right. But it’s, it’s a fun. And that kind of is going to provide my segue into the next topic is, I joked with Avdi when I interviewed him about what kind of was the impetus for me to reach out to him was listening to the episode. And it was just this kind of banter you guys were having in the beginning. Of the show about standup chairs, standup desks. And I was like, I didn’t, I didn’t know at the time that you, you, you know, you were in a wheelchair and somebody said something about a standup desk and, and you said something like, oh, I don’t use one. And I don’t know who it said, but they’re like, well, why James? And, you know, and then you guys all laughed and, um, uh, you know, and I said to Avdi that that’s, you know, that’s a very, uh, positive banter because you can’t just have that one unless you guys were all friends and, and, and knew each other well. Um, but it is, uh, germane to, um, the technical community and being out and speaking and going to user groups and conferences and, and things like that. Uh, is, has that been something that, uh, um, what, what has it been like? I, I, I hate that question, but what has it been like, uh, going to conferences and in a wheelchair? Um, it’s not, you know, it’s, it’s not too bad. Um, there was some time early when I was first in the Ruby community, uh, you know, it was a very small group. So I was probably the first one in a wheelchair in the community. And, um, there just at that time, uh, there wasn’t awareness and, um, there, so they would just book conferences in certain locations without thinking about things like, accessibility. Um, and there were a couple of early instances, um, where some of the conferences were not in good accessible locations. Um, and that wasn’t anybody’s fault. Like I said, it was just a lack of awareness. And when it was brought up, uh, you know, everybody felt terrible and, and, um, all of that. But, uh, being in the community pretty early on that, that made everybody kind of start putting it as a, a bullet point on things. You need to look for in a conference location, you know? And, uh, so that, that problem resolved itself really quickly, actually. And, um, uh, really the, the harder part for me is just, uh, it’s, it’s not easy to travel with a big electric wheelchair, uh, especially if you’re going to take a plane. Uh, it’s very inconvenient. Um, so when I fly, I switch to a manual wheelchair, uh, which is much easier to get around with when you’re flying. But at the same time, it reduces my mobility a lot. Um, so because of that, I just don’t tend to go to a lot of faraway conferences unless I make it a very special thing and, and do. So I, I tend to stick to the conferences around me. And I live basically right in the middle of the U.S. So, uh, I usually do the, the more central conferences. And so I don’t get out to some of the big ones on the coast very often, though. Uh, Josh Susser keeps threatening to drag me to Goguruko. Uh, and I would like to make it there someday. Um, but every now and then I’ll, I’ll make a special exception. I, um, went to Japan, uh, for Ruby Taigi one time. Uh, but when going there, then I was traveling internationally. So you had things like, uh, you know, how is the accessibility in Japan to consider? Uh, so I talked to Matt beforehand and we had a discussion about it. And he, he told me it was really pretty good in Japan’s modern cities. Uh, so to stay in the big, nice cities, but, you know, to avoid the, uh, little towns, which is pretty similar to here in the U.S. actually. Um, so I stayed in big places like Kyoto and Tokyo, uh, and, and did that. Uh, and then just recently I, uh, this last year I attended Aloha Ruby Conf. So I flew down to Hawaii and, uh, did that. And it was a great time. Yeah. I mean, uh, so it is something that you communicate to organizers. Hey, if you’re going to have me come speak, just heads up. Well, nowadays I don’t really have to do that anymore. You know, it’s, it seems to just, it’s something we think about now. And I, I’ve seen other people in wheelchairs at conferences now. So, you know, we’re a big, sprawling, worldly community that needs to be aware of everybody’s needs. So. And luckily, the good thing is, uh, you know, once you reach a certain point, we’re a huge community. You know, Ruby Conf limits the attendance and, and still gets 800 to 1,000, you know. So, um, when you have to put that many people in a place, you typically need a, a very modern hotel or convention center. And those kinds of places are always accessible. Yeah. They’ve already got that handled. Right. That’s, yeah, because it is. It’s interesting that, um, I, as I’m doing these interviews, I’m learning more about, um, people’s experiences in a community that aren’t necessarily, uh, young white males. Right. You know, and, and, but even the young white male like yourself, uh, you know, there’s, there’s all different varieties of, uh, of, of ability and, and, and accessibility. Um, so it’s kind of been interesting for me. I actually didn’t come from the dot net. I mean, I came from a dot net. dotnet community uh for 10 years and then started into ruby but in the in the last few years it seems like it has grown there’s there’s been some serious pains um with with isms in in the community but it seems like we’re coming out on the other side of that with a much more enlightened uh community or or the birth pangs of an enlightened community uh and it’s kind of interesting that it’s not been something that’s been enforced from the outside or a government mandate or some kind of regulation it’s been largely grassroots the people in the community saying hey this is not acceptable or hey this has to be better um yeah i think that’s really improving i mean like i said i think now anybody who plans a ruby conference is you know at least factors it into their thinking you know uh it should be accessible you know i have people tell me things like we’d love to get you to come out to our conference sometimes oh and i’ve checked there’s a ramp to get on stage you know things like that you know so i think it’s it’s in people’s minds now and they factor it into their thinking and and just attending the conferences i’m noticing how much more diverse they’re getting and and uh that yeah that makes me really proud of us as a community yeah so uh look you know a lot of people in the ruby community seem to be also it has hit it at a certain stage where a lot of the it seems like a lot of the earlier people who adopted it are now starting to look at it as a community and they’re like oh yeah i’m going to do this i’m going to do this at other technologies is there anything for for james are you looking at closure or or or anything like that i play with lots of uh other things you know uh erlang i’ve played with quite a bit i haven’t got around to closure or scala yet but they’re on my list um you know uh to get to eventually uh actually in in in recent years i’ve been more trying to um focus on complementary things like um you know a lot of people will go learn closure and and you know use that a bunch uh but i’ve been trying to do things like um i actually sat down at one point and finally sat down and learned bash you know the shell i just said you know all those years i i could use it a little bit never really sat down and read through a book on it and and learned how to write loops in it or things like that and uh boy that that was phenomenal for my productivity like i can’t tell you how valuable it was actually i mean i understand now when a process works what’s going on you know and what are the rules and it’s funny how much that helps and uh so i i’ve been learning more complementary things i’m a big regular expression nut and i enjoy digging down into the guts of aniruma and building really complicated regular expressions to understand how the engine works and uh things so i i’ve been focusing more on the engine and i’ve been focusing more on the engine and i’ve been focusing more on the engine complementary stuff and less on uh totally you know i’m going to switch to this other language kind of stuff so you’re going to come up with a uh a bash quiz book or no i don’t think my bash is that good you need to talk to somebody like wayne seedwin for that yeah he’s he’s really great at that kind of stuff yeah and i so just to kind of bring us to the tail end as you’ve written a few books and um but the one that was kind of the most interesting for me was the ruby quiz i’ve uh i’ve really paged through it i’ve not actually read it uh formally i’ve i’ve sat down and looked through it but it was interesting that it was more of like um here’s some kind of neat things that maybe you wouldn’t expect and what what was the impetus for creating that book uh so when i came to the ruby community i came from the pearl community and about the only thing i missed from pearl was uh their pearl had pearls quiz of the week and i was like oh my god i’m gonna be like oh my god i’m gonna be like oh my god i’m gonna be like back then run by mark jason dominus and uh it was a little different from the ruby quiz it had like a uh beginner’s level and then expert level uh each week and uh stuff but i really missed uh doing that quiz and seeing all the solutions and uh stuff like that so uh i created the ruby quiz uh to fill that void because i missed it and um i ran it for quite a while i can’t remember how long and um but i really missed it and uh stuff like that so uh i ran it for quite a while i can’t remember how long really getting that pragmatic bookshelf going and that was when they started producing a lot of ruby books and he came to me and said would you like to take some of the best of the ruby quizzes and turn them into a book yeah okay so that was that was how it happened he and he admitted at the time he’s all you know it probably won’t be a great seller uh you know because it’s kind of a niche thing and and stuff but he said that you know it’s it’s a neat topic and we’ll be saying it’s a neat topic and we’ll be saying it’s a neat topic and we’ll be saying it’s a neat topic something fun to have in the lineup so yeah it’s it was always on the shelves at any of the consultancies i was at um but it was it’s 1.8 is there an update coming for 1.9 uh no they recently took that book out of print so i think it’s i think it’s all done uh uh i did the ruby quiz for three years and then kind of set it aside it was a huge time commitment because uh you know you know it took a lot of time and a lot of work to get it done so i think it’s going to be a lot of work to get it done so i think it’s going to be a lot of work to get it done so i think it’s going to be a lot of work to get it done so i think it’s going to be a lot of work to get it done so i think it’s going to be a lot of work to get it done so i think it’s going to be a lot of work to get it done i had to dig through the code enough that i could figure it out and talk about it you know yeah so that took me some time and then and then i wrote up the summary each week so uh all in all it took me about eight hours a week i would say to uh just run it and sometimes more you know it was a complicated problem or something so eventually i was like uh this is a lot of fun but i’m gonna have to set this aside if i’m gonna be able to do other things um and there have been some people who’ve ran brief stints in the interim but uh nothing like the the original run okay well thank you uh very much for taking the time to sit down and and chat with me um so thank you very much you have a good day absolutely thanks