Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl 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.

    Visit blogRSSHN submissions
    ProgrammingOpen Source & LinuxHealth
    What HN says

    Commenters 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.

    Stats for nerds
    92HN people shared it
    96linked in comments
    5.3Kstory points
    Aug 2025last shared
    2010people per year2025

    Top posts on HN

    1. 1
      Announcing Pipenv
      2 people · 664 points · first shared 2017 · 162 comments on HN
    2. 2
      Xcode, GCC, and Homebrew
      3 people · 646 points · first shared 2012 · 103 comments on HN
    3. 3
      MentalHealthError: an exception occurred
      6 people · 608 points · first shared 2016 · 186 comments on HN
    4. 4
      Requests, Python HTTP for Humans, reached v1.0
      1 person · 386 points · first shared 2012 · 86 comments on HN
    5. 5
      Maya – Python Datetimes for Humans
      1 person · 350 points · first shared 2016 · 167 comments on HN
    6. 6
      The Reality of Developer Burnout
      1 person · 340 points · first shared 2017 · 176 comments on HN
    7. 7
      The Future of Python HTTP
      3 people · 338 points · first shared 2012 · 53 comments on HN
    8. 8
      On Cybersecurity and Being Targeted
      2 people · 281 points · first shared 2016 · 117 comments on HN
    9. 9
      Why I Left Medium
      2 people · 258 points · first shared 2013 · 167 comments on HN
    10. 10
      On Heroku and 2012
      1 person · 225 points · first shared 2012 · 49 comments on HN

    What HN people wrote when they linked it

    • passiveMay 2017

      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

    • randomname2Feb 2016

      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-narcissistic-partner

      [2] http://www.rawstory.com/2015/12/is-mental-illness-contagious/

      [3] http://www.medicaldaily.com/law-attraction-mental-illness-marriage-375268

    • wolf550eSep 2019

      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

    • Cthulhu_Aug 2016

      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.

    • wkdAug 2017

      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

    • amasadAug 2017

      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

    Related

    Jesse Nollerjessenoller.com50 people

    A lot happens

    Jesse Noller
    Personal · last shared 2020
    Daniel Stenbergdaniel.haxx.se639 people

    “I have toyota corola”

    Daniel Stenberg
    Personal · last shared 2026
    Dustridustri.org56 people

    Horrible edge cases when dealing with music

    Dustri
    Personal · last shared 2026
    Aphyraphyr.com551 people

    Hexing the technical interview (2017)

    Aphyr
    Personal · last shared 2026
    Replit Blogblog.repl.it19 people

    CLUI: Building a Graphical Command Line

    Replit Blog
    Company · last shared 2021
    Damien Katzdamienkatz.net71 people

    The Unreasonable Effectiveness of C

    Damien Katz
    Personal · last shared 2020
    Reinout van Reesreinout.vanrees.org31 people

    PostgreSQL when it is not your job

    Reinout van Rees
    Personal · last shared 2026
    Dave Cheneydave.cheney.net271 people

    Why Slack is inappropriate for open source communications

    Dave Cheney
    Personal · last shared 2026