David Brady – Learning and Laughing
Every week a group of Ruby Enthusiasts get together in a Virtual Roundtable and explore/discuss/argue some a
spect 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.
Beginning with “The Basics”
Thom: Like any interview, in a podcast or in writing, the first question of course is; “David, please tell us about yourself.””
David: No, next question.
Thom: Okay. That was a short interview!!
David: No, I’m kidding…
I am kind of an old-school programmer, kind of self-taught. I grew up in rural Utah. When I was in middle school they had some old Apple II computers — well, at the time they were rather new — and they say when you first fall in love with computers, your emotional growth is stunted at that point. So I was 11 and that’s my emotional age to this day because I just absolutely fell in love with computers. I’ve been tinkering and hacking the entire time since.
I took kind of a weird route through programming. I started in Apple Basic and then I moved to IBM and DOS and so I went into BasicA and GW-Basic and I moved up through the ‘Basics’, moved to Quick Basic – well QBasic – Visual Basic, then I sort of went down the rabbit hole. I went into C++ and then into C and then into Assembler.
At that point I was writing graphics drivers and writing video games and just really, really enjoying it and then somebody said, “You know, does it really have to hurt this much to be efficient? And do you really need to be that efficient?” So I said, “I don’t know, tell me more about what you mean.” He said, “Well, there’s this language called Perl and it’s this very high-level language, much higher than even Basic.” I absolutely fell in love with how much you could get done — yeah, you gave up a ton of efficiency, but for 90% of the things you do, you don’t need super efficiency.
Also, Perl is write only [as a language], it’s very terse and everything is implicit, they value implicitness, don’t waste time telling me things that I already know.
A few years later Python came along and I’m like, “Oh my gosh, it’s like Perl, only clear.”
Python has one right way to do it and every other way is wrong and that started to stick in my craw a little bit. Then I came across Ruby. Ruby’s attitude, of course, is there’s probably one right way to do this, but this general class of problem has nine different types of solutions. Unlike Perl where you should try to use all of them for every situation, Ruby says you should use the best one for each given situation. I think a lot of Python people would say that, too, so I don’t want to kick Python’s tires too much, it’s not a bad language.
But I finally found my way into Ruby and I’ve just absolutely loved it. It’s a language that lets me do what I want the way I want and communicate to others in the way that I like.
So that’s more of a programming language history of me. Does that answer the question?
Thom: That’s perfect, because my next question was how did you discover Ruby? You just answered it for me.
Thom: This interview is remote control.
Neighbors – Friends – Fellow Rogues
Thom: So how did you discover the Ruby Rogues? Did I get an impression that you and Charles Max Wood were friends and had worked together?
David: Honestly, “Location, Location, Location”, just like in real estate. I lived a mile and a half away from Chuck and I was actually at URUG, the Utah Ruby Users Group, back when there was only one Utah Ruby group [now there’s like five]. I was at URUG the first time Chuck came out to a Ruby meet. We made friends, we found out that we were living — did I say a mile away? More like 500 yards! I mean, literally, he was down my street, hang a left and go down a half a block.
Thom: So like if you have a loud party, he’ll know it.
David: Yes, exactly. Well, he moved, but it’s a small town, so now he’s two miles away and so we still know where to find each other.
Yeah, he got talking with James Edward Gray about starting up a panel-based podcast and just kind of out of the blue he’s like, “I think it would be funny to have you on the show,” and I said, “Okay, I will do my best to come and be funny.” I thought I had an opportunity as well to help people, not just be funny, but also to see things in a different way and that’s what I like doing, is getting into a conversation with people and then finding some angle that they haven’t viewed something from, and saying, “Well, have you looked at it this way?” Then there’s that moment when everybody around suddenly goes, “Oh, Wow!” and they make these mental connections that weren’t there before. That’s my favorite thing in the world to do ever.
I’d like to think that’s why Chuck invited me to be on the show, but the reality is, it’s probably just because I was in the room when he was thinking about it.
Thom: I think you don’t give yourself enough credit, but that is funny, the self-deprecating humor seems to be common in the tech world.
Thom: Is there something that you’re working on or some project, is there a soapbox you want to get on?
David: No, and I regret that. What I will say is that I have something in the works. I’m not ready to announce yet. I am getting into more of a training and mentoring aspect and so if anybody would like to do that, that’s the direction I’m going with what I’ve got in the works. But that’s not the main business model, so it’s not even a “You can pay me to train you” thing, it’s just a “Hey, if you want to pair just get a hold of me.”
Thom: Terrific. You know you’re going to get a lot of response from that. I may be at the top of that list.
David: Absolutely! I think we could, maybe, break something together.
David: One of the very first programming books I ever opened up said, “Don’t be afraid of the computer, you can’t hurt the computer by typing on it, unless you type with a hammer.” Yeah, I’ve burned up a disk drive by writing a program that was very disrespectful of the hardware timing. I don’t know how many things I’ve burned up or fried. They lied to me. They absolutely lied to me!
What is interesting; I actually never programmed in Fortran. I came in right behind it, but everybody that I looked up to and everybody that I mentored under had come out of Fortran. So for, oh gosh, 15 years, I was (in 1999) writing C++ code professionally as my career and I was rigidly formatting my code to 72 columns. I did not know why, and I got with an old-timer who saw that I was still doing that and he just died laughing. He’s said, “Do you know why you’re doing that?” I said, “No.” He said, “Because in Fortran you need to leave 8 characters for the address line on the punch card and you’ve only got 80 columns on the punch card, that’s why you’re doing that. You’ve got a 21-inch monitor,” (those were the biggest ones at the time) “stop formatting your code at 72 characters.” It’s like the old story of cutting off the pot roast because Grandma did it, but Grandma did it because it wouldn’t fit in her oven.
Thom: Yes, it wouldn’t fit in the pan she had, right.
Thom: So you probably also then – the habit I can’t break – put the constant first in a comparison?
David: Actually, no, that came after my time. I came from Basic and then into C++, you can do
if X = 42
Right? And oops, you just assigned X the value 42.
Thom: Exactly. Instead of comparing, you just assigned it.
David: But I had gone through the phase where I was writing loops like
while *p++ = *d++ which is a de-reference copy and re-reference and then increment both pointers inside the
David: And if you look at the source code for
strcpy in the old C-reference, that kind of monkey business was not only allowed but almost praised.
So when Microsoft introduced the coding style of swapping the constant and the variable, it was just wrong. Constant == variable, it just never caught on and I still don’t do it to this day. I tried, I don’t like to throw away an idea without tasting it first and I spent a year where I rigidly did — I think they call LHC style, Left Hand Constant style — and no. It just read wrong to me.
David: Ruby does the same thing because you can do
if fp = file.open(...)
Then you’ve got an
fp variable in the next line.
Thom: When I work in VBScript, it just (shudder)…
David: Just between you and me and — You know, I was going to say this is not for print, but you can go ahead and print this. I fed my family for a year writing VBA and VB script and so I don’t tell people that I do it, because if you want to hire me for that skill, I don’t want to work for you.
Thom: I agree. In job interviews, when asked if I do VB or VB scripting, I always say, “Yes, but I wash my hands afterwards.”
David: Yes. Yes, exactly. So anyway, I just wanted to mention that as a yes, it’s a mark of shame, but I stand with you in solidarity, brother.
Revealing a new Perspective
Thom: What do you see your role in the Ruby Rogues?
David: Obviously I have a pretty good sense of humor and I like to inject that where appropriate and then a little bit more, as much as I can get away with without annoying people too much.
Like I mentioned earlier, trying to make people think and see things from different ways is a very big goal. But the open secret that I have when I’m on the show is I love it when I’m on a show with two people that have wildly differing approaches to something. That one is like, “Don’t ever test,” and the other one is, “Over test everything.” When I can look at two people and say, “You know, you guys are in disagreement on 98% here, let me throw one-third thought in here that you guys haven’t mentioned,” and then both of them go, “Oh, my gosh, you’re right.” I absolutely love that.
I love the MINASWAN — that stands for Matz Is Nice And So We Are Nice. I really like honoring that in the community and when we have somebody on the show that has a really strong opinion about something, I love being able to temper that in such a way that we can have people with strong opinions that suddenly find themselves working together with their strong opinions, rather than opposing each other.
I think that’s kind of why my favorite episodes I’ve ever been on are the ones that have been on like diversity and drama in the Ruby community and interpersonal relationships. Those are my favorite episodes to be on because they’re such juicy topics for people to be wound up about and yet care deeply. When you can get two people and tap into their caring deeply, you can suddenly make them going from disagreeing violently to agreeing; maybe still violently.
But that’s really what my favorite thing to do on the show is. I just use the humor to distract from that.
Thom: Thanks David
David: My pleasure.
You can find David Brady in the usual places:
Understanding the CSS Cascade
Local Development Environments for Designers and Developers
Jump Start Git
Jump Start Rails
Jump Start Sinatra
Jump Start Git
Jump Start Rails
Jump Start Sinatra
- 1 Ruby Interview Questions: Problem Walkthroughs
- 3 6 Practical Hacks for Taking Creative Photos with Your Smartphone
- 4 2015 in Review, New Languages, Rising Frameworks and More
- 5 Bringing Componentization to the Web: An Overview of Web Components