Python 3.9 is out (and has been for a while, I’m late posting this), with new features and changes. The themes for this release have been heavily internal improvements, such as a new more powerful parser, and the usual static typing improvements, along with a several bits new-user facing new syntax. This makes 3.9 a smaller release, but still it has some nice features of note.
[Read More]Favorite posts and series
C++ 11 14 17 20 23 • macOS (AS) / Windows Setup • Azure DevOps (Python Wheels) • Conda-Forge ROOT • CLI11 • GooFit • cibuildwheel • Hist • Python Bindings • Python 2→3 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 • SSH
My classes and books
Modern CMake • CompClass • se-for-sci
My workshops
CMake Workshop • Python CPU, GPU, Compiled minicourses • Level Up Your Python • Packaging
Python libraries
pybind11 (python_example, cmake_example, scikit_build_example) • cibuildwheel • build • packaging • pipx • dependency-groups • pyproject-metadata • nox • scikit-build (core, cmake, ninja, moderncmakedomain) • meson-python • boost-histogram • Hist • UHI • Vector • GooFit • Particle • DecayLanguage • Conda-Forge ROOT • uproot-browser • Scientific-Python/cookie • repo-review • validate-pyproject(-schema-store) • flake8-errmsg • check-sdist • pytest GHA annotate-failures • Plumbum
Other projects
CLI11 • beautifulhugo • Jekyll-Indico • POVM • hypernewsviewer • AoC 2023 • AoC 2024
My sites
Scientific-Python Development Guide • IRIS-HEP • Scikit-HEP • CLARIPHY
Setup an Apple Silicon Mac
I recently got an M1 mac, and I’ll be cataloging my experience with using it for scientific software development. I’ll be returning to update this page periodically, and will eventually have a focused recommendation for Apple Silicon setup, similar to my Intel setup.
[Read More]🎡 cibuildwheel 1.8.0 and 1.9.0
cibuildwheel
has just had two back-to-back releases, two weeks apart,
representing several months of hard work and some exciting few features! I will
be covering both releases at once, so we will discuss Apple Silicon support,
architecture emulation on Linux, integrated PEP 621 Requires-Python support, the
native GitHub Action, extended build and test controls, and more!
If you are following the releases, 1.7.0 came out last November (2020), and
included the fantastic output folding feature, which makes logs much easier to
read on CI systems that support folding, and makes it much easier to see how
long each step takes. The 1.7.x series also included the addition of the
working examples section of the documentation, which tracks
some known projects using cibuildwheel
, such as scikit-learn, Matlotlib, and
MyPy; it is a great place to go to look into how other projects have integrated
cibuildwheel
into their workflow.
I have an general overview post as well. Now let’s look at what’s new! Update: cibuildwheel is now an official package of the PyPA!
[Read More]Overview of cibuildwheel 🎡
This is the first of two posts on cibuildwheel
, a fantastic project I
joined after switching to it from my own azure-wheel-helpers, which I’ve
blogged about here before. It is the best wheelbuilding
system available for Python today, and can make something that is normally a
pain to setup and a headache to maintain a breeze (by forcing all the headaches
on us, of course, as maintainers, but it’s better to solve issues centrally!
Obviously we rather like solving these problems. Or we are just crazy, which is
also possible ;) ).
Be sure to checkout
the followup post over new features in 1.8.0 and 1.9.0,
too! Also, cibuildwheel
was recently accepted into the PyPA!
pybind11 2.6.0

I am pleased to announce the release of pybind11 2.6.0! This is the largest release since 2.2 (released over three years ago). I would like to highlight some of the key changes below; be sure to check out the changelog and upgrade guide for more information! The focus of this release was stability, packaging, and supporting more platforms, though there are a lot of small features and useful additions, covered by newly expanded docs.
[Read More]Making of SciPy 2020's High Performance Histograms as Objects

Now that SciPy 2020 is over, I would like to share the process I used to create the talk video. The effect was designed to recreate the feeling of watching an actual in-person talk. I will first cover parts, detailing what I got and some general suggestions, then I’ll discuss the filming process, and finally, I will cover the post-process procedure and software. The entire process took about a day and a half, with an overnight render, and cost about $200 (best compared to the cost of registration of a live conference).
[Read More]