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

    Brett Cannon

    snarky.ca · Personal blog · on HN since 2015

    Brett Cannon, a Python core developer, writes about Python's history, language internals, packaging tools, and the social side of open source maintenance.

    Visit blogRSSHN submissions
    ProgrammingLanguages & CompilersOpen Source & Linux
    What HN says

    Commenters recommend his Syntactic Sugar series for how Python features work and cite his posts on open source maintainer burnout and expectations.

    Stats for nerds
    100HN people shared it
    157linked in comments
    2.6Kstory points
    Dec 2023last shared
    2016people per year2023

    Top posts on HN

    1. 1
      Why Python 3 Exists
      7 people · 420 points · first shared 2015 · 266 comments on HN
    2. 2
      Why to use ‘python -m pip’
      6 people · 266 points · first shared 2019 · 135 comments on HN
    3. 3
      What is the core of the Python programming language?
      4 people · 237 points · first shared 2020 · 129 comments on HN
    4. 4
      Taking a month off from OSS volunteering
      4 people · 237 points · first shared 2016 · 179 comments on HN
    5. 5
      What the Heck Is Pyproject.toml?
      4 people · 133 points · first shared 2020 · 194 comments on HN
    6. 6
      Why it took 4 years to get a lock files specification
      2 people · 125 points · first shared 2025 · 93 comments on HN
    7. 7
      How I stay happy making open source software
      3 people · 117 points · first shared 2015 · 34 comments on HN
    8. 8
      Where are we in the Python 3 transition?
      3 people · 117 points · first shared 2016 · 132 comments on HN
    9. 9
      Selecting a programming language can be a form of premature optimization
      2 people · 91 points · first shared 2021 · 309 comments on HN
    10. 10
      The history behind the decision to move Python to GitHub
      13 people · 84 points · first shared 2016 · 27 comments on HN

    What HN people wrote when they linked it

    • urygaNov 2019

      the coroutines are run sequentially by an "event loop"/"coroutine runner" that wakes them up and lets them run for a bit when appropriate, kind of like an OS's scheduler (on a single core machine). if the runner is the OS, `await foo(..)` is kind of like a syscall, where the coroutine is suspended and control is handed back to the runner to do whatever is requested.

      i guess the difference from normal threads (preemptive multitasking) is that you explicitly mark your "yield points" – places where your code gives control back to the runner – with `await` (cooperative multitasking). some believe that this makes async stuff easier to reason about, since in theory you can see the points where stuff might happen concurrently

      honestly i'm out of my depth re: async IO, haven't used it all that much :/ but if you're comfortable with python and want to dig into the mechanism of async/await, i really recommend this article: https://snarky.ca/how-the-heck-does-async-await-work-in-python-3-5/

      it's long, but i found it very helpful – it actually explains how it all works without handwaviness. at the end the author implements a toy "event loop" that can run a few timers concurrently, which really made it click for me!

    • cx1000Feb 2017

      Sounds to me like you don't understand how git works. If GitHub shuts down, people will just use a different server to host their repository, such as gitlab.

      The guy in charge of making the decision weighed the fact that it's closed source, and it still won.

      > But to me, the development process is more important than worrying whether a cloud-based service publishes its source code... This is especially not a worry as GitHub is not a walled garden; its extensive SDK allows for downloading any and all data that goes into the platform.

      In summary, his reasons were: github has become a social network of open source devs; gitlab has no killer features github doesn't; and Guido prefers github

      https://snarky.ca/the-history-behind-the-decision-to-move-python-to-github/

    • epistasisAug 2020

      I 100% agree on this. But it's been pretty hilarious on how obstinate tool makers are about changing to Python's new pyproject.toml [1]

      Python packaging is a bit of a mess already, so when I recently started a new small package I wanted to choose tooling that would not clutter, but a fair amount of tool makers were reluctant to allow code into their repo that would use the unified toml rather than a ton of separate file.

      .config is probably a better solution than a single top level toml, IMHO, but far more important is doing something unified rather than continuing the pollution of the top-level namespace, which merely obscures the project structure.

      [1] https://snarky.ca/what-the-heck-is-pyproject-toml/

    • jonawesomegreenFeb 2019

      Open source is hard. Being a maintainer is hard. I've seen a lot of good people burn themselves out trying to maintain / contribute to open source software.

      I think this is a great blog post / talk (not mine) about the topic:
      https://snarky.ca/setting-expectations-for-open-source-participation/

      "Here's a bit of real talk for people: I think working in OSS has made me more bitter and short-temperated".

      Best wishes to the maintainer, hopefully time gives some perspective on the problems in the community and perhaps some ways forward.

    • brettcannonApr 2020

      People would love to see that happen, but it requires time and effort from people to build such a solution. Some people are trying, e.g. https://pyoxidizer.readthedocs.io/ and https://briefcase.readthedocs.io/ as well as stalwarts like PyInstaller and such.

      But as I said, it takes time and effort and there's only so much of that when it's being done by volunteers in their evenings and weekends.

      And as an aside, I would suggest teaching them `python -m pip` over `pip3`: https://snarky.ca/why-you-should-use-python-m-pip/.

    • julienpalardSep 2022

      It's a good habit which ensures pip runs with the same interpreter as your `python` command.

      One example (but there's many): On Windows a `pip install --upgrade pip` can't work as the OS would lock the `pip` executable, while a `python -m pip install --upgrade pip` works as the OS would lock python instead.

      I also encontered environments (CI runners, things like this) with `python` and pip installed, installed but no `pip` shortcut.

      More: https://snarky.ca/why-you-should-use-python-m-pip/

    Related

    Python Software Foundation Blogpyfound.blogspot.com147 people

    PSF has withdrawn $1.5M proposal to US Government grant program

    Python Software Foundation Blog
    Company · last shared 2026
    PyPy Blogpypy.org183 people

    PyPy has moved to Git, GitHub

    PyPy Blog
    Company · last shared 2026
    Łukasz Langalukasz.langa.pl16 people

    Notes from the Meeting on Python GIL Removal Between Python Core and Sam Gross

    Łukasz Langa
    Personal · last shared 2025
    Caremadcaremad.io42 people

    Powering the Python Package Index

    Caremad
    Personal · last shared 2026
    Andrew Moffatamoffat.github.io50 people

    Show HN: Reimagine the File System

    Andrew Moffat
    Personal · last shared 2026
    Cal Patersoncalpaterson.com102 people

    Firefox usage is down despite Mozilla's top exec pay going up

    Cal Paterson
    Personal · last shared 2026
    Dustin Ingramdustingram.com16 people

    Powering the Python Package Index in 2021

    Dustin Ingram
    Personal · last shared 2025
    Chris Warrickchriswarrick.com19 people

    Pipenv: promises a lot, delivers very little

    Chris Warrick
    Personal · last shared 2025