« All Episodes

19: Ben Orenstein from Thoughtbot, Part One

Published 2/18/2015

I'm excited to be interviewing Ben Orenstein from Thoughtbot. Ben is a brilliant craftsman of a developer, and in this episode we discuss what it takes to be a craftsman. This interview is split into two parts, so be sure to check out the next episode for the second part!

Ben's personal site and writings can be found here

Ben on Twitter, @r00k: https://twitter.com/r00k and on GitHub, @r00k: https://github.com/r00k

Transcript (Generated by OpenAI Whisper)

Hello everyone and welcome to Developer Tea. My name is Jonathan Cottrell. I'm your host and today I'm speaking with Ben Orenstein. Ben is a Rails developer and an educator and quite a few other things. A podcast host, a conference speaker, the list goes on and on. He's just a really smart guy. He lives up in Boston and he works at Thoughtbot. Thoughtbot has been doing stuff, especially in the Rails community, for a long time. They are responsible for things like the Factory Girl gem, which I use literally every day. Just a brilliant person and a joy to speak with. We had the most technical difficulties that I've ever had on this podcast. And getting started up on the call and Ben was just such a kind and inviting person. And he cares so much about his craft and about the things that he does. So I believe that you're going to get a lot out of this interview. Now the interview is split up into two parts, like you're probably used to if you are a regular listener of this show. You will be able to hear the second part in the next episode of Developer Tea. But for now. I'm going to welcome Ben to the show. Thanks for listening. Hi Ben, welcome to the show. Hi, thanks very much for having me. It's great to be here. Virtually, that is. Yeah, I'm really excited to have you because you've done so many things with your career, especially most recently with Upcase, which we'll talk about in a little while. But also with Giant Robot Smashing and other giant robots. Which is a podcast that I've listened to since podcasts were first cool. And that's pretty regular still, right? It's a weekly thing. Yeah, it's weekly. We've done about 120 something of them now. So we've been fairly regular. I wouldn't have guessed it would have gone on this long, but I'm still having a great time making it and people seem to like it. So it continues. Yeah, no kidding. It's pretty incredible because... I think that that first wave... I was just talking to a friend of mine the other day and he was saying, why do you think podcasts have become more popular recently? And you're a podcaster, so this is relevant, right? And I said, you know, partially because of Serial or whatever. But I think also because it's kind of like when LiveJournal came out forever ago. And, you know, it was like the blog thing was sort of popular. But it was mostly among geeky people who understood it. And then like it went downhill and then MySpace came out. And then, you know, everybody had a publishing box when Facebook came out. And I feel like this is like the early days of Facebook for podcasting. Yeah, I think so. I've heard it referred to as like the podcast renaissance. Yeah, I don't know what you're saying. And I think that's honestly... That tends to be a positive. I think that progress is positive. Even the... The downslide to MySpace, as you say. Like I think it's... It's nice when more and more people can create things and put them out there. I'm a fan of that. Yeah. Even if I don't, you know, I'm not going to personally consume all of it. But I think it's good that a platform is somewhat easy to come by. I think that's positive. Yeah, I agree. And that's true for so many things. But so I want to shift gears here because this isn't really a podcast about podcasting. But I think it's relevant just because of the fact that you do giant robots over there. So in any case, most... As of late, really, I've been seeing your work kind of heading in this direction of being kind of the ringleader of education about Vim. For anybody who doesn't know about Vim, number one, I think you should. And I think Ben would agree. But Vim is a text editor that was created, I guess, what is it, 1991? So it's been around for a while. I mean, that would be Vim. But Vim built... Vim's done... Vim's done... VDI Improved, which was, I think, originally built back in the 70s. So the core ideas behind Vim are 30 or 40 years old. Yeah, that's older than me. I don't know about you, but... Yeah. I'm older than some of those numbers. Cool. All right. Well, in any case, yeah, well, I'm older than the first, than Improved, at least. But I think that a lot of people don't really... How do I put this? They don't... They don't understand the importance of their daily editor. Like, you know, because I think a lot of us are kind of trained to just, oh, just open a text editor, right? Like in my early web days, I was told, you know, the most bare bones text editor is all you really need to, I don't know, learn HTML or whatever. Mm-hmm. But I think that Vim is, for me at least, it's changing the way that I think about it. I think about programming. And I'd like to know what you see as kind of the importance of that daily editor relationship with the programmer. I think it's actually, I think it's incredibly important. I think if you want to be, if you want to be a top level craftsperson of any kind, you really need to care about your tools quite a bit. And programming is no exception to that. So I've actually spent a lot of time over the years customizing my environment. And that's not just Vim. That's also my shell. That's writing small tools that help me get stuff done. That's writing functions that I call all the time. And I think it's actually kind of my, part of my secret sauce of speed with Vim is the fact that I've actually customized it so heavily to my own usage. And I'm actually, right now, in Denver. At the Turing School of Software and Design. And I am impressing, trying to impress upon the students here how important it is to have a awesome text editor that you really like and that if customized highly for your own workflow, even when you're sort of new to things, I think it's okay to start in the very beginning with something simpler, but quickly move on to a very powerful and full featured text editor. To be a good craftsperson, you have to care about your tools and really know them kind of. And that's something that's really important. And I think that's something that's really important. And I think that's something that's really important. Upside down, right? Like inside out, just know your tools completely, but also have your tools very well customized to the specific work that you do. Yeah, absolutely. It's customized to your own workflow and the things that are unique about you. So one thing that I'm a big fan of is I alias a lot of my typos. So there are certain commands that I just can't get in my brain to type correctly. And so I have, like, I'll alias the typoed version of it. Just sort of say. You know what? Forget it. I'm just going to type this incorrectly from time to time. I don't want to interrupt my flow. Right. Which wouldn't be necessarily applicable to somebody else who has some kind of different muscle memory than you. Exactly. Yeah. I mean, I think your dot files should be like your configuration files for your editor and your other tools should be sort of personal expressions of what you want and care about and even your mistakes. Yeah. And you actually recently said, or semi-recently, you said something about how if you're first starting out with Vim, you need to start. You need to start with basically a blank config file, right? More or less blank. I linked to, so I have a blog post called your first Vim RC should be nearly empty. Right, right. And I linked to a minimal Vim RC because there's a couple of settings that you pretty much have to set for various reasons. But there's really only three or four that I consider essential. And the rest I think you should grow over time. Very interesting. Yeah. Yeah. It's interesting that you mentioned that because. I recently picked up Vim and our office, there's a few people at Whiteboard that have picked up Vim as well. And we were going through upcase series and a few other things. And some of the stuff that we found immediately valuable was the Rails bindings that you guys actually put out. So, and that was, those are things that we pretty much immediately put in to our Vim Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah.! But it's interesting because I think a lot of people are coming to this completely clueless about what the core functions of Vim actually are. And so they'll come in and drop a bunch of plugins in, and then they encounter Vim in another situation, like, I don't know, on a server or something that they haven't set up. And it's very difficult to use because they've gotten used to the not-core Vim. Yeah, so I've sort of argued against things like Janus for a little while. And Janus is basically a pre-configured Vim. It's a big Vim RC with a bunch of plugins sort of pre-selected for you. And I understand the counter-argument, like, why you would want something like that. It's like, oh, just give me something that's already set up, and I don't need to make decisions early on. But you have that downside that you mentioned there, which is you don't really know what's stock and what's added. And I believe that your learning process of learning the editor. You should start with the basic stuff, with almost nothing added. And then you slowly add plugins over time so that you can sort of master them and be aware of the changes that they're bringing in. And again, it's about that customization. It's about personalization, where if you start with someone else's giant pack of plugins and Vim RC customizations, you are sort of, by definition, not getting that customized environment. You're getting one recommended environment, but it's not the same as if you had grown it from scratch for yourself. Yeah, it's kind of like getting somebody else's .files, right? Right. Right. Which is literally the case here because it's a .vim RC, but it's other .files as well. I've tried pulling down, and some of this is valuable. So I don't think you throw the baby out with the bathwater necessarily, but pulling down the entire, I don't even know how to pronounce his name, but Matthias Binans, I think is how you say it. He's got a huge thing of .files that he shares on GitHub, and it includes stuff like OS 10 defaults. For instance, it makes the automatic emptying strategy for the trash can in OS 10, it makes it hyper secure. So it takes forever, and I find myself constantly undoing that with some crazy key binding before I empty my trash. And it's like, why did I do that? And it's because somebody said, hey, here's some good things that you should do, and then they weren't the things that I wrote. And it's like, why did I do that? And it's like, why did I do that? Yeah. And to be clear, I think taking ideas from other people's .files is great. I think you should absolutely steal liberally from the things that other people are doing, but you should do them piece by piece. Right. Yeah. And you should pick and choose the things that you actually want that make sense to you. Sure. And my .files were originally cribbed from Ryan Bates. I stole some of his stuff, but I went through and deleted a bunch of things and tried to make it more my own. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. They don't even look at all like when I first forked them from him years and years and years ago. Right. Yeah. That's interesting. But I'm constantly stealing from other ThoughtBotters and other random people that I find, so it's still happening. Your .files should be changing all the time. Yeah. That's interesting. I think a lot of people don't even think about their .files most of the time. And by the way, a getting started thing is if you're at step zero, which is the configuration for your tools, is not in a repo that you can clone and have on any computer, you're machine, it should be. That's the first thing you should get going. Because that was the biggest change for me was when I had my .files on GitHub and I knew that my changes would be sort of, I could sync them across all my machines, I suddenly got more aggressive about customizing things because I knew that this work wouldn't really have to be repeated and this would be my environment forever on every machine that I went to. Thanks so much again to Ben for being on the show. Of course, you can get the second part of this interview in the next episode of Developer Tea. Thank you for listening to Developer Tea today. I know that you have a lot of things that you can do with your day, but you're choosing to spend some of your minutes with me and I sincerely appreciate it. If you are enjoying the show, let me know. You can reach out to me on Twitter at developertea or you can email me at developertea at gmail dot com. Of course, you can give some suggestions for the show while you're there. Let me know what you think if you have any ideas for future episodes, any questions that you'd like for me to answer. If you haven't left a review yet, jump over to iTunes and just leave a review and a rating. The reason why I ask you to do this is because it's the best way to help other developers just like you find this show. If you think that this is valuable, it costs you nothing to help them find the show as well. It just makes the world a better place when we share with each other. Hopefully, you find this show valuable enough to share. Make sure you go and check out what Ben has been up to online. You can follow him on Twitter at at Rook. That's R-0-0-K on Twitter. Again, at Rook. Then, of course, you need to check out Upcase. I actually subscribe to Upcase. They aren't even a sponsor of this show. They're just a fantastic resource for developers, especially Rails developers and iOS developers and people who are just learning to write good, clean code. Thank you for listening to Developer Tea. As always, enjoy your tea.