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 Develop a Tea. My name is Jonathan Cutrell 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 Lenot if you are looking for a cloud hosting service and you are familiar with Linux especially this is a great opportunity for you. Lenot we will talk more about what Lenot does and a special offer that they have specifically for developer to 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 talking about the burnout phase when he decided to take a step back from his involvement with open source projects. I want to be clear first it's not like I didn't touch anything it was more like I had a complete disinterest in my open source code and really in code in general I wouldn't code recreationally anymore and open source is for me is mostly recreational. Before it was complete entire centerpiece of my life it was what I miss my hobby it's what I think about all the time I have a lot of other things going on too but it's my primary 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 where I started spending my time doing completely different things and didn't give my open source code a second thought and just had no desired building. I would like merge pull request occasionally and 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 really weird I was really worried about it and then about a month ago I started doing it again I just kind of like clicked 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 getting things merged and all this stuff and it was just so much fun you know I'm like why did I ever stop doing this and 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 size project that's very stable and does it need updates it's fine if it goes stale you know if it's a if it's something that like everybody uses you can't let it go stale that's not acceptable so very thankful I have two excellent contributors to the request project that have been maintaining it and they did an excellent job like they always have and so I definitely recommend that for anyone I built requests myself and built it for myself and then the community caught on and then you know I got really excited because it was my most popular project you know just grew and 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 effectively by yourself yeah it's just not possible so basically what I did was there was a cup there is a couple people that Ian and Corey and they were just naturally commenting on a lot of issues like they be responding to some other people's issues and so like I was I watched them for a little bit and 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 they weren't allowed to touch the code they were just allowed to like deal with all the poor requests and stuff and and handle the people and then over time 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 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 I was I was going to kind of return to some of what you said earlier and specifically I think a lot of people go through this you know we have different cycles 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 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 yeah exactly no I mean like a sabbatical year every seven years I guess that's what I did yeah totally and 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 that this is a this is not proven science by any means but this is my my theory is that we have 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 of 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 it one day you're like man I just really don't feel like doing that right and because so much what we want and so much of what we what we strive for when we are coding is kind of this Nirvana like since 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 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 so I was really worried about it but I don't really know what I did to snap out of it if you will it 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 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 area 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 that the the ability is still there and the interest is still like that that 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 experienced 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 I like I got to do this right yeah yeah 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 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 to Python had had an LIF statement and now because I was looking at it's 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've 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 writing bike basically it's like muscle memory almost yeah like yeah but in this is also like engagement with social media and the open source world too I is something that I haven't had hadn'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 going to 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 copying 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 like I'm gaining back all my old abilities 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 them and I've done a lot of stuff to customize them on my computer one of the simple things I've done is I remapped caps lock to control is a really common thing for them 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 lock 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 yeah well self-taught typist you know yeah sure that makes sense I guess yeah is 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'm actually meant so I mentioned them I'm interested to know what edited or IDE do Python Pythonistas is that correct that is an accepted term okay Python developer is probably just more politically correct statement we'll go with that what what editors kind of the popular editor for Python Developer Text editors that are the one that I see everyone using a sublime text and that's what I personally use but people use all kinds of stuff personally I have a no-vim 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 like 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 vi that I had back then but same basic concept today's episode is probably 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 there are eight data centers and plan start at only $10 a month you can get a server running in less than a minute and they have hourly billing with a monthly cap on all plans and add on services like backups or node balancers and long view then you can have VMs for full control you can run Docker containers you have encrypted disks VPNs etc you can even run a private get 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 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 bill because linode has provided a very special deal for Developer Tealisteners if you use the code Developer Tea 20 at checkout you'll get a $20 credit immediately applied to your account that's $20 totally for free just because you use the code Developer Tea 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.fm this link and every other link from today's episode can be found in those 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 gonna 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 the 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 the 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 oh you know the minimize and maximize buttons gray or colored that's it that's all you can do right that's the options yeah yeah you can go through the entire preferences panel on macOS in like I don't know 10 minutes and you're done exactly it's it my like I really like having that constraint it helps me yeah do what I do better because otherwise I'm gonna change everything right yeah and there are some things that I still I would say that I'm actually pretty conservative about about my them 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 emax users yeah I don't I don't I can't even talk about emax because I've never used it either 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 and order to be able to successfully use them you know 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 plus that thing again where it's like this is fun right and they probably find it fun to do that well I'm at one person who used there's a an evil mode I guess is what it's called yeah it's it's basically emax mixed with them oh I think it's a portmanteau the evil evil 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 them them are available in any max because why not right I mean if you if you write lists then you can do whatever you want to with the emax 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 subclips 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 the clips which has a pie dev in it which is really great so the net 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 OSX it it really like I don't know there's just something really pleasant about just a really nice text editor that has a lot of functionality but also at the same time doesn't do much sure now it nowadays the modern text made is sublime text yeah totally create 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 rubius there are some really nice things in them well I guess for everyone but there is a a particular resurgence of tool tooling for rubius in them especially if you are a rubion rails developer there you can run your test 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 teamux pane and 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 mine I actually haven't tried Ruby mine so that could be a good good alternative I know that PyTcharm is fantastic and PyTcharm is made by the same people isn't it yeah really what those ideas are is there's one IDE 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 IDE you can just install the PyTcharm plugin sure yeah and that 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 them but then I found Emmet them and 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 open wasn't called Emmet they changed the name to Emmet so Emmet is EMMET 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.io I believe is the site that explains what it does they also I just found this out code pin 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 write five pixels you can do MR5 tab and it'll just write out that whole string for you. At the one I was using it was like zen coding or something yes yes this same project oh it is okay cool yeah did they ever port that over to sublime there is an Emmet package for sublime so Emmet is Zencoding yes yeah I think I love this stuff I was addicted to this and I was doing web development 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 do have it let's replace the text exactly and you can do the index you can reference the index of the current item 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 business my old good things that it is hot if you're like out of the loop for a couple of years it's really hard to know the name of a project is 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 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% to approach it a little bit easier and so I have two more questions for you okay these are questions that 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 oriented if you've ever looked at your own code that you wrote five years ago you probably ate it so you want to avoid that situation sure so there's an eloquent way to say to say a right 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 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 know people ask me a lot of stuff do you ever find yourself wanting to talk about something that that people don't typically you know join in on that conversation naturally yes I do a lot of synthesizer stuff and make music and nobody cares it's hilarious well you mentioned your 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 where you what kind of drum what kind of drummer were you my main focus was snare drum but I also played a kind of evolved from that to the full kit after a long time okay if I ever play now I use hand drums like in jambay 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 I had they lived out in the middle of nowhere and it had a basement you know so you could just whale 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's developers and a couple of other hobbies that overlap so often with Developer That there's there's some kind of positive correlation there so many people who come on Developer Teahave some kind of musical background or talent and then there are there a couple of things that are that are similar pilots a lot of times yeah I know a few pilots and then there's there was actually like woodworking is another one and there's a couple more that are kind of in the same vein another one is actually martial arts so there's I've seen quite a few people in each of those things that are developers it's a really interesting kind of overlap you'd be kind of 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 if you developers have like 20 times more martial artists than Python developers yeah been been orange stain is actually a Ruby developer that is into martial arts and he does these really intensive focus sessions over the course of a couple months 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's really interested in it and then I actually just now had David Hempel 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 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 a guitar for well over 10 years now and 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 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 as similar theory that there are the variables that you look at when you were when you are playing music there's a set up 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 it's all kind of laid out in front of you and that's true for computer science as well basically the method of like gain the skill acquiring it and letting it grow over time 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 the brand new programmer you know but you know you kind of learn you learn by listening to other people play you learn by what reading code you know seeing other people are writing doing experiments practicing and then it grows and grows and you have your own 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 they 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 you have people with different styles and there are ways and that's true for martial arts as well right fighting style and you can have playing style and genre and you can have coding style 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 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 but it's also this extremely technical precise precision oriented predictable thing so it's kind of the 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 Tea thank you for having me thank you so much for listening to Developer Tea 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 today's sponsor Linode if you're looking for a cloud hosting provider and you like getting free money 20 dollars worth of credit can be applied to your account by using the special link in the show notes or using the code Developer Tea20 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 Teaake 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 Teabe sure to subscribe in whatever podcasting app you use thank you again for listening and until next time enjoy your tea