K
Kenneth Reitz
kennethreitz.org · Personal blog · on HN since 2009
Kenneth Reitz is a Python developer who created Requests and Pipenv and writes about tooling, open source burnout, and mental health.
What HN saysCommenters discuss Pipenv's design choices like project-local environments, and HN links his essays and the controversy around his personal writing and a related apology.
92HN people shared it
32linked it in comments
96stories submitted
5.3Kstory points
2 months agolast shared
2009people per year2026
Most-shared posts
- 1A Better Pip Workflow9 people · 200 points · first shared 2016 · 84 comments on HN
- 2MentalHealthError: an exception occurred6 people · 608 points · first shared 2016 · 186 comments on HN
- 3Open Source Gave Me Everything Until I Had Nothing Left to Give5 people · 13 points · first shared 2026 · discussion on HN
- 4Static Sites with Heroku4 people · 3 points · first shared 2012 · discussion on HN
- 5Xcode, GCC, and Homebrew3 people · 646 points · first shared 2012 · 103 comments on HN
- 6The Future of Python HTTP3 people · 338 points · first shared 2012 · 53 comments on HN
- 7Homepage3 people · first shared 2010
- 8Announcing Pipenv2 people · 664 points · first shared 2017 · 162 comments on HN
- 9On Cybersecurity and Being Targeted2 people · 281 points · first shared 2016 · 117 comments on HN
- 10Why I Left Medium2 people · 258 points · first shared 2013 · 167 comments on HN
- 11How I Develop Things and Why2 people · 207 points · first shared 2012 · 33 comments on HN
- 12Pipenv: One Year Later and a Call for Help2 people · 123 points · first shared 2018 · 16 comments on HN
- 13Introducing Flask-Sockets2 people · 63 points · first shared 2013 · 18 comments on HN
- 14If I could amend PEP 82 people · 48 points · first shared 2017 · 66 comments on HN
- 15Be Cordial or Be on Your Way2 people · 31 points · first shared 2012 · 30 comments on HN
What HN people wrote when they linked it
amasad · 2017-08-31
It's the least shitty of all other designs. It picked the best design decisions from existing package managers. By default it is project local (as opposed to global like what rubygems, pip, and others are), it's recursive and largely reproducible (fully reproducible using lock files). The resolution algorithm is also deterministic and simple, you can implement it in an hour.
Although other languages are catching up they have to do it as add-ons or third party tools -- for example python pipenv https://www.kennethreitz.org/essays/announcing-pipenv
afarrell · 2016-02-27
I also suspect that this is the same person mentioned here: http://www.kennethreitz.org/essays/purging-the-unexpected-negative-a-n…
For many guys, "crazy chick" is the only language they have to describe an abusive relationship. It's not the most helpful phrase, so it's best replaced with a clearer one.
cbarber · 2013-02-15
Fixed. Great point.
Btw - the site is being served statically though Heroku [1]. This is the first time I have tried this out, and it worked fantastically.
[1] http://kennethreitz.org/exposures/static-sites-on-heroku-cedar
espeed · 2012-05-06
Don't mess with "crappy free hosts" -- just run it on a free Heroku dyno (http://www.heroku.com/pricing). Kenneth (http://kennethreitz.com) shows you can get good performance with Flask on the free dyno (http://flask.pocoo.org/mailinglist/archive/2012/2/22/flask-on-heroku-%…
bryanh · 2011-12-14
Just in case you want something more full featured (think IP, COOKIES, POST, GZIP, STREAMS, etc...) check out http://httpbin.org/ from the same guy that brought sanity to http requests in Python: http://kennethreitz.com/
kenneth_reitz · 2010-10-26
I'm writing a new todo application that runs and syncs on ALL platforms: Fin.
http://kennethreitz.com
passive · 2017-05-23
I would recommend Python 3 for sure. I just use the installers from https://www.python.org/ and don't tend to have any problems.
I prefer lightweight tools, so I use Visual Studio Code. It won't hold your hand, but neither will it get in your way.
When working on projects, get in the habit of using virtualenvs. It's a small amount of overhead, but will save you a ton of frustration in the long run. A primer on windows:
From project directory, initialize it:
> python -m venv .env
(I put my virtualenvs in .env out of habit. Virtualenvwrapper, itself a useful addition for managing virtualenvs, puts them in your home directory, which can be fine too.)
Activate it:
> .env\Scripts\activate.bat
Use "pip" to install your dependencies. Also use "pip freeze" to record those dependencies for installations elsewhere. I'm currently following this for dependency management: https://www.kennethreitz.org/essays/a-better-pip-workflow
4ggr0 · 2025-08-28
There's an "apology"/response from Keith.
https://kennethreitz.org/essays/2023-01-an_overdue_apology
"i'm sorry, hope we can continue working together in the future" seems like a very mild response to allegedly fumbling 30k, but what do i know...
> the asynchronous landscape within Python's ecosystem failed to meet my expectations, leading me to conclude that Requests should retain its synchronous nature.
i concluded that the ecosystem does things differently than my personal standards, so i'm gonna revert and keep the money. nice.
untech · 2024-10-13
I think it could be useful to read: https://kennethreitz.org/essays/2016/mentalhealtherror_an_exception_oc…
wolf550e · 2019-09-12
I use separate requirements-to-freeze.txt and requirements.txt, so that I maintain only list of direct dependencies (no transitive dependencies) and only pin versions when I know the code won't work with the latest version, but pip freeze creates a file like package lock with all the dependencies versioned so I can recreate the exact environment again without needing to store a docker image of it or something like that. See https://www.kennethreitz.org/essays/a-better-pip-workflow
Needing to name the requirements file and needing to activate venv are not pain points I feel.
Wrapping native libraries and not invoking a C compiler at package install time means some trade-offs. https://cffi.readthedocs.io/en/latest/cdef.html
mellosouls · 2019-07-17
Earlier response to the vorpus criticism (presumably):
https://www.kennethreitz.org/essays/requests3-update
smnrchrds · 2019-05-04
Interestingly, Pipenv is no longer in the list of projects on his website:
https://www.kennethreitz.org/projects
What that means, I don't know.
jdorfman · 2019-05-04
He has been pretty transparent with his bipolar disorder. Speaking from experience mania drastically changes your personality.
https://www.kennethreitz.org/essays/mentalhealtherror-an-exception-occ…
toyg · 2018-12-06
Reitz has self-confessed manic episodes due to bipolar disorder:
https://www.kennethreitz.org/essays/mentalhealtherror-an-exception-occ…
https://journal.kennethreitz.org/entry/on-mania
sciurus · 2018-07-25
The idea is described at https://www.kennethreitz.org/essays/a-better-pip-workflow
cbzehner · 2018-02-09
Pipenv? See a recent post by (what I assume) is one of the maintainers. https://www.kennethreitz.org/essays/pipenv-one-year-later-a-call-for-h…
wkd · 2017-08-25
We use different files for "soft" requirements, dev/test requirements, and a freeze.txt containing all production requirements and then we default to installing from freeze.txt but can update from the other files. It's similar to this[1] but generating the freeze.txt in a temporary virtualenv.
I've started using an generated offline cache and PIP_FIND_LINKS to remove the dependency of pypi for known installs in one project as well, will be interesting to see if it turns out to be a good idea or not.
[1]: https://www.kennethreitz.org/essays/a-better-pip-workflow
mrsmn · 2017-01-30
David Beazley : http://www.dabeaz.com/
Kenneth Reitz : https://www.kennethreitz.org/
Armin Ronacher : http://lucumr.pocoo.org/
Julien Danjou : https://julien.danjou.info/
Hynek Schlawack : https://hynek.me/
Donald Stufft : https://caremad.io/
gourneau · 2017-01-23
Hey other Reitz fans. Make sure to check out his newish podcast series: https://www.kennethreitz.org/import-this/
Cthulhu_ · 2016-08-25
One can argue semantics whether you call it a UI or a CLI, but hey. There's a number of GUI clients out there that depending on your criteria could be considered better. They're usually not as powerful as the CLI client though, and if they are, features like accessing the reflog are hard to find and use. There's also a few alternative CLIs out there, I've just done a quick googling and came across http://www.saintsjd.com/2012/01/a-better-ui-for-git/ and http://www.kennethreitz.org/essays/legit-the-sexy-git-cli.
Personally I prefer the CLI, it's the only tool that I can rely on to do what I tell it to do and to know what's happening. But it takes time and effort to get used to it.
Rafert · 2016-08-15
For those out of the loop: http://www.kennethreitz.org/essays/on-cybersecurity-and-being-targeted
welder · 2016-05-09
Same here, needed this for a long time. I wasn't going to keep a duplicate requirements-to-freeze.txt file around [1] so created this tool.
[1] http://www.kennethreitz.org/essays/a-better-pip-workflow
randomname2 · 2016-02-27
Interestingly the author states his symptoms started through a combination of lack of sleep and dating a disturbed individual [1].
Such a diagnosis is possibly offensive, ableist and unscientific, however there are many such anecdotal reports of people with (developing or fully developed) mental illness pairing up.
While there is little evidence of such pairing up being a cause (i.e. some sort of "contagiousness", as explored in [2]), there is some evidence that people suffering from mental illness (including personality disorders) can be attracted to one another [3].
[1] http://www.kennethreitz.org/essays/purging-the-unexpected-negative-a-n…
[2] http://www.rawstory.com/2015/12/is-mental-illness-contagious/
[3] http://www.medicaldaily.com/law-attraction-mental-illness-marriage-375…
temuze · 2014-03-21
Yeah, there's no accepted way to do Websockets in Python. I'd say Autobahn is probably the closest we have to something like that.
That said, it isn't too difficult to hack something together. Kenneth Reitz did a nice little project for Flash websockets that I like:
http://kennethreitz.org/introducing-flask-sockets/
Python 3.4 has that nice ayncio module built in. I'm hoping it'll be a big draw for people into Python 3.
dangoldin · 2013-09-08
There's also http://kennethreitz.org/why-i-left-medium/
Not on Medium but relevant to this discussion.
philip1209 · 2012-10-20
I'm not familiar - if there's a better way, please let me know. If you just try to serve an index.html, it doesn't work.
http://kennethreitz.com/static-sites-on-heroku-cedar.html
stock_toaster · 2012-06-11
I watched the intro on udemy. Very cool.
You talked about installing xcode. For newer osx versions, people may be able to install just the [command line tools for xcode][1], which is only about 170MB or so. It might save some people from waiting around for the full xcode.
[1]: http://kennethreitz.com/xcode-gcc-and-homebrew.html
johtso · 2012-06-03
This is a much cleaner way of serving static sites on Heroku: http://kennethreitz.com/static-sites-on-heroku-cedar.html
Using this technique you can even use .htaccess files.
arthurbrown · 2012-05-13
I'd guess this impetus for this post came about after this meeting at pycon
http://kennethreitz.com/the-future-of-python-http.html
redbeard0x0a · 2012-02-16
It looks like Apple worked with Kenneth Reitz (the guy who created that OSX-GCC-Installer on github) and it seems that the Command Line Tools for Xcode download from Apple is a result of that conversation. It also looks as if homebrew is going to support compilation using the official package from Apple. Read more: http://kennethreitz.com/xcode-gcc-and-homebrew.html