This week we welcome Kenneth Reitz (@kennethreitz) as our PyDev of the Week! Kenneth is the developer behind the Requests package, which is one of my favorites. He is also the co-author of the upcoming O’Reilly Book, The Hitchhiker’s Guide to Python. You can visit his website to see what he’s been up to or visit his Github profile to see what projects he’s passionate about. Let’s take some time to get to know him better!
Can you tell us a little about yourself (hobbies, education, etc):
Hi, my name is Kenneth Reitz. I have a deep love for excellent design, synthesizers, cameras, software, and Python. I create a great number of things, but my magnum opus is “Requests: HTTP for Humans”: one of the most widely-used Python packages available today.
Most of my day-time life revolves around Python and serving the Python Community. I am the Language Owner of Python at Heroku, where I wear many different hats. My evenings are typically filled with either more Python, taking and editing photos, producing electronic music, or consuming massive amounts of media (music, TV shows, films, articles, videos, books). I occasionally enjoy playing video games from my childhood.
I have an excellent education, despite dropping out of university (for computer science) within a year of arriving. Best decision I ever made! I consider myself an autodiadict, and do not learn well in a classroom setting.
I found out earlier this year that I have bipolar I disorder, which has been quite an adventure. It is both a blessing and a curse. I’ve learned quite a lot while going through the process of diagnosis, management, and cultivating a self-awareness around this.
Why did you start using Python?
I was first exposed to Python while briefly attending my university, where Python is taught in its introduction to computer science course. The curriculum was unapproachable, and the class was very poorly taught by a long-time Java developer who had barely used the language. I didn’t attend class very often, but I do vividly remember him delivering a half-hour lecture about the evils of using global variables (none of his concerns were valid arguments in Python).
Despite this, I quite liked Python, compared to all of the other languages I had experience with. So, I went off on my own and taught myself Python and never looked back. Python was the first language that I had a beyond–surface-level understanding of, and that informed a lot of my decisions moving forward in my career as a developer.
What other programming languages do you know and which is your favorite?
As an adult, I added PHP, Java, Groovy, C#, and Bash to my arsenal, in addition to Python.
Python is by far my favorite language for doing almost everything. I’m a big fan of well-designed tools, and Python has, in my opinion, the best overall design of any language I have experience with.
I did have a tremendous amount of fun using PHP (and implied HTML/CSS/JS) to build and maintain a plethora of websites for many years. That was like a totally different world though — I wasn’t really programming, but just haphazardly hacking things together for an end result. I haven’t touched PHP in 6+ years now, and I’m thankful that I haven’t worked on any projects in that time frame that it would be great for.
I also find Bash to be tremendously pleasurable to use, but only when it’s the right tool for the job. I get a strange satisfaction from writing bash scripts, since the language is so convoluted and strange. Makes me feel like a hacker. 🙂
What projects are you working on now?
I’m not actively working on any ambitious projects at the moment. I released a significant amount of open source software last month, so I’m taking it slow for a bit while focusing on my other hobbies (music and photography).
I do have one project that’s close to being released called ’em’, a time-saving CLI tool for emoji’s. You can run ‘$ em sparkles cake sparkles’, and it automatically copies ‘✨ 🍰 ✨’ to your clipboard. It also features keyword/aspect search and a few other goodies. I’m looking forward to formally releasing it to the world soon.
Which Python libraries are your favorite (core or 3rd party)?
Well, my most favorite package is Requests, of course!
Otherwise, the two libraries that normally come to mind are Docopt and Parse. Both take very complex problems and solve them in a tremendously elegant way.
Where do you see Python going as a programming language?
I was very concerned for a while about the Python community splitting around Python 2 and Python 3. While we still have a very long way to go, I now feel good about the direction we’re generally headed, and think we’ll get to our destination in one piece.
Ignoring future security implications though, I do still find the concept of using Python 2.7 inevitably very attractive. Python is regularly getting new features (e.g. function annotations, PEP 498) that are of no current use to me, and decrease the simplicity and approachability of the language. In my mind, a language shouldn’t need to be constantly adding new features and evolving to be useful and relevant.
This is just a personal opinion of some new changes. I’m not saying that these features don’t belong in Python, or that the decision to include them was an improper one — just that I would have preferred otherwise, and I’m not intentionally considering the perspectives of other types of Python programmers. Consider this a “soft” opinion 🙂
Is there anything else you’d like to say?
Don’t panic, and always carry a towel.
You can check out my music here:
And my photography here:
Thanks for doing the interview!