Work in progress: 181,232 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #3527

P

Paul Ganssle

Personal blog · blog.ganssle.ioprogramming

Paul Ganssle's personal blog at blog.ganssle.io covers programming. Since 2018, 22 different Hacker News readers have linked it 26 times, most often “You shouldn't invoke setup.py directly”. No feed was found, so read it on the site itself.

No feed foundVisit the blog
26mentions?
22HN people?
2018–2025first – last linked?
Links on Hacker News per year · peak 6 in 2023

Too few sampled comments (11) to say how often HN recommends it.?

Why HN links it

HN readers link Paul Ganssle's posts on Python datetime pitfalls, such as deprecating utcnow and naive local datetimes, and on moving away from setup.py in Python packaging.

Summarised by Claude from a sample of 11 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

Most-linked posts?

  1. You shouldn't invoke setup.py directly
    6 people · 7 mentions · first linked 2021-10-19
  2. Stop using utcnow and utcfromtimestamp
    6 people · 6 mentions · first linked 2019-11-05
  3. Pytz: The Fastest Footgun in the West
    5 people · 5 mentions · first linked 2018-03-20
  4. /articles/2022/04/naive-local-datetimes.html
    2 people · 3 mentions · first linked 2022-10-09

What Hacker News says?

  1. > If I wanted to package my Python stuff, though, I'm getting confused. Is it now setup.py or pyproject.toml? Or maybe both? What if I need to support an older Python version as seen in some old-but-still-supported Linux distributions? Your Python version is irrelevant, as long as your tools and code both run under that version. The current ecosystem standard is to move in lock-step with the Python versions that the…

    Comment linking /articles/2021/10/setup-py-deprecated.html

    on “PYX: The next step in Python packaging”
  2. Submitted Stop using utcnow and utcfromtimestamp as a story · 140 points

    HN discussion
  3. https://blog.ganssle.io/articles/2019/11/utcnow.html

    Comment linking /articles/2019/11/utcnow.html

    on “Best Practices for Working with Configuration in Python Applications”
  4. Submitted You shouldn't invoke setup.py directly as a story · 139 points

    HN discussion
  5. It took me some effort to understand the issue here, so an alternative explanation in case it helps someone. First, the part that's independent of programming language. You may want to read about absolute time and civil time (e.g. from https://abseil.io/docs/cpp/guides/time ) but if you don't, in short: “civil time” refers to something like “2019 May 26 at 2:45 pm in New York City” (or “in the America/New_York time…

    Comment linking /articles/2018/03/pytz-fastest-footgun.html

    on “What the Royal Astronomical Society in 1884 Tells Us About Python Today”
  6. Submitted Subtests in Python as a story · 2 points

    HN discussion
  7. pganssle · 2022-10-09Recommends
    As mentioned in the article, this was a deliberate change in Python 3. If you read this article: https://blog.ganssle.io/articles/2022/04/naive-local-datetim... you will see why this actually makes quite a bit of sense, given the design constraints the authors were working with.

    Comment linking /articles/2022/04/naive-local-datetimes.html

    on “Stop using utcnow and utcfromtimestamp”
  8. Submitted Xfail and Code Coverage as a story · 2 points

    HN discussion
  9. (2019) A follow up from April 2022: https://blog.ganssle.io/articles/2022/04/naive-local-datetim...

    Comment linking /articles/2022/04/naive-local-datetimes.html

    on “Stop using utcnow and utcfromtimestamp”
  10. Submitted A pseudo-TDD workflow using expected failures as a story · 2 points

    HN discussion
  11. dharmab · 2021-11-19Recommends
    Poetry still uses setuptools! It makes it a lot easier for mortals. This is the blog post that convinced me to switch away from my old build system: https://blog.ganssle.io/articles/2021/10/setup-py-deprecated...

    Comment linking /articles/2021/10/setup-py-deprecated.html

    on “Why does a = a[0] = [0] create a self-referential list in Python?”
  12. Submitted Stop using utcnow and utcfromtimestamp (2019) as a story · 2 points

    HN discussion
  13. What do you mean? You type `pip install west` and a binary will appear in `~/.local/bin/west`. This directory needs to be part of your $PATH variable. Done. Using virtual envs or pipx or poetry or whatever are non-standard. Packaging Python projects, however, ... don't get me started on the whole `setup.py`, `setup.cfg`, `pyproject.toml` debacle. This article has more information about it, but the fact that this is…

    Comment linking /articles/2021/10/setup-py-deprecated.html

    on “Ask HN: Why is Python package management still a dumpster fire?”
  14. Submitted Stop using utcnow and utcfromtimestamp in Python as a story · 2 points

    HN discussion
  15. talboren · 2023-11-19Recommends
    Paul Ganssle released a great article[1] explaining why you shouldn't use utcnow in 2019. [1] https://blog.ganssle.io/articles/2019/11/utcnow.html

    Comment linking /articles/2019/11/utcnow.html

    on “It's Time for a Change: Datetime.utcnow() Is Now Deprecated”
  16. Submitted Semantics of timezone-aware datetime arithmetic as a story · 1 points

    HN discussion
  17. Clickable footnotes: [0]: https://pypi.org/project/stringcase [1]: https://pypistats.org/packages/stringcase [2]: https://pradyunsg.me/blog/2022/12/31/wheels-are-faster-pure-... [3]: https://github.com/pypa/setuptools/issues/4910 [4]: https://github.com/zahlman/stringcase-new [5]: https://pypi.org/project/stringcase-new [6]: https://github.com/dmlls/python-casefy [7]: https://pypistats.org/packages/casefy [8]: https…

    Comment linking /articles/2021/10/setup-py-deprecated.html

    on “Tell HN: I forked and republished a popular, abandoned Python library”
  18. Submitted You shouldn't invoke setup.py directly as a story · 1 points

    HN discussion
  19. > Isn't assigning out what all made things fast presumptive without benchmarks? We also have the benchmark of "pip now vs. pip years ago". That has to be controlled for pip version and Python version, but the former hasn't seen a lot of changes that are relevant for most cases, as far as I can tell. > This also doesn't cover subtle things. Unsure if rkyv is being used to reduce the number of times that TOML is parse…

    Comment linking /articles/2021/10/setup-py-deprecated.html

    on “How uv got so fast”
  20. Submitted Pytz: The Fastest Footgun in the West as a story · 1 points

    HN discussion
  21. Actually, naïve times are considered aware in the system time zone. There's no good way to create a `tzinfo` object that behaves like "the system time zone" and doesn't have unfortunate consequences. See this article: https://blog.ganssle.io/articles/2022/04/naive-local-datetim... It's not an ideal situation, but given path dependence I don't think it can be improved much from here.

    Comment linking /articles/2022/04/naive-local-datetimes.html

    on “Pytz: The Fastest Footgun in the West”
  22. Submitted Attractive Nuisances in Software Design as a story · 1 points

    HN discussion
  23. Submitted Pytz: The Fastest Footgun in the West (2018) as a story · 1 points

    HN discussion
  24. Submitted Pytz: The Fastest Footgun in the West as a story · 1 points

    HN discussion
  25. Submitted Stop Using Utcnow and Utcfromtimestamp as a story · 1 points

    HN discussion
  26. Submitted Pytz: The Fastest Footgun in the West (or why switch to dateutil in Python 3.6) as a story · 1 points

    HN discussion

Search all of HN for blog.ganssle.io

Linked by the same people?