Part Two: Interview With Kenneth Reitz (@kennethreitz)
Published 3/4/2016
In today's episode, I interview Kenneth Reitz, Python product owner at Heroku!
Mentioned or Relevant:
- Kenneth Reitz
- Python
- requests
- records
- Coding for Humans (Developer Tea episode)
- Remap caps lock
- Vim
- Emacs
- Evil (extensible vi layer) for Emacs
- Sublime Text
- Atom.io
- tmux
- Redmine
- Pycharm
- Emmet
- Emmet Vim
- Zen Coding -> Emmet
- Sparkup
- Djembe
- Ben Orenstein on Developer Tea
Today's episode is sponsored by Linode! Head over to Linode.com/developertea or use the code DeveloperTea20 at checkout for a $20 credit towards your cloud hosting account! Thanks again to Linode for your support of Developer Tea.
And lastly...
Please take a moment and subscribe and review the show! Click here to review Developer Tea in iTunes.
Transcript (Generated by OpenAI Whisper)
Hey everyone and welcome to Developer Tea. My name is Jonathan Cottrell and in today's episode I continue my interview with Kenneth Reitz. As we talked about on the previous episode, Kenneth has made a ton of the most popular libraries for Python. Most notably probably Requests and Records. Kenneth is all about human coding and making code a little bit more readable by humans. We left off on the last episode talking about his kind of burnout moment. And when he ended up taking a step away from his personal involvement with his open source projects. That's where we pick up in just a moment. Thank you to today's sponsor Linode. If you are looking for a cloud hosting service and you are familiar with Linux especially, this is a great opportunity for you Linode. We will talk more. About what Linode does and a special offer that they have specifically for Developer Tea listeners later on in the episode. But first I want to jump in and talk with Kenneth. Again we're picking up where we left off and talking about the burnout phase. And when he decided to take a step back from his involvement with open source projects. Want to be clear first. It's not like I didn't touch anything. It was more like I had a complete disinterest in. In my open source code. Sure. And really in code in general. I wouldn't code recreationally anymore. And open source is for me is mostly recreational. So. And you know. Before it was complete tires entire centerpiece of my life. It was you know what I. What I. It's my hobby. It's what I think about all the time. You know I have a lot of other things going on too. But. Um. It's my primary. Um. It's it's truly an occupation. It really is. Yes it is. And I guess I went through a bit of like a really premature midlife crisis. Or I just like. I started spending my time doing completely different things. And um. You know didn't give the my open source code a second thought. And just had no desire to build any you know. I you know I would like merge pull requests occasionally. And like see what's going on. Every once in a while. But like I had. Not an idea popped in my head once. In that time of like oh I want to build this. And I was just like coding is dead for me. This is a really weird. I was really worried about it. And then um. About a month ago. I started doing it again. It was kind of like click one day and I'm like I started reading. Like every issue that's been opened in the last year on all my projects. And like responding. And uh. Getting things. Merged and. All this stuff. And it was just it was so much fun. You know I'm like why did I ever stop doing this. And uh I think I needed the break. Yeah. Yeah. But there's a certain level of responsibility that you have when you run open source projects. It depends on what type of project it is. Like it's okay for. You know if it's a small project that no one's using. It's fine if it goes stale. Right. If it's a small to medium sized project that's very stable and doesn't need updates. It's fine. If it goes stale. You know if it's a it's a if it's something that like everybody uses you can't let it go stale. Uh that's not acceptable. Uh so very thankful I have two excellent contributors to the request project. That uh have been maintaining it. And uh they did an excellent job. Like they always have. And so I definitely recommend that. For anyone. What I built requests myself. And built it for myself. And then the community caught on. And then. You know I got real excited because it was my most popular project. And it just grew grew and grew. To like a size it's like the most popular python project there is. And you know as it started growing to that size. It's just there's just too much going on. To handle incoming requests and pull requests um effectively by yourself. Yeah. Uh it's just not possible. Um so basically what I did. Was there was a couple there was uh a couple people that Ian and Corey. And uh they were just naturally commenting on a lot of uh issues. Like they'd be responding to some other people's issues. And so I was I watched them for a little bit. And uh and I was like they just said what I needed to say five hours ago basically. Yeah. And so I added them as collaborators on the project. And so they started off. Uh. Um they they weren't allowed to touch the code. They were just allowed to like deal with all the pull requests and stuff. And and handle the people. And then over time the the trust grew. And now they are like you know core maintainers basically. Yeah. And I'm still the BDFL the project. Where I have total authority over you know decisions. But like if they disagree with something I I sit down and I like think about it for a week. Now. Yeah. Before I'd be like I don't care. Right. Yeah. So it's really great. So I that's a good workflow basically is you know get it's okay to hand the keys over to someone else when you can't drive. That's that's a perfect analogy. Uh I was I was going to kind of return to some of what you said earlier. And specifically I I think a lot of people go through this. You know I we have different cycles. Um that our brains go through that we don't really even have control. Over right. We need a certain amount of time resting for example. And I think a lot of people expect that today should look like tomorrow and tomorrow should look like the next day. And that we work like machines that we can produce at the same exact level all the time and that we're always going to be interested in the same stuff. And that's just not how humans work. We're not machines. We work much more erratically than that and much more seasonally than that. And I mean there's I actually saw a really. Interesting proposal. For taking. One seventh of all time off of all units of time. So you know one day every seven days. One week every seven weeks one month every seven months. And it's an interesting concept. Every seven years. Yeah exactly. No I mean like a sabbatical year every seven years. I guess that's what I did. Yeah totally. And this is actually a really interesting thing is that we actually you know just like we have. Sleep cycles. We also have interest cycles. This is a. This is not proven science by any means. But this is my my theory is that we have a site our interests will will cycle on and off of things. I actually have experienced some similar things with code but I recently had the experience of coding all day long like a 12 or 13 hour day. And the next morning getting up and wanting to code like the very first thing the next. Morning I wanted to do so. In fact I woke up. With an idea. Already formed. It was very strange. The best feeling in the world. It is. It really is because it's it's energizing. But you feel like you're going against your identity in some ways. If one day you're like man I just really don't feel like doing that. Right. And because so much of what we want and so much of what we what we strive for when we are coding is kind of this nirvana like. Sense. Of I know everything about this thing and I'm an expert and you know I'm relentless at what I do. And when we feel a lack of drive to code that makes us feel like well we're never going to hit that state of you know pure flow state or whatever that we actually have failed in some way. Yeah. I definitely had that feeling at first. Well it's something that happened periodically. Is that I feel. It was just a general level of concern and almost guilt. Yeah. About the fact that I wasn't interested. In code anymore. And really I had a lot of anxiety career wise because I was like. If I don't enjoy doing this anymore what am I going to do. Right. Right. Because you've built a whole career off of. Exactly. And the open source component of what I do feeds back a lot into the career side of things are kind of they're intertwined. And so I was I was really worried about it but I don't really know what I did to snap out of it if you will. It's just kind of happened and I'm really I'm having a lot of fun so I'm glad it did happen. Yeah. Well and I think you know I don't think we always know exactly what will trip our brains back into something that we've lost interest in in the same way that we don't really understand the mechanics of why we wake up. Right. Once we've had enough rest we naturally wake up. Right. Right. Right. Unfortunately that's usually not the case for me. I end up waking up to an alarm clock. But you know I think this is a really normal thing. Now with that said you know I have a responsibility for example to continue maintaining this podcast. And if I were to you know and this is that this has happened. I haven't told anybody on on air yet but there are many days where I'm like man I really just don't feel like recording an episode today. But when I actually sit in front of the mic I can still do it. Right. The the the ability. The ability is still there. And the interest is still like that. That's I don't know. We can call it expertise because I haven't been doing this long enough to consider myself an expert. I wouldn't say but the the familiarity allows me to perform the things that I need to which I'm sure you experience something similar when you go to work and you had to write Python. You know when you weren't really interested in coding you could still do it and do it well. Yeah. But I would do it. It was like a more. It wasn't a pleasurable thing. It was just kind of like oh I got to do this. Right. Yeah. Yeah. But but you can sit like you still have the power right. Like you're not suddenly bad at coding because you're not interested in it. No. Well that was the really interesting thing when I returned and I started doing stuff again. I like I forgot about a lot of things. It was really fun. I was looking at some Python code. I like forgot that Python had had an aleth state. I was like I'm not because I was looking at like I've just I've never seen it before. What is this. Is this new. This is crazy. And and then like like a day later I look at my code and I used to use it all the times. You know it's like yeah it's like once you start going it all comes back to you. It's like riding a bike basically. It's like muscle memory almost. Yeah. Like yeah. And this is also like engagement with social media and the open source world too is something that I haven't. Haven't been doing as much. And so like as I started to do it more I was doing certain things like the hard way. And this is gonna be funny. Like I like to use a little trademark symbol sometimes. And so my way of doing that was like Googling TM and going to the Wikipedia page and copy and pasting it. I still do that. And I was doing that for like like a week. And then the other day I just hit ALT 2 which is the way to do it. I forgot about it but it was a muscle memory that like came back to me. Right. Yeah. And so you know I'm gaining back all my old ability. It's just they come back slowly. Yeah. I actually recently had a similar experience. Every day I work with other developers and I'll sit at their computers you know try to solve a problem with them. And I'll try to I'll try to type on their computer. And it's it's just a mess. Right. Because I use Vim and I've done a lot of stuff to customize Vim on my computer. One of the simple things I've done is I remapped Capsule. Lock to control is a really common thing for Vim users to do. But none of their caps locks are remapped to to control. And sometimes I will even go in and remap them and not tell them because they don't even notice for days on end because nobody uses caps. Well you'd be surprised. I have met two people who don't use shift when they type. They hit caps lock twice. Interesting. One of them is my wife and I will never stop giving her hell about it. That is incredible. Well self-taught typist. You know. Yeah. Sure. That makes sense I guess. Yeah. Isn't it weird. It is. It is odd. But but the more odd thing to me was how jarring it was to try to unlearn for those like three or four minutes how to type or how to learn how to type on their computer and unlearn that it's like that that's not my computer. You know. Yeah. There's nothing more frustrating to me than being on someone else's computer. It's like. Like it burns. Yeah. I actually meant. So I mentioned them. I'm interested to know what editor or ID do Python Pythonistas. Is that correct. That is an accepted term. OK. Python developers is probably just more. There you go. Go with the correct statement. We'll go with that. What what editor is kind of the popular editor for Python developers. Text editors that are the one that I see everyone using. This sublime text. And that's what I personally use. But people use all kinds of stuff. Personally I have a no them policy because I love it and it's fantastic and I've been using it since I was a little kid and I just figure the hell out of it constantly and I don't get any work done. I'm just constantly trying to make it better. You know. Right. And well you you grew up on a Linux machine you said right. Yeah. Yeah. I think it was V.I. on that I had back then. But same basic concept. Today's episode is proudly sponsored by the Linode. With Linode you can instantly deploy and manage an SSD server in the Linode cloud. You get a server running in seconds with your choice of Linux distribution resources and the node location. There are eight data centers and plans start at only ten dollars a month. You can get a server running in less than a minute. They have hourly billing with a monthly cap on all plans and add on services. Like backups or node balancers and long view. And you can have VMs for full control. You can run Docker containers. You have encrypted disks VPNs etc. You can even run a private git server. And for those of you who are particularly concerned about speed there's native SSD storage on a 40 gigabit network and they run Intel E5 processors. So things are plenty fast in the Linode world. They also have a seven day money back guarantee. Now you may remember. As a kid when you found a 20 dollar bill on the ground how excited you got. You might even remember that specific day and I have some exciting news for you today. You're going to find a 20 dollar bill because Linode has provided a very special deal for developer T listeners. If you use the code developer T 20 at checkout you'll get a 20 dollar credit immediately applied to your account. That's 20 dollars totally for free just because you use the code developer T 20. Of course there will be. A link in the show notes that takes you directly to that deal which you can find the show notes at spec dot FM. This link and every other link from today's episode can be found in the show notes. Thank you so much to today's sponsor Linode. Yeah I think so. We had this conversation in our our slack community recently and probably going to end up making an episode about it. But we were talking about you know the intangible qualities of them and how you know. Does it make you more productive or not. And nobody really has like a perfect metric to describe this thing. And I said you know there's some some things that are actually just worth it just because they're fun and other things are not. And one person in the community made a really good point. He said you know this very well could end up being like a productivity wash if you are the kind of person who ends up doing exactly what you said you do. Just tinkering all the time trying to make it. You know exactly what you want it to be. Same reason I can't use desktop Linux. It's just too configurable. Right. Yeah. Like OSX is perfect because like you can change almost nothing about the way it looks at all. Right. You know even coming from Windows they like they're like you can make the you know the minimize and maximize buttons gray or colored. That's it. That's all you can do. Right. Those are the options. Yeah. Yeah. You can go through the entire preferences panel on Mac OS. Yes. In like I don't know 10 minutes and you're done. Exactly. That's it. I like I really like having that constraint. It helps me. Yeah. Do what I do better because otherwise I'm going to change everything. Right. Yeah. And there are some things that I still I would say that I'm actually pretty conservative about about my Vim configuring. But I do know some people who some people in the community who are kind of obsessed about it. The really crazy people are the Emacs users. Yeah. I don't. I don't. I can't even talk about. I max because I've never used it either. But everyone talks about it. It's almost a religion. I think. Yeah. I think you do have to have like a certain spiritual perspective of the universe in order to be able to successfully use him. You know what? I really I appreciate the ability to get to that like dedication level of your tooling. Definitely. You know, if you have that dedication level, congratulations. That is that is impressive because I. I have so much other work that I have to do that I can't spend my time on my tooling at to that level. I don't. Well, it's that thing again where it's like this is fun. Right. And they probably find it fun to do that. Well, I met one person who used there is a an evil mode, I guess is what it's called. Yeah. It's it's basically Emacs mixed with them. Oh, I think it's a portmanteau. The evil Eva Evi. I don't know. I get it. I get it. But in any case, a lot of. The same like bindings that you use in them are available in Emacs because why not? Right. I mean, if you if you write lists, then you can do whatever you want to with Emacs. So back when I was a heavy Vim user, I I used to have I can't remember what it was called. I think it was called sub clips where I would it would run. I would run a headless instance of a clips. Oh, wow. And then connect to it from them. So I'd have code completion. You know. On par with Eclipse, which has a pie dev in it, which is really great. So that's the type of thing that's just like, I don't want to be. I don't want to be doing that. This is this is not healthy for me or anybody else. You just just write the code. Write it out. Stop pressing tab. Yeah. Write the letters. Yeah. Finding sublime text for me was huge back when I switched to OS X. It really like I don't know. There's just something really pleasant about just. Really nice text editor. That has a lot of functionality, but also at the same time doesn't do much. Sure. Now, nowadays, the modern text made is sublime text. Yeah. I love it. Totally agreed. Yeah. Adam is trying to be that as well, but I don't think it's doing a very good job. Yeah. There's mixed reviews on Adam. I've tried Adam. I used to be a hardcore sublime text user until somebody showed me specifically for Ruby. Yes. There are some really nice things in them. Well, I guess for everyone, but there is a particular resurgence of tool tooling for Rubyists in Vim, especially if you are a Ruby on Rails developer there, you can run your tests directly inside of your if you don't know anything I'm talking about, by the way, that's totally fine. You can run your test with a key binding inside of them that sends to a T mux pain. All of this is like kind of it's just a nice. Like full development package where there really isn't a good IDE otherwise for Ruby. No offense to Ruby mind. I actually haven't tried Ruby mind, so that could be a good, a good alternative. I know that PyCharm is fantastic. And PyCharm is made by the same people, isn't it? Yeah. Really what those IDs are is there's one ID called idea and there's different plugins for it. So those are just different. Packages that come with the plugin for the different languages. Oh, nice. Yeah. So if you had the main ID, you can just install the PyCharm plugin. Sure. Yeah. And that would probably work perfectly fine. A couple of the things I use that I couldn't couldn't deal without is like Emmet, for example, when I'm writing HTML Emmet is like a must have. And that was the one thing that initially turned me off about Vim. But then I found Emmet Vim. And it's it's. It's actually just a port. What does it do? So it allows you to write basically CSS selectors and then you just tab you tab them out and it'll write out the CSS for you. I used to use some text mate things that did that. They were great, but I've never found one for sublime text. There is one for sure. The old one wasn't called Emmet. They changed the name to Emmet. So Emmet is E-M-M-E-T. Of course, the links for all this stuff will be in the show notes. The show notes are going to be so long for this episode. By the way, but Emmet Emmet.io, I believe, is the site that explains what it does. They also I just found this out. CodePen has Emmet built in. And I said previously that it generates the CSS for you. It actually generates the HTML for you. But now they also have prefixes for generating CSS properties. So, for example, margin right five pixels, you can do MR5 tab and it'll just write out that whole string for you. That's the one I was using. It was like Zen. Coding or something. Yes. Yes. The same project. Oh, it is. OK, cool. Yeah. Did they ever port that over to Sublime? There is an Emmet package for Sublime. So Emmet is Zen coding. Oh, yes. Yes. Yeah. I think I love this stuff. I was addicted to this when I was doing web development. And it even allows you to do like child elements and then you can traverse back up. And you can multiply them. And then as you have it, lets you replace the text. Exactly. And you can do the index. You can. Reference the index of the current items. So if you want to do like list item dash index number, you can do that. I am installing this right now as we speak. I was going to try to make my own base package installer. My old things. I didn't. It's hard. If you're like out of the loop for a couple of years, it's really hard to know the name of a project has changed. Yeah, that's true. I think it would be hard to trace that, too, I think, especially with Zen, because Zen kind of collides with the. Yeah. The Zen Garden, the CSS Zen Garden project. Yeah, it was a bad name. Yeah. And I'm glad they changed it to Emmet, quite honestly. There was another one, too, that had Spark in the name. It was like Spark up or something. I don't remember that one. This is old school stuff for me. Yeah. This is when I was just getting started. Sure. Cool. So we've covered quite a bit of ground here. We've talked about burnout and we've also talked about, you know, approaching approaching code from a more human perspective. And bringing that code, you know, into more intuitive, sensible defaults that allow the 95 percent to approach it a little bit easier. And so I have two more questions for you. These are questions I like to ask every guest that comes on the show. The first one is, if you could spend 30 seconds with every every developer or any developer, what advice would you give them? Advice. That's a tricky question. And it can be about anything. Doesn't have to be code. It's just a matter of time. It's just a matter of time. And if you've ever looked at your own code that you wrote five years ago, you probably hate it. So you want to avoid that situation. Sure. So there's an eloquent way to say to say you write code like. You're writing it for yourself in five years. That's it. There you go. That's that's perfect advice. I don't think I don't think anybody could unless, of course, you are in the middle of a sabbatical in five years. Definitely. And then you're not going to like that code either way. You're just. Kind of ambivalent towards it. All right. I'll use that one. I feel like I could do so much better, though. I'm disappointed in myself. No, that's perfect. The second one is actually the one that people trip up on the most. Great. So the second question is, what question or topic do you wish more people would ask you about? Who? I don't know. People ask me a lot of stuff. Do you ever find yourself wanting to talk about something that that people don't typically join in on that conversation naturally? No. Yes. I do a lot of synthesizer stuff and make music and nobody cares. It's hilarious. Well, you mentioned you're a drummer previously, right? So I don't have an audience. Yeah, I am. Or was. Am. Do you do you play less often now? Significantly. I mean, I used to play for four hours every day for basically 10 years. And now. Were you what kind of drum? What kind of drummer were you? My main focus was snare drum. But I. also played uh i kind of evolved from that to a full kit after a long time okay um if i ever play now i use hand drums like in djembe it's a lot easier very cool yeah it's a lot of fun i go to like a drum circle every once in a while but that's about it it's like you know it's when i moved out of my parents house that i stopped playing because it's you know i had they they lived out in the middle of nowhere and it had a basement you know so you could just wail pretty much yeah you don't really when you live near other people you can't drums are a very hostile instrument no one no one no one enjoys hearing them unfortunately unless unless they're performance yeah for sure i that's that's funny so i have this theory that developers and a couple of other hobbies that overlap so often with developers that there's there's some kind of positive correlation there so many people who come on developer t have have some kind of musical uh background or talent and then uh the other couple of things that are that are similar pilots a lot of times yeah i know a few pilots and then there's uh there was actually like woodworking is another one and there's a couple more that are kind of in the same vein uh another one is actually um martial arts so there's i haven't heard that one yet i've seen quite a few people in each of the different areas of the world that are kind of in the same vein uh and so i think that's a really interesting kind of overlap it's really interesting kind of overlap it'd be fun to do a survey of the different language communities and the different hobbies that that the members of them have and just see how they're different yeah like ruby developers have like 20 times more martial artists than python developers yeah ben oranstein is actually a ruby developer that is into martial arts and he does these really intensive focus sessions uh over the course of a couple months and he's been doing a lot of work on martial arts and where he just kind of nerds out 100 on a particular topic and martial arts was i think it was boxing maybe that he was doing at the time that i interviewed him back last year but he's he he's really interested in it and then i actually just now had david hemp hill he's a developer in texas he was on and he talked about martial arts as well it's really interesting how those things kind of correlate most of the developers i know in fact every developer uh almost every developer at whiteboard is a musician and when i say musician i don't mean that they're like kind of sort of a musician one of them actually has a master's in music i've played guitar for well over 10 years now and uh the ceo of the company has also played guitar for about the same amount of time and i mean in my mind there's no doubt that there's something going on there but i can't quite put my finger on it well when you think about it at least with uh noted out music you know like sheet music reading learning how to interpret that is a lot like learning how to code reading code basically because they're they're very similar they are and and i actually posit a similar theory that there are uh the variables that you look at when you're um when you are playing music there is a setup system that you can work within the parameters are there the theory is available to you so you can study it and become an expert in it and you can learn more about it and you can learn more about it and you can learn more about it and it's all kind of laid out in front of you and that's true for for computer science as well basically the the method of like gaining the skill and acquiring it and letting it grow over time uh is i feel like the curve of that is very similar to software development because if you meet someone who's just learning how to play an instrument for the first time they're like the worst in the in the world right and the same with a brand new programmer you know but you know you kind of learn you learn by listening to other people play and you're like oh my god i'm gonna you learn by uh reading code you know seeing what other people are writing doing experiments practicing uh and then it grows and grows and you have your own uh in the percussion world you know you have your you have your rudiments that you that you're good at and you know the things that the basics that like you repeat over and over and over and over again and you have the same thing in code and i don't know i think they're very similar i think they also have like the the the similar concept of maybe genre so um you have people with different styles and there are ways and that's true for for martial arts as well right um fighting style and you can have playing style and genre and you can have coding style uh opinions can play into it but ultimately you know the system still works underneath it there's like a structure that's underlying that supports your style yeah and the same applies to all art forms you have like photography and and painting and you know all these different mediums to express art and to me software is this really interesting thing because i approach it as an art uh but it's also this extremely technical um precise precision oriented predictable thing so it's kind of this blending of those two worlds and i love it it's really interesting well kenneth this has been a fantastic discussion i appreciate every minute of your time tonight thank you for coming on developer t thank you for having me thank you so much for listening to developer t and to today's episode if you missed out on the first episode of this interview you can go and find that episode at spec.fm it will be in the show notes or you can link directly to it by by browsing the episodes on spec thank you so much for listening and thank you to tiff and i'll see you next time on developer t today's sponsor linode if you are looking for a cloud hosting provider and you like getting free money twenty dollars worth of credit can be applied to your account by using the special link in the show notes or using the code developer t20 at checkout at linode.com thank you again to linode thank you so much for listening to the show once again if you are enjoying developer t make sure you leave a review for us on itunes this is the best way to help other developers just like you find the show and if you don't want to miss out on future episodes of developer t be sure to subscribe in whatever podcasting app you use thank you again for listening and until next time enjoy your tea