I’ve just released repo-review 1.0 with a huge update to the WebApp, along with some other solid improvements in speed, simplicity, and stability. Repo-review’s two most popular plugins, sp-repo-review and validate-pyproject, can take full advantage of the new asynchronous fetching mechanism. And if you use the upcoming Python 3.15, the CLI is more responsive than ever thanks to lazy loading!
[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, sample-projects) • 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 • flake8-lazy • check-sdist • pytest GHA annotate-failures • Plumbum
Other projects
CLI11 • beautifulhugo • Jekyll-Indico • POVM • hypernewsviewer • AoC 2023 • AoC 2024 • AoC 2025
My sites
Scientific-Python Development Guide • IRIS-HEP • Scikit-HEP • CLARIPHY
Working to make Python lazy
Python 3.15a7, which is now just a uv python install 3.15 away on all major
platforms, has lazy imports! This exciting feature, proposed in PEP 810,
promises to make CLI applications faster (especially when using flags like
--help), and could make a lot of large code with lots of imports that don’t
always get used faster too. Unlike the earlier, failed attempt, this requires
libraries to put in some work. I’ve developed a helper tool to make it easy; I’d
like to cover what lazy imports are and how to use my tool. Since this is the
first library that I used AI heavily in developing, the second half of the post
will cover how my experience with AI for a task like this went.
TL;DR: run uvx flake8-lazy --apply to make your code magically faster on
Python 3.15!
New in boost-histogram 1.7 / Hist 2.10
I’ve just released boost-histogram 1.7 and hist 2.10, with a major new feature and a big typing improvement! I’d like to quickly outline what’s new here. Python 3.10+ is now required.
[Read More]How we made Python's packaging library 3x faster
Along with a pip (and now packaging) maintainer, Damian Shaw, I have
been working on making packaging, the library behind almost all packaging
related tools, faster at reading versions and specifiers, something tools like
pip have to do thousands of times during resolution. Using Python 3.15’s new
statistical profiler and metadata from every package ever uploaded to PyPI, I
measured and improved core Packaging constructs while keeping the code readable
and simple. Reading in Versions can be up to 2x faster and SpecifierSets can
be up to 3x faster in packaging 26.0, now released! Other
operations have been optimized, as well, up to 5x in some cases. See the
announcement and release notes too; this post will focus on the
performance work only.
Advent of Code 2025 in Typescript
After two years of Advent of Code in Rust, I thought I’d try TypeScript. I’ve always wanted to improve repo-review’s webapp, and that requires knowledge of the packaging systems for JavaScript, so I thought I’d try TypeScript this year. I also used this as an opportunity to learn more AI tooling too, mostly CoPilot in VSCode & ChatGPT. I’d like to share my experience and thoughts! My code is at aoc2025 (and aoc2024, aoc2023).
[Read More]UHI 1.0: histogram serialization
UHI 1.0 is out, with a major new feature: a new histogram serialization spec! This spec supports multiple formats (HDF5, zip, and JSON initially), and can be supported by multiple libraries (Boost-histogram/hist initially). There’s also a new test suite helper for libraries targeting the UHI indexing spec.
[Read More]