SAM: Hello and welcome to Episode 2 of ‘The Meta Four’. I’m Sam Livingston-Gray, and I am — CORALINE: No, no, no. Sam, we’ve talked about this. The name of the show is Greater Than Code. Everyone was very quick to correct me last week and now, I, Coraline Ada Ehmke, have to play the role of corrector to you. Is that how it’s going to be today? SAM: I guess, that is how it’s going to be, and I guess, it’s just as well that that’s not the name because there are greater than four of us here. CORALINE: That’s true. I’m really excited about we have a brand new panelist today: Astrid Countee. ASTRID: Hi. I’m super excited to be here, and we also have David Brady. DAVID: Good morning and I’m excited to second to what Jessica said last week, which is that Jay Bobo from Columbus is better at me than everything. [Laughter] DAVID: For example, introducing himself on the show. JAY: Good afternoon. I’m here in lovely Central Ohio, eating the world’s best chicken wrap right now, and I’m heading this off to Jessica Kerr. JESSICA: Good morning. I am happy to be on Greater Than Code again and I am even happier because we have one of my favorite programmers in the whole world as a guest today. You might know him by his silky smooth voice, or possibly by his amazing trademark hair. But if you don’t already know him, you should check RubyTapas where Chef Avdi Grimm serves up short videos twice a week that will teach you something new and interesting about programming. Avdi, what’s interesting today? AVDI: That’s a high bar. You all are interesting. Let’s just talk about you today. CORALINE: Awww, group hug. AVDI: Enough about you. Let’s talk about us. JESSICA: [Laughs] CORALINE: So, Avdi, do you have any questions for us? AVDI: Oh, I forgot my prep sheet. Man, we’re going to have to reschedule this whole show. CORALINE: Crazy idea — let’s [inaudible] where we focus on the guest. SAM: What? Now, that would be no fun at all. AVDI: I’ll just describe the view out my window. How about that? JESSICA: Yeah, Avdi, where do you live today? AVDI: Same place I’ve been living for the past… I don’t know, one year and a half now — the beautiful foothills of the Smoky Mountains in eastern Tennessee. ASTRID: Is that a dream come true? AVDI: Yes, it is. Many years in planning and execution. CORALINE: So, Avdi, in the intro, we mentioned RubyTapas. Do you want to describe exactly what RubyTapas is for those who are not in-the-know? AVDI: RubyTapas is my screencast series. As the name suggests, it’s primarily focused on Ruby. But it’s really more about object-oriented design, thinking about code, refactoring and testing, and all kinds of stuff around coding more effectively. What maybe sets it apart a little bit is that it is composed of very frequent, very short episodes so I shoot for about five minutes per episode. Put up two of them a week and I’ve been doing that for… I don’t know, like four years now. JESSICA: Is that part of how you achieved your dream of living in the Smoky Mountains? AVDI: Yeah, it certainly helped me achieve my level of location independence, among other things. SAM: As I understand it, Avdi, it’s not just you on RubyTapas. You have a whole production crew now? AVDI: I’m the only full timer. But I do have some other people that work with me. I’ve been gradually delegating more and more of it. As a matter of fact, for the past several of it, not more than several, for a while now, those who watch the show may be surprised to learn that they actually haven’t been watching me typing for a lot of the episodes. That has been my station chef, Federico Iachetti, who just recently debut with his first full episode. He did an episode on Pessimize. That was, I think, 447. That just came out. We got him and I’ve got an editor that I work with. Mandy here helps me with support and a whole lot of other stuff. I’ve even got my dad working on some stuff. He’s doing like copy editing and stuff like that. So it’s a team effort. CORALINE: It’s pretty amazing that you have someone to do the typing for you because I got approached to do a series of videos for a company that specializes in that sort of thing. The thing that terrified me the most was showing the world just how bad I am at typing. ASTRID: I actually love that when people do that because it makes me feel better, about how bad I am at typing. JESSICA: Oh, man. I spent all this time when I was making a PluralSight course, chopping out all my little backspaces. ASTRID: Oh my gosh. Don’t do that. JESSICA: And then speeding it up so it looked really fast and smooth. AVDI: I was chatting with Gary Bernhard about this the other day and we were talking about the fact that part of what we do is accidentally convince the world that we’re super human because his process involves practicing over and over and over and over again until he can execute perfectly. My process, even before I had somebody typing for me, involves very careful editing, very careful reshooting until a take is perfect. Then one of the distinctive things about the way I do the show is I edit the video to match the voiceover and not vice versa. A lot of times you’re seeing code going a whole lot faster than I am capable of physically typing because the thing is if somebody is talking about code, people are capable of watching code being written at a much faster pace than they’re capable of writing it. If I’m explaining what I’m doing and showing you some code that’s in fast motion, you can still pick up what’s going on. So I try not to waste people’s time but as a result of that, people watch the show and they think, “Good Lord! This person is like the flash of keyboard use.” Now, I was talking to Gary about that. We were talking about maybe we should each make a video that’s just like highlighting exactly how we actually typed which — spoiler alert — I actually only learned to touch type in the last few years. I spent most of my programming career, more or less, hunting and pecking. DAVID: I love that you have a ghost writer but not the usual kind. You have the actual like séance/hoaxing kind. Your ghost is actually moving the keys. JESSICA: It’s like lip-syncing, except for fingers. [Laughter] SAM: Oh, my. AVDI: I’m going to get dinged on that the next time I’m in an awards show. [Laughter] JESSICA: Avdi, you have a really good point. I mean, we look like we are typing super fast but actually we spent a ridiculous amount of hours typing that and re-typing them and editing it to make this curated content exactly in order to save people time. It reminds me of this beautiful tweetstorm by Sarah Mae from yesterday about how all the code that we see in books, that we see in these videos, it’s like a staged house in a new subdivision where you go in and you look at the sample house, and they have it all pretty. There’s no clutter, there’s just beautiful sticks. Well, they’re supposed to be beautiful. I never liked those weird things that they put in there. But they’re gorgeous house with only pretty things and we think, “Oh, we could live here. But actually we could live there,” and our real code does have clutter in it. It has that messy complications of what we’re actually doing and can we get that place in between the stage house that’s in our videos and the hoarded house of, “Oh, my gosh. I must use every new tool. Everything must be crammed in here, and I have to have all the features for future parity for that old system I’m replacing even though I know I never use them.” Do you have any advice for people watching RubyTapas for not having those expectations of themselves that their code will be as beautiful and as smoothly typed as yours? AVDI: Yeah, don’t have those expectations. [Laughter] AVDI: It’s all a lie. Fundamentally, I make videos that I would want to watch. After putting a lot of thought into it, the kind of thing that I would want to watch, I kind of decided that if I was paying for something, I would want to see ideas clearly illustrated without a lot of clutter around them, without a lot of backtracking or mistakes or anything to distract away from the idea at hand. But that’s the direct antithesis of the real world. That’s nothing like what we really see. Occasionally, I do episodes where the actual focus is, “Here’s a piece of real world code. Here’s something that I actually wrote,” or that somebody else actually wrote, and let’s talk about refactoring it or something like that. I think that’s where you start to see the real world sneak in but it’s that tradeoff between illustrating an idea clearly and showing our working lives as they actually are. Most of the time, I stay at one end of that spectrum. But I can definitely see where people would get the wrong impression from that. CORALINE: Yeah, that whole idea of finding the right example that’s not so small, that it looks completely contrived. But it’s not so big that you can’t possibly fit it is a really tricky one. It’s a hard needle to thread. AVDI: Yeah, I’ve kind of come to the conclusion that it’s mostly impossible. I think every time I’ve tried to nail that, there have been people that say, “Yeah, but this is a really contrived example.” You know, from time to time, I think about creating examples for exercises and things like that. “Here’s real world style code,” and now we’re going to do an exercise in this real world style of code. After all these years of programming, I don’t think I’m capable of intentionally writing real world code, if that makes any sense. Like as an example, I think it is so difficult that you can’t even get yourself into the right mindset for it because it’s not a mindset. It’s a distraction, and it’s deadlines and it’s years of those things all mashed together into one screen full of code. Occasionally, I’ve thought it would be really interesting to assemble a sort of alternative intro to programming course that instead of starting with the absolute basics, started with what people generally get thrown into in the real world which is some horrendous hairball of accumulated code and start talking about like, “Okay, this is just the world that we live in. This is a thing that exists. Let’s examine how we can poke at it and start making an exhibit of new behavior and learn how code works from there.” I think that’s probably a completely impractical idea but I do think about it sometimes because it’s crazy how we have all these contrived examples. Then we get our first coding job and just were bowled over by something that’s completely foreign to what we’ve ever seen before. ASTRID: What you just described is exactly what happened to me, like the first job I had, I was like, “Yay! I’m going to program,” and then they’re like, “Okay, go in and do this one thing.” Then I opened up the code and I’m like, “Oh, my God. What is this? I don’t know how to go through this.” So it took me like a day just to figure out what was going on before I could even change one thing. I think it would become cool to see how a more experienced programmer would do that because that’s something I never see. AVDI: Yeah. JESSICA: You’ve figured out what was going on in one day? [Laughter] JESSICA: As a junior programmer, I refuse to touch the code for like weeks. CORALINE: Avdi, you did a great example of a real world programming task that every single one of us faces in my favorite RubyTapas episode where you talked about the user model. AVDI: Oh, yes. That’s been one of the most popular episodes and it’s the one where I talk about why I don’t use user models anymore. CORALINE: It’s probably popular because I talk about it so much. AVDI: No doubt. [Laughter] JAY: This is not a question but I did throw something in chat that our listeners obviously can’t see, and that is [inaudible] LiveCoding.TV, which is all types of fun. You can watch other people flip their tables and chairs over into those things through windows as they tackle stuff and it gets around their whole editing sort of problem. But I definitely enjoy it. People are quite often like pair programming and mentoring with new folks. There’s a question of, “Hey, so what is it like in real world?” Go to LiveCoding and watch out. AVDI: I haven’t watched anything there yet. I am aware of the site though and definitely check stuff like that out. There’s a lot of video out there that are people working on the real thing. I’ve even done some occasion like I used to do a lot more remote pair programming. I’ve done some sessions. I think the recordings are out there where I just sat down with someone remotely and we put it up on YouTube live thing and we worked on some code. SAM: Well, I want to take a moment here to remind everybody that this episode of Greater Than Code is brought to you by you — the listeners. As a reminder, we do have a Patreon account which we will link to in the show notes. At a $10 a month level, we will randomly select names to dedicate a show to. And today, Trevor Bramble, you are it. He’s at @TrevorBramble on Twitter and works at Chef. Trevor, you rock and I can attest to this personally, and this episode is for you. AVDI: Hi, Trevor. DAVID: Thank you, Trevor. CORALINE: Thanks Trevor. JAY: Thanks Trevor. DAVID: Avdi, you said something at the last segment that I really liked where you talked about editing your show to the point where it almost comes across looking like a superhuman typing. I noticed when I watch RubyTapas that I’m not focusing on ‘gosh, I wish I could type that fast’. I’m too busy processing how clean the code is and learning the lessons that you’re actually trying to teach. I really like that. I wonder sometimes if there’s a good way to neutralize impostor syndrome by reminding ourselves that we are comparing our own behind the scenes footage with somebody else’s highlight reel and you put in a lot of post-production effort to make sure that the Tapas don’t have a lot of the cruft left and it’s all just cleanly presented. How does that work? AVDI: I think that’s a great point. I think, you’re absolutely right that a lot of times what we’re watching in the world around us when we’re watching co-workers, and people we look up doing stuff like that, we’re watching a performance. We’re watching something that somebody has practiced for and they have considered and honed. You definitely see that in microcosm in my show. I mean, I deliberately put it all way over at one end of the spectrum of polished and produced because I try to make it so short and sweet and to the point. CORALINE: So here’s a funny thing that happened on our way to the podcast. We were going to talk to Avdi about… I don’t know something or another, and then suddenly, there was a baby crying in the other room. Avdi, being a good father had to go and see what is going on. So in the meantime, we took a few minutes to talk to our new panelist Astrid Countee, and we’ll let her tell her own story. JESSICA: Tell us what your background is like pre-developer. ASTRID: I started out thinking that I was going to be a doctor. I went to school with this intention of going to medical school. Then when I was going through the classes, I wasn’t all that happy because it was like in natural sciences, they’ll just tell you. Like this is what it is and that was kind of annoying to me because I was like, “I came to school to learn. Not for you to tell me things.” So I started to doubt if that was the right path but I wasn’t sure what the right path was. I was a Psychology major so I was thinking, “Okay, I’ll do social sciences. I’ll do like research and stuff. I’ll be happy with that.” Then after I finished, I started working. I was working at this data company that’s in oil and gas, so they serviced the oil and gas companies. The first job I have, they were like, “You need to be able to run this database.” And I was like, “Okay, what’s the database?” And they’re like, “Don’t worry about it. We’re going to show you how to run this query and it’ll be fine. I was like, “Okay.” And so I started just running queries in Access not really knowing what I was doing. At the time, you could change the data in the Access data sheet which was really bad — I found out later. Because they were like, “Oh, if you need to update something just type it in the cell.” And I was like, “Really? Because it seemed like that shouldn’t be the case.” As their IT got better, I was learning more about how it actually worked, like what the right things were supposed to be in the first place. So I started to have positions where I was building databases, writing my own queries, and making reports. It really just came from the fact that my bosses kept asking me the same questions over and over. They were like, “Hey, when is this going to be back? When is this ready?” I just started to make reports and just give them the report because I was tired of answering the same questions which means that I started making my own queries. They didn’t realize that I was doing that at first and then they were like, “Oh, you seem to like this so we’re going to send you to a class.” And I was like, “Okay.” So I kept learning a little bit more and a little bit more while I was going to graduate school. I was going to graduate school for anthropology because I originally planned to do medical research that was culturally relevant and I was going to go work at a hospital or something after that. What I ended up doing was taking what I was learning in school and trying to make my work life better because it was a data company so all they cared about was the numbers. But I was actually managing people. I was like, “I can’t get better stuff out of people just telling them to push numbers.” And so I started to make my own plans about how it’s going to help my staff actually learn new things and get better at what they were doing. It kept kind of like merging together and then I got to this one position where I was working as the data analyst supervisor and we were making our own tools. I was working with another web developer who was building us interface where we had a Mongo database which I was like, “What is a Mongo database,” because I was on to databases at this point. And he was telling me like, “Well, it’s actually like a document-based database.” I said, “What does that mean?” So he would kind of talk with me and teach me some things and I was helping to build out the interface to make it useful and relevant to us. After that, I was like, “I should really think about this whole software development thing,” because I did not realize that writing my own SQL was actually coding because nobody told me that. I was just like, “Oh, it’s just like writing English and it does stuff,” and I didn’t know that that was actually what programming is. Until later, I got a job at another company where everybody thought that Excel was like the most high tech programming ever and that was super scary to me because I was like, “No, I need a SQL database.” They were like, “What are you talking about? Why don’t you just make yourself spreadsheet.” I was like, “No. I cannot make an Excel spreadsheet.” And after like frustration with trying to build things and then being told because they kept telling me, “Well, you’re in the business [inaudible] company. You don’t build things, like you go talk to another business analyst who will then take your requirements.” And I was like, “I don’t need that. If you could just give me my ODBC connection, that would be good and I can just do what I needed to do.” That really pissed me off. So I was like, “Screw this. I’m going to learn how to build my own stuff because I’m tired of people putting walls in my way.” That’s when I left and I went to The Iron Yard and learned how to program in Ruby. I’ve been in this process of trying to figure out how to use my whole social science background which I really still love a lot and try to promote with software because I feel like, in some cases, on the other side of it, people get into technology for technology’s sake and they just like want to build this little cool thing but it doesn’t help anybody. It’s just another way for them to show how cool they are. At the same time, I see regular everyday problems that are not getting better. I still feel like, “Why is it that I don’t know where stuff is in a grocery store I’ve never been to. Why is there not a really good way to tell me where the cheese is?” Like this is a real issue. So if I have zero time and I have children pulling on me, like why should I have to wander the halls of the grocery store when everybody has to eat, but yet somebody has figured out a solution to this obscure, really technical problem and nobody’s working on regular people problem? I kind of want to figure out how to do that. But I still have to learn all the stuff I don’t know. So that’s what I’m kind of doing now. JESSICA: Oh, no. You’ll never learn all the stuff you don’t know. [Laughter] SAM: Not if you had a hundred lifetimes. CORALINE: For me, listening to your Ruby newbie video, that for me was the thing that really caught my attention. It was that we wanted somebody to represent the sort of the voice of the newbie. But I really wanted to make sure that we had somebody who brought a bunch of their own really rich, interesting background with it so that it wasn’t just like, “Hello, I am as squeaky clean junior developer.” ASTRID: I feel like a weird version of the junior developer because I’m junior in only some senses. Whereas like in other ways, I’m probably more senior like when it comes to running projects and being over teams like I can do that really easily. But then with the technical stuff, I have to learn a lot. So it’s an interesting position to be in because I feel like it helps me be a better learner to know that I don’t know everything and that I can’t really leave without learning from the people around me. DAVID: I’ve never met a junior that wasn’t senior, like excessively senior in some area of life that I knew nothing about. ASTRID: Oh, really? DAVID: I went out to gSchool a couple of years ago and did a guest teaching lecture day on job hunting and like how to write résumés. One of the students came up. She sat down. We were talking back and forth and she was really worried that she wouldn’t have anything in her résumé that she could present. I was like, “Well, let me take a look through here,” and I get to the education part and it’s half a page. She’s got a Juris Doctorate. [Laughter] DAVID: And I’m like, “This is JD.” ASTRID: Maybe you [inaudible] that. DAVID: She’s like, “I actually have passed the bar here in Colorado but you can’t get a programming job as a lawyer.” And I’m like, “The heck you can’t.” You need to lead with that and say, “I’m the junior programmer who knows what a heap of violation looks like.” Or, “What the legal implications of this code are.” When you find that, like Astrid, I love your Ruby newbie video where you said, “I’ve got a degree in anthropology.” And I’m like, “Yes, an interesting human.” [Laughter] JESSICA: Yeah, you have to look at the beginner’s perspective on the technology and also a lot of wisdom. ASTRID: Oh, that’s great. I don’t ever think of myself with having wisdom. I always think of them like in a way anthropology is the inverse of what I learned with technology because in anthropology, you learn about a lot of things. Then you try to scope it down to something small. Then with technology, you usually start out with something small and try to start learning about all these other things. But one of the things that I think helps is that with anthropology, you learn that just because you do things a certain way doesn’t mean that what you do is right, and you have to be open to the fact that there is this whole other group of people who might be doing something that you think is crazy but there is some logic to it. You have to back away and try to understand them before you judge them. I think that that has helped me a lot with technology because I tend not to be one of those people who’s like, “This is awesome and this is not awesome. You should be doing this and not that,” because I just would rather understand like, “Okay, why did you pick this?” Before we start talking about like what you did wrong. AVDI: Can we like clone you and fill the industry with you? [Laughter] ASTRID: I tried to do that because I coach at Rails Girls and I love doing that because I always meet these young women usually who are like, “I’m totally terrified of this. I just came because my roommate wanted me to come with her. I don’t know if I can do anything.” I’m like, “It’s going to be find. We’re just going to write some words together and you’re going to be really happy at the end because you will have made something.” Then almost inevitably, by the time we get to the end of it, they’re super excited and they’re like, “Oh, my gosh. I never thought I could do this,” because people have made it seem like so magical, esoteric, and crazy. I try to get them to be a little more like stop judging yourself before you even do this because we are going to have fun. Like don’t worry, it’s going to be okay. No one’s going to look at you and like, your Twitter clone will be like — well, my Twitter clone is better than yours, because everybody here doesn’t know anything. So I think that kind of helps, like having those little environments because I’ve seen some of those people afterwards, and they may not be like doing software programming but they feel so much more comfortable being able to talk to people who do because they feel like, “I understand what MVC is. I put something on Heroku. I kind of get what you’re doing.” And I think that’s really a lot more helpful than trying to make everybody into developers because I’m kind of against when people say that. I just think it’s nice to have everybody speak similar languages. But they don’t have to do the same thing. CORALINE: It’s like a matter of literacy basically, isn’t it? ASTRID: Yeah. I think so. SAM: It’s like the theory behind the broad liberal arts education, right? You get exposed to a bunch of different things that may change the way you think and you never have to do any or all of them. But at least you’ve had that exposure and you know there’s something out there. ASTRID: Yeah, totally. So you don’t feel like you can’t participate because I think that’s the worst thing. SAM: Yeah. AVDI: Do you want to close up what I was saying to David? JESSICA: Yeah. SAM: Do you remember it? [Laughter] JESSICA: Well, like you were talking. AVDI: You know, what I do is very much a performance. I view it as a performance. I have guidelines down to the level of how to perform while manipulating the cursor on the screen in order to draw the viewer’s attention to the right place and not the wrong place. But there’s a huge amount that goes on behind the scenes that you don’t see. There’s a huge mess that goes on behind the scenes. If you could see this on video, you would be seeing the mess in my office. A really good and timely example of this is another thing that you’re not seeing or hearing is the fact that I just had to take a 15-minute break because there was a baby screaming next door. I had to deal with that. That’s the stuff that’s really going on behind performance. Everything you see is somebody else’s performance. DAVID: Just for our listeners’ benefit Avdi, when you said next door, you mean in the next room? AVDI: Yeah. DAVID: You’re not actually like the neighborhood baby quiet — [Laughter] AVDI: Yeah, in the next room where there’s no door between my office and the kids’ room. Just another example of those things. I’m not in the model house here. This is the real world and it’s messy. DAVID: Sam, you said in the back channel, you can have it all. That’s the takeaway. The downside of the good side is that when you have it all, you also have it all. JESSICA: And all of it has you. AVDI: Yeah. CORALINE: Avdi, I’m thinking about what you’re talking about in terms of performance and thinking about that in terms of people who insist on doing live coding as part of their conference talk. I’ve seen it done once and that was Sandi Metz. And most of the time, it seems to involve an auditorium full of people saying, “You forgot the period. Line 51, you forgot the period.” AVDI: I don’t have the guts to do a live coding. I’m not going to say it’s good or bad. I just don’t have the guts to do it on a stage, I should say. CORALINE: Yeah, the one time I pretended to do it, I actually [inaudible] recordings, and I stepped away while the typing was happening just to say this really is not me. SAM: It’s not me now. JESSICA: I favor this to demo code that modifies code so it’s technically live coding but really I’m just typing at the command line. AVDI: I feel like I met someone once who had come up with a little program or an editor customization where they could pre-record exactly what the editor was going to type. But then it wouldn’t actually type the next character in the sequence until they hit any key. Then they would just cue this up and then they’ll just be like, bang-bada-bang-bang-bang-bang-bang-bang… CORALINE: That is brilliant. JESSICA: Which all gets to the point of you could call it an abstraction of what we do to make this information flow well, hides a lot of mess behind the scenes. SAM: Yeah, there’s also a lot more that goes into RubyTapas that’s not even about the code itself. One of the things that I have always really appreciated about RubyTapas is that you provide, it’s not a transcript but your working script along with the show itself. As somebody with ADD, I find it really, really difficult to sit still for a video even if it’s RubyTapas’ length. I just wanted to thank you for making the scripts available so that I can read them at my own pace and I wonder if there’s anything else that I haven’t even noticed about that. AVDI: Well, you know first of all you’re welcome. I’m very glad to be able to provide that. Like I said, it is the script, not a transcript, part of making this into a performance is the fact that I compose these things. I draft them out as if they were blog posts, only more conversational. I go through all the code first to make sure it works and I figure out how I want to talk about it, what sounds natural and what doesn’t and stuff like that. It begins weeks in advance of the point where I cut the actual final video, let alone the point where I schedule it to be published. There’s research and then there’s drafting. Then there’s a little bit of parallelization once there’s a draft because I can have my screen typist do the typing while I’m also recording the voiceover. Then there’s editing and there’s definitely a lot that goes on behind the scenes. SAM: We had some listener questions and just as a reminder, if you want to support us on Patreon, we will invite you into our supporter-only slack room. We had a couple of listener questions for you this week. Darin Wilson asked, “What non-Ruby technologies have you been exploring lately?” AVDI: These days, I try to make some time every day to study. The technology I’m studying lately is PHP. It’s this obscure new programming language. [Laughter] JESSICA: What does PHP stand for? AVDI: I don’t even know anymore. It used to be like personal home page or something. CORALINE: Yeah. Avdi, as you know, PHP has a very bad reputation among Rubyists. There’s sort of a snobbery toward PHP and I find that really annoying because PHP is the great language for people who are getting started. They have their first WordPress site, they want to customize it, and then that’s like a gateway into programming. How are you finding PHP as someone who’s already an experienced programmer though? AVDI: I’m at an interesting point in my programming career. It’s kind of a very blessed point. I think of it as the comb-over stage of my programming career. [Laughter] AVDI: Imagine that you are a young and hip early 20-something at your favorite coffee shop and you look over at this other table. There’s this guy who’s wearing khaki cargo shorts with black knee socks and sandals, and he’s got a comb-over and bad glasses and he just seems generally awkward. The front part of your mind is like, “Wow, that guy’s not cool. I’m cooler than that guy.” But then there’s this little voice in the back of your head, that’s like, “Wow, that guy doesn’t even care. He’s not worried about any of this stuff. I wonder what it’s like to be that guy.” I feel like I’m reaching the comb-over stage of my programming career where I’ve finally gotten past a lot of the sense that I needed to feel contempt for other technologies and programming languages and things like that. I can just sort of move on to not giving a crap and it’s nice. So how am I finding it? I don’t care how I’m finding it. What I’m finding is that it’s a turing complete programming language and what’s interesting about it is the ecosystem that’s built up around it. Particularly, what interests me right now and what has me getting into it is the WordPress ecosystem. I’ve used WordPress for blogging for many, many years but I wasn’t really serious about it until I kind of moved my whole business over to it. It really is a remarkable ecosystem. It’s filled with programmers who are not as obsessed with niceties of syntax or cleverness of syntax and stuff like that as we tend to be in say, the Ruby community and some other programming language communities. But it’s an ecosystem where it feels like a lot of the people who are programming now came in from the business side. They had something that they needed to sell or they had something that they needed to market. They had a family business or something like that, and WordPress was there for them, and then they slowly started learning to code for it. One of the things that I find really interesting about this ecosystem is that a lot of people in it are actually functional at business and they’re functional at making what they do pay, which to me is incredibly important because it’s great when you are young and you have no attachments and you have nobody depending on you and you can do the whole startup thing or whatever. It doesn’t matter whether the stuff that you do pays off. But a lot of folks aren’t in that situation. A lot of folks eventually move out of that situation. A lot of people don’t even start in that situation where they’ve just got time on their hands and it doesn’t matter if nothing comes out of what they’re working on. It’s cool to see people that not only how to code but also how to make it support them. You see stuff like the amazing WordPress plugins community where all these plugins are GPL. They’re free software. But everybody also sells their own pro version which may involve support or may involve an upgrade add on to it, and they’re able to make a living that way or they’re able to make part of a living that way which means they can keep hacking on it without those big breaks that you often see in open source projects where somebody just didn’t have the time. That’s really cool. So it’s a different culture. I compare that to the Ruby culture that I spend a lot of time in, and I can think of one project that follows that model. There is [inaudible] sidekick. There might be a few others. But it’s very rare and it’s kind of strange how big the dichotomy is. JESSICA: So the PHP community has found a way to make their open source project sustainable? AVDI: Yeah, that’s really what it seems like. SAM: I wonder if there’s something about the demographics. I know that a lot of Rubyists tend to work in startups using Rails. I wonder if the PHP community is more diverse in that way. AVDI: I honestly don’t know. SAM: Just [inaudible] your hypothesis. CORALINE: Avdi, have you participated in any events in the PHP community? Have you gone to conferences or gone to meet ups or anything like that? AVDI: Not yet. I’ve started to get a tiny bit involved in a form or slack but I haven’t gotten out to conferences yet. But I think at some point I probably will. JAY: That’s a really interesting point. Something that I don’t really consider, though I spent a lot of time kind of working with an [inaudible] community as like as ad agency. It’s kind of what my background was in sports entertainment. So a lot of their stuff was kind of, I don’t say this in a native way but how can we extend WordPress to do something that is not necessarily meant to do and coming up with all sorts of really noble sort of things. But I didn’t really consider that. But I would agree with that statement. Without a doubt, there’s a lot of really great conferences around WordPress and [inaudible] who are finding ways to monetize those projects in ways that maybe the Ruby community hasn’t. AVDI: Yeah I don’t feel like I’ve dove in enough to say much that’s authoritative about it. But my opening impressions are just that people there’s a higher level of business competence and just thinking more about like, “What is the life goal that this thing serves,” rather than, “I am writing this code because code is cool.” JESSICA: So like Astrid talked about building something useful as opposed to building something clever. AVDI: Yeah. CORALINE: I would like to point out that the PHP community, although looked down upon by Ruby has something that the Ruby community does not. They have a governing body and they have a very healthy discussion that’s been going on for some time now about whether to adopt a community code of conduct. These are things that, I think, the Ruby community could learn from the PHP community if we could finish looking down our noses at them. ASTRID: I would say that as a newer programmer, I never quite understand why there’s contempt towards PHP because there is a lot of demand for PHP developers. it seems like if you’re new to programming, this is something that would be a good skill to pick up because they may not be like the hot flashy thing but there’s a lot of legacy code out there that’s in PHP that even small businesses or individuals or sometimes even larger businesses need developers for. So I think it’s a good thing to try to build up some skills that you can use in different ways and it seems like PHP is a good way to do that. CORALINE: Yeah, we have no PHP boot camps. ASTRID: That’s true. That’s so weird. DAVID: The culture of PHP is that you don’t need them. [Laughter] DAVID: Less than question mark PHP and start typing, and that’s your boot camp. SAM: All right. Our second listener question this morning comes from Lucas Dohman who asks, “Should a screencast series like RubyTapas also go beyond code? Talk about topics like dealing with frustration in programming, for example.” AVDI: I don’t know. Should it? I’m not sure I’m the one to answer that question. CORALINE: Do you get feedback from listeners, Avdi, asking for certain topics? Is that one you would entertain? AVDI: Yeah, I totally get feedback. I invite and I get comments. The site has a forum now so I get suggestions there, email, and stuff like that. It’s not something that — that particular topic, I don’t think is one that I recall coming up before. I could be mistaken. But it’s certainly something that I would think about covering. It’s the kind of thing that a lot of times people cover in a conference talk, rather than a screencast series. But if I had a good angle on it that was better than just frustration happens and going on about that for five minutes, I would definitely do an episode. SAM: It’s an interesting question to me because right there in the name is RubyTapas. So I wonder if you feel constringed to only talk about Ruby, whereas I think a lot of the stuff about like dealing with frustration or some of the other interpersonal issues that come up with code, this can feel a lot more what I’ve heard called ‘second shift work’ — stuff that you do in addition to your paying job. AVDI: Right. It’s also stuff that we get into areas where I feel more incompetent than usual to cover. There’s stuff that I can say about my own life but beyond that. Well, I guess that’s true, code as well. I can tell you what I’ve done but beyond that, I don’t really have a lot of authority. But I guess what it is, is that you get into an area where it’s like, “Oh, gosh. I don’t want to give somebody advice about how to handle their day that makes them have a really bad day.” You know, let alone a whole week of bad days or something. It’s scary. That kind of stuff is a little bit scary to cover. When you have a screencast series like this that people subscribe to, you are implicitly putting yourself in a place of authority, whether you acknowledge it or not. Just the same as when you’re on stage or on a podcast, for that matter. You know, I get really nervous about messing up in that kind of situation. DAVID: I’ve been on a podcast with you for a few years now and I’ve gone to some conferences with you and sat next to you. I can attest to the listeners that you are one of the most humble, down to earth people, and that you do genuinely get stage fright. I was very amused because schadenfreude is the best in freude. [Laughter] DAVID: But I loved being at LoneStarRuby Conf and you were shaking. You were visibly shaking and you soldiered on. You did fantastic. And I loved the fact that we live in a world where you can just start broadcasting information. Just teach what you know, teach what you know, teach what you know. You don’t have to assume this mantle of, “I am the all-knowing guru. Come sit at my feet and learn.” You’re just going to say, “Hey, I’m going to teach what I know,” and you are fantastic at this. How do you negotiate your own stage fright and impostor syndrome in the face of knowing that people need to hear what you have to say because we do consider you an authority? AVDI: I’m getting impostor syndrome about figuring out how to talk about this, to be honest. How do you even say something useful about this? Because it gets into an area of like, I don’t know how I do this. I just sort of do. It’s scary and it’s difficult. My personal experience is probably the same as other people’s experience and different from different people’s experience. For me, I sort of bounce around between the heights of ego and, “Yeah, I got this,” and the depths of, “Oh, God. I don’t know a thing that I’m talking about.” I don’t even have the sense that people definitely need to hear what I have to say. I really have to count on feedback and it’s terrifying because like I’ll hear one negative thing and it will crush me for a week. I’m just incredibly lucky that for whatever reason, I don’t hear a lot of negative stuff. I don’t know why that is but I’m extraordinarily grateful because I don’t think I’d survive. I rely a lot on the really nice things that people say. Periodically, if you follow me on Twitter, you’ll see me say, “People send me the nicest emails.” That’s usually when somebody sent me a really nice email and it made my day. I don’t know, I feel like I’m not giving you anything useful on this question. I have been through many, many instances of like you say, shaking with stage fright and I feel like I’ve coasted on people saying, “It’s okay. You did okay.” JESSICA: Avdi, that’s incredibly useful. You just said, “I don’t know how I would deal with it if I got a lot of negative feedback. I’ve been fortunate that I don’t get a lot of negative feedback.” That is encouraging in the sense that some of our listeners and probably some of us do get negative feedback frequently and not for good reasons. But just because they’re at a place of work that doesn’t value being kind to each other or they’re not a white male with trademark hair. That is incredibly discouraging. You just said that even you might not be doing this if you got a lot of negative feedback. It just shows what that kind of impact is that whenever we discourage someone or put them down or denigrate them or their code, or their programming language, or eliminating people. AVDI: Yeah. I want to say one or two things to that. One is for some reason, programming can be an incredibly judgmental culture, and environments can be really poisonous. I’ve been privileged enough, and I use that word very deliberately, that I’ve been able to sort of skip out of some places that had crappy cultures. But just recently, I saw another reiteration of a meme that I see pretty frequently in programming which is, “You should get your ego out of your programming.” You should not involve your ego. It should be ego-less code. You shouldn’t feel like ownership of your code or possessiveness or attachment to it. I think this is an incredibly damaging idea. It’s an incredibly hurtful idea because here’s the thing. A lot of people are going to be like, “What? We should be egotistical in our coding?” No, I’m not saying that. I’ve casually studied some Buddhist philosophy. I’ve benefited hugely from the concepts of non-attachment and escaping the ego. I think it’s incredibly useful stuff but here’s the thing. You can’t tell somebody else to get their ego out of the way. It doesn’t work. You can’t do that. I can say I need to work on my ego. I need to release my attachments. You can’t say you need to release your attachments because it’s like working with children saying, “No, you can’t have the toy.” Well now they want the toy like a thousand times more. Fundamentally, the way people work, you can’t go out there and say, “Everybody, put down your egos.” And I think when you have, for instance, environments where people are saying, “Well, you did this, this, this, and this wrong,” and you have a hurt response mental reaction to that and then they say, “Oh, you need to put down your ego.” CORALINE: I think the problem comes down to the fact that the ideal programmer, in a lot of people’s minds, is an emotionless robot that is just producing intellectual value and has no emotional response to things, has nothing that differentiates them from the next smart person, and that excludes people because you’re not allowed to bring your whole self to the work that you’re doing. JESSICA: Yeah, if I were programming in an ego-less manager, my code would be shit because I wouldn’t care about it. [Laughter] AVDI: I mean, for better or for worse, we are creators, just as much as anybody who makes anything, and just as the writer — somebody writes a novel and they know that that’s going to be the thing that people remember them by. That’s going to be the change that they create in a world that lasts past their own physical life. We have the same thing going on with code. I wrote code on air traffic control systems for a while. And for a while, there were airports that I could fly into that I knew that my code was running on the approach. I am not, for a minute, going to say that I don’t feel a little bit proud of that. That that’s not a little bit of a part of me and I’m not a little bit a part of that code. These are the changes that we put out into the world that may persist beyond our own lives. There’s going to be a little attachment there. You’re not going to get away from that. CORALINE: And Larry Wall actually says that the three virtues of a good programmer are laziness, impatience, and hubris. So pride is important because like Jessica said, that makes you write better code. DAVID: Yeah. JAY: But I think it’s also important for us to find a way to balance that as well so we can accept the fault in what we’ve created and the fact that we’re not creators. I was just reading something interesting. I think it was a link that was on Hacker News about bias that pops up in systems. Something I’ve been thinking about a lot lately, what is the effect that I have on other people as well. You know, I don’t know if anyone has any advice on that. I think what we’re stating is, yes it’s important but at the exact same time, like you don’t want to kind of build up this alter of pride and ego. And you’re unable to reconcile that your actions have an effect on the people or utilizing those systems or listening to a podcast or a screencast or so on and so forth. You know what I mean? AVDI: I think you’re absolutely right, Jay. Particularly, the examples that you’re citing of bias that creeps into systems, Carina Zona has these great talks that she does about the bias that creeps into the schemas, and the bias that creeps into algorithms, which programmers love to talk about this crazy idea that algorithms are inherently unbiased, which is lunacy. See, there’s my bias showing. [Chuckles] You know, I think one of the places to make these ideas meet is maybe the idea that we’re going to feel attachment to the code we write. We’re going to feel a little defensive about the code we write. We’re going to feel a little bit like it’s a part of us. I don’t think most programmers go out there intending to write bad code. I don’t think they go out there intending to write code that’s not fit to purpose. But something that’s sort of universally true is that we all go out there with limited information. We all go out there not fully understanding the domain that we’re working with, not fully understanding the implications of the decisions that we make, the parts that we put in, and also perhaps more importantly, the parts that we leave out. We don’t have all the information. And so yeah, my code is broken. I didn’t want to make it broken. I didn’t intend to make it broken. I didn’t intend for it to hurt anyone with its brokenness. But these things happen anyway because a lot of the time, it’s just because we are not in possession of universal knowledge. I think when we realize that, it helps us have a little bit of compassion, I hope, for how these things happen. ASTRID: I think it also has something to do with just trusting other humans. I think we seem to have a hard time with that like it’s okay that somebody may have made a mistake. It doesn’t mean that they’re always going to do something wrong, but that doesn’t also mean that they don’t have anything to offer. It seems like this is something that’s come up more recently because I was listening to somebody talking about the movie that’s going to come out about the women who are working with NASA in the 50’s. One of the interesting things I heard was one of the astronauts said that they had just gotten a new computer and the computer was being used to calculate the trajectory that they were going to take to land on the moon. He said that he was not going to get into the space shuttle until the woman that was the computer before had verified that the computer was correct. That’s like the opposite thinking that we have now because now, we don’t trust humans. We trust machines. But we forget that it’s humans that are programming the machines and we don’t think about the relationship back to having that trust with another person because it’s not like we do anything alone. I think if maybe there’s a little more highlighting of the fact that people need each other and it’s not just, “I’m going to program this thing. It’s going to be perfect all the time.” And if it’s not, then you throw the person away. Then some of that distrust and some of the contempt for people mistakes might start to go away. AVDI: I have very little to add to that. That’s I think — yes, what you said. [Laughter] JESSICA: Including for our own mistakes. Yes, we’re attached to our code but we’re imperfect and our code is imperfect and there will be so much to learn. ASTRID: Yeah. AVDI: In a way, code is just open number around humans. It is this extension of ourselves that reaches out into the world and affects things a little bit beyond what we can reach ourselves but it all comes back to us. SAM: I think that’s a wonderful place for us to start wrapping up. Last time we did this really cool thing where we all shared one takeaway from the episode and I think I’d like to do that again. But first, I do want to remind you that we are currently only supported by our listeners and some of our panelists. If you are somebody or if you know of somebody that we should talk to about company sponsorship opportunities, we’d like you to get in touch with our show manager and producer Mandy at Mandy@GreaterThanCode.com. Our goal is to bring you quality shows as frequently as we can but we do need some help with that. If you would like to see a little bit of what goes into our editing process and maybe understand why we’re asking for money, go take a look at our blog post — a letter from the editor, and check it out on our site. I think I’ll start off with the takeaways. I was thinking as you were talking about taking your ego out of code that I was really lucky early on in my career to have a mentor who helped me learn how to sort of detach from that and to consider their code in terms of like what it was doing, and not get super upset when we talked about how it could be better. I was realizing especially, Coraline, when you’re brought up hubris, that there’s sort of this ego judo that you can do, where you can use your ego and your attachment to the code. But make it not about yourself and instead try to focus on what your code is bringing to other people, and maybe that can help you try to figure out how to make it better without getting stuck. AVDI: Yeah, and you also said something that I’m really glad you said because I forgot to say it, which is, “No, you can’t tell people to put their ego down.” But what you can do is model it and you’re talking about your mentor in modeling and that’s really all we can do. And I thank you so much for bringing that up. CORALINE: I like the fact that, and this is like one of the goals that I have for the show, at least, that we got to see the person behind RubyTapas as a person with vulnerability, as a person with human flaws, human characteristics, anxieties, and weaknesses. SAM: And babies. CORALINE: And babies. I think we got a glimpse into the whole person behind a public persona which I think should be inspiring to people and should be really interesting to people to know that our heroes — Avdi, you are a Ruby hero — are living human beings and full people with a full spectrum of characteristics and are not very different from the rest of us. I think that’s my main takeaway. ASTRID: My main takeaway is what Coraline said and then also how important it is to bring your whole self to something so that you’re not just perceived as a robot or you’re not just in this one little corner of the world trying to do something small. That you are a whole person and what you do affects other people so you don’t forget that as well, when you’re working. JESSICA: Bridging on that, my takeaway is that what we show matters. In the case of a screencast or a conference talk or this podcast, the editing, the curation, and getting it just right matters because it uses our listeners’ time well. But in our work, when we’re working with people as people, it matters that we show that we’re not perfect. Like what Sam and Avdi said about we can’t tell people to pullout their ego but we can model it. Showing that matters. Showing people that we have children and sometimes they interrupt our conference call and that’s okay. That’s life. That matters. But there’s a time and a place for looking really good and there’s a time and a place for just being who you are. SAM: Yeah. DAVID: Nice. JAY: We need to put on a t-shirt, with the logo. I think what I got out of this is a small bit that was important and I think that sometimes it’s a part of impostor syndrome. We cannot build up this ghost for ourselves. I think that it helps for us to recognize that with things that are producing, things that we see, until we actually sit down with someone and interact with them, that we’re not necessarily seeing them for who they truly are, and we can utilize that. We could do this whole comparison back and forth with, “Oh, you know, I’m not as fast as this person. I’m not as smart as this person. I’m not this. I’m not that.” I think that if we recognize that a lot of other people have the same fears that we do, and they’re kind of working through the same sort of thing, they’d probably are also going through that same sort of comparison in their head that we can then relax and say that at the end of day, we all want the exact same liberty. We want the exact same freedoms. We have the exact same wishes for ourselves and family members. I think that it will help us to relate and also to help us calm ourselves when we’re feeling panic, or we’re feeling [inaudible]. DAVID: I think for me, a great takeaway, and I hope maybe some of our listeners will consider taking this away as maybe as a challenge for them, is that Avdi did not start doing RubyTapas because he was an authority. He became an authority because he was doing RubyTapas. We of us on the podcast did not start podcasting because we were famous know-it-alls. We became famous know-it-alls because we were podcasting. So if you’re listening to this and you’re thinking, “Well, that’s great. That’s all well and good for these people that have achieved all this stuff.” Don’t. We did not start from that place. Put your ideas out there, get them in front of other people, and you will suddenly discover that that’s how you manufacture authority. AVDI: Then write e-mails to the nice people who host this podcast to tell them that they’re doing a great job because that’s what keeps folks going. JESSICA: I got into speaking because somebody told me, “Oh, you don’t have to be an expert. You just have to know enough to talk for an hour.” I’m like, “Oh, I can learn that much. I’m good at learning.” [Chuckles] SAM: Avdi, do you have any takeaways from this? Any final thoughts? AVDI: I spent a lot of time talking on this episode but the one thing that I did learn is that there is a movie coming out about the women programmers at NASA. So now, I’m excited about that. Thank you for that, Astrid. ASTRID: No problem. It’s called ‘Hidden Figures’. AVDI: Awesome. SAM: All right. Well, thank you very much, panelists. This has been a really wonderful conversation to share with you all. And thank you listeners. We’ll come back at you next week. CORALINE: It’s a wrap everybody.