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

    Itamar Turner-Trauring

    pythonspeed.com · Personal blog · on HN since 2019

    Itamar Turner-Trauring writes about Python performance, Docker packaging, and data processing, aimed at developers shipping Python in production.

    Visit blogRSSHN submissions
    ProgrammingSystems & PerformanceDevOps & Cloud
    What HN says

    HN commenters call it an excellent resource for Python in containers and data science, and cite its posts on Alpine being slow for Python images.

    Stats for nerds
    112HN people shared it
    349linked in comments
    4.4Kstory points
    Aug 2026last shared
    2019people per year2026

    Top posts on HN

    1. 1
      “Let’s use Kubernetes.” Now you have eight problems
      3 people · 731 points · first shared 2020 · 469 comments on HN
    2. 2
      When your data doesn’t fit in memory: the basic techniques
      1 person · 638 points · first shared 2019 · 259 comments on HN
    3. 3
      Simple Dockerfile examples are often broken by default
      2 people · 471 points · first shared 2019 · 157 comments on HN
    4. 4
      Alpine makes Python Docker builds slower, and images larger
      13 people · 377 points · first shared 2020 · 148 comments on HN
    5. 5
      Copying data is wasteful, mutating data is dangerous
      2 people · 232 points · first shared 2020 · 153 comments on HN
    6. 6
      A deep dive into the official Docker image for Python
      3 people · 193 points · first shared 2020 · 61 comments on HN
    7. 7
      Faster Python calculations with Numba
      2 people · 151 points · first shared 2022 · 66 comments on HN
    8. 8
      Loading Pydantic models from JSON without running out of memory
      1 person · 134 points · first shared 2025 · 45 comments on HN
    9. 9
      Measuring memory usage in Python: it’s tricky
      2 people · 122 points · first shared 2021 · 14 comments on HN
    10. 10
      Loading NumPy arrays from disk: mmap() vs. Zarr/HDF5
      1 person · 119 points · first shared 2020 · 52 comments on HN

    What HN people wrote when they linked it

    • mikepurvisJan 2023

      Just to clarify for anyone who isn't aware, the "compiling issues", at least historically, have been that that Alpine uses musl, and PyPI's manylinux wheels are built against old glibc versions. So stuff like numpy that would trivially and quickly install from whl on glibc distros (like a bare-bones Ubuntu image) trigger compilations and the installation of build-only dependencies on Alpine.

      That said, it looks like as of late-2021, at least some projects are offering musllinux wheels as well, per the discussion here: https://github.com/pypa/manylinux/issues/37 (not numpy, though: https://pypi.org/project/numpy/#files)

      Here's a longer version of the above, originally published in 2020, but with an update regarding PEP 656: https://pythonspeed.com/articles/alpine-docker-python/

    • btillyDec 2021

      Sorry, but we did all of that 20 years ago, and those approaches remain a lot simpler for basic use cases. You know, like serving 100k dynamic pages/hour database backed site. (That's what I was doing 20 years ago, how about you?)

      See https://pythonspeed.com/articles/dont-need-kubernetes/ for some of the reasons NOT to use Kubernetes for this.

      With, of course, a giant exception for two cases. The first is, as with the author, if the purpose of using Kubernetes is to learn how to use Kubernetes. The second is if you are aware of the tradeoffs and have specific reason to say that Kubernetes really is appropriate for your circumstance.

      And if you think that Kubernetes is always the right approach, then you clearly are NOT aware of the tradeoffs.

    • pellaJun 2024

      imho:

      A false positive CVE list is an issue elsewhere as well, and it's important to understand that there's not much a Docker Postgres maintainer can do if the problem lies in the Debian or Ubuntu package and isn't getting fixed for some reason.

      https://github.com/docker-library/faq#why-does-my-security-scanner-show-that-an-image-has-cves

      It's also advisable not to use the default settings:

      https://pythonspeed.com/articles/docker-security-scanner/ "trivy --ignore-unfixed <image>"

      Of course, it is advisable for the image maintainer to rebuild the Docker image weekly or bi-weekly to ensure all recent patches are included.

      However, for those who prioritize security, it is best to build the image themselves to guarantee up-to-date packages.

    • calpatersonJun 2021

      Using alpine with Python in production is usually a mistake. Python is considerably slower with musl libc than with glibc and on top of that no one is providing built wheels for musl-based platforms so you need to drag in the entire buildchain to package most projects. Who wants to build numpy from scratch as part of their build pipeline? And having a C compiler present is not great as it allows exploits to escalate their seriousness considerably.

      Anyway most of these security scanners are bunkum:

      https://pythonspeed.com/articles/docker-security-scanner/

      There are not, in fact, a huge number of known and unpatched vulnerabilities in debian stable. If your tool is finding numerous problems, it is time to look more closely at your tool.

    • enriqutoJan 2024

      > offering almost a Python like experience

      If you do scientific computing, the fortran experience is much better than python's. You never feel out of place. Multi-dimensional arrays of floats are a native type, loops are fast, and the system is extremely stable.

      What does python offer you? Lists, dictionaries, strings (none of which is of any use to scientific computing) and a plethora of slightly incompatible external libraries for dealing with matrices. Worse, there's no hope [0] that your algorithms based in numpy/scipy/numba/tensorflow/torch/jax will run unchanged in a decade, not to say in 50 years.

      [0] https://pythonspeed.com/articles/numpy-2/

    • ainchAug 2026

      I think the point is that, from a compiler's perspective, it's not obvious how much you should be allowed to optimise code at the cost of changing the outcomes of floating points maths - do you allow 1e-10, or 1e-6, or 1e-4 level changes? Does your compiler have to run some test calcs to bound the scale of the change introduced by rewriting fp maths? Some compilers will let you opt in to rewriting floating point maths, but that's opt in so users understand that their numeric outputs might change between optimisation levels.

      For more, there's a good post on this kind of flag in Rust: https://pythonspeed.com/articles/faster-float-math-rust/

    Related

    Aphyraphyr.com551 people

    Hexing the technical interview (2017)

    Aphyr
    Personal · last shared 2026
    Pinterest Engineeringmedium.com/@pinterest_engineering70 people

    Three-day no-meeting schedule for engineers

    Pinterest Engineering
    Company · last shared 2026
    Graham Jenkinsdarkcoding.net44 people

    Facebook’s code quality problem (2015)

    Graham Jenkins
    Personal · last shared 2025
    Cal Patersoncalpaterson.com102 people

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

    Cal Paterson
    Personal · last shared 2026
    Nick Janetakisnickjanetakis.com68 people

    Best practices around creating production ready web apps with Docker Compose

    Nick Janetakis
    Personal · last shared 2026
    Codeship Blogblog.codeship.com138 people

    Crystal: Fast as C, Slick as Ruby

    Codeship Blog
    Company · last shared 2020
    Tristan Humethume.ca93 people

    Teleforking a Process onto a Different Computer

    Tristan Hume
    Personal · last shared 2026
    Google Cloud Platform Blogcloudplatform.googleblog.com349 people

    Introducing Cloud Spanner, a Global Database Service

    Google Cloud Platform Blog
    Company · last shared 2026