I am Kenneth Reitz. Ask me anything.

Kenneth Reitz is a well-known software engineer, international keynote speaker, open source advocate, street photographer, and electronic music producer. He is the product owner of Python at Heroku and a fellow at the Python Software Foundation. He is well-known for his many open source software projects, specifically Requests: HTTP for Humans.

Shoot any questions you want Kenneth to answer!

Comments (60)

Add a comment
Vasan Subramanian's photo

How important do you think documentation is for any library? You seem to have done most of the initial documentation yourself, how do you motivate yourself to do that? I find documentation tedious and boring.

Show all replies
Vasan Subramanian's photo

Previous generation techie

I get it. The API is a simplification of underlying complexity, and the documentation is the bridge.

Ryan Mendes's photo

Hi Kenneth,

Nice to see you here!

  • What sort of work do you do at Heroku?
  • What are some of your productivity hacks?
  • Why did you create requests library and how did you come up with the idea?
Kenneth Reitz's photo

Software for Humans

Hello!

I call myself the "Python Overlord" at Heroku. Effectively, there is a team of "language owners" — one for each major language that Heroku, as a platform, officially supports. I am the Language Owner of Python. This includes wearing many hats, from software engineering, to community engagement and support, to customer engagement and support, to marketing, etc.

Productivity hacks? Well, I love Things.app—I've been using it for at least 6 years. About once a month or so, I get a flood of new and exciting ideas that I want to work on, but can't possibly come close to approaching them all. So, I just start entering everything into Things.app blindly. Then, when I'm done, I sort them all out into the nice categories and areas of responsibilities that I have, and my next month or two of inspired ideas is nicely organized. :)

Also, some of my best digital creations start away from the computer—on paper. Blog posts, talks for Python conferences, new Python library ideas. I sit down somewhere away from my machine with my favorite notebook and pen and start hashing out the idea. I can think much clearer without the ever-pressing distraction of a computer in front of me sometimes :)

Why did I create Requests? Well, it was originally a little file called requests.py inside a module that I was working on — an API wrapper for Convore, a hot new chat service that everyone was using at the time. Working the API client, with this submodule called requests.py that I wanted to be perfect, led me to create a seperate repository just for that. I was planning to make many API clients, so I wanted requests to be perfect, and do absolutely everything I'd ever want to with HTTP in Python without any bullshit (e.g. with a great API). And, that's what happened! Much to my surprise, Requests really resonated with people on a level that no other project I had created yet had.

In honor of Convore, and the big influence it had on me, I built an archive website this past year, so make the entire contents of the website browsable:

http://convore-archive.org

Maria Charman's photo

As with everyone, I have come to know about you through Requests. :) I think enough people have thanked you for it now, you might probably be getting tired, haha! But, thanks a lot, anyway! I have a couple of questions for you:

  • What are the tips that you have for an aspiring developer who also wants to release an awesome open source library. Motivation is a feeble thing, what is your secret sauce?

  • What is your work setup, all the gadgets that you use, and geek over?

Kenneth Reitz's photo

Software for Humans

Kenneth Reitz's Tips for Releasing Open Source

  • Communicate clearly and concisely. Have a great, useful README.
  • Don't waste anyone's time.
  • Why should they use your project? It should be immediately obvious.
  • How do they use your project? It should be immediately obvious.
  • How do they install your project? It should be immediately obvious.
  • Be really open about the development, if you're on social media (e.g. Twitter).
  • You have to be excited about what you're building, for others to be excited about it.

SETUP.EXE

I use a 5K iMac for almost everything. I love having a single screen and a single computer for almost everything I do. Over the years, I've had a ton of laptops that I used 100% of the time. Nowadays, I'm more sedentary, and enjoy being fastened to my desk. Of course, I have the Macbooks I need to work from anywhere, but I rarely do.

Gadgets? Oh, I have many. I'll just name a few random ones.

  • Tivoli Audio Model One: a real analog AM/FM radio that sits on my desk.
  • Leica Q: my camera, which I take with me almost everywhere I go.
  • Ricoh GR: secondary camera, fits in my pockets, looks like a toy. Is not a toy.
  • Pilot Vanishing Point: an absolutely fantastically designed fountain pen.
  • Microfiber Cloth: most recent addition. I use it constantly, and keep it in my pocket.
  • Synths: Moog Sub37, Arturia MicroBrute, Korg VolcaKeys, Roland TR-8. I used to have many more synths. I have downsized.
  • Ableton Push 2: I can't play keyboards (I don't know the scales). I can with this. Well.
  • Portable Music Studio: Korg Electribe 2. Google it. It's crazy.
  • Dymo Label Maker: shockingly useful. I use it constantly (including to make the Requests stickers for PyCon this year!). $10.
  • Tektronix 2213A Analog Oscilloscope: a very useful feedback tool for anything electronic (e.g. audio signals).

Thanks for the great question! ✨🍰✨

Derrick K's photo
  • What editor would you recommend to Python developers working on web apps?
  • What kind of work atmosphere do you prefer?
  • What advice would you give to people from other professions shifting to programming career?
Kenneth Reitz's photo

Software for Humans

I recommend everyone use Sublime Text. It's really the best editor available for the type of development that I do.

Some people do prefer IDEs, which can be really fantastic tools at times. If so, I highly recommend PyCharm IDE. I have done a significant amount of work with it in the past (including a lot of Requests development!)

I prefer a work atmosphere where I have tons of personal freedom—for me, that means that I work from home, and I don't have a daily standup. Working in an office every day, or even having a remote call at the same time every day with the team really wears me down and gives me a lot of stress. Offices are okay, but I'm just much more efficient (and, more importantly, happy) at home.

My only advice to people wanting to switch from one profession to programming is this: don't try to be a programmer for any reason other than you love it.

Waqas Shabir's photo

Hi Kenneth, I want you to think retrospectively and share a couple advices for learning/polishing the knowledge and skills to us all the aspiring Python Overlords.

Kenneth Reitz's photo

Software for Humans

For me, I think polishing the "craftsmanship" side of programming Python was all about forming strong opinions — normally influenced by others I respected. I would find people who's code really resonated with me (for example, for me, Armin Ronacher, now a good friend), and I would scan through their codestyle, setup, repo structure, documentation style on GitHub. I'd note what I liked, what I didn't like. Rinse and repeat. Over and over.

Then, of course, while writing code, developing strong informed preferences is equally valuable. There are a lot of Python programmers out there that want everyone to code the exact same way. For example, there's a blog post going around about how isattr() in Python 2 "misbehaves" and should be avoided. Some people read that blog post and start sending pull requests to their favorite projects, well intentioned, to remove the use of this perfectly non-misbehaving function (this happened with Requests actually). These are the type of people that are either following someone they respect too closely without question, or have no opinion of their own at all, and just hop on board where whoever "above" them says to.

Now, there's nothing wrong with that blog post — I just disagree with its tone of what I consider to be effectively soft fear-mongering. And, there's nothing wrong with following such a blog post.

But you should be the one writing those blog posts. But, only if you're ready. Be ready :)