SSH forwarding can improve your security along with reducing the need to type passwords and have multiple keys linked to your GitHub/GitLab instance. The procedure is:
[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
Lua Environment Modules
This is a guide to setting up Lmod (lua environment modules) on a CentOS system.
I’ve used a similar procedure to set them up on a Mac, as well, so this is still
a useful guide to the workings of Lmod if you use a different system; mostly
paths will change. On a Mac, you’ll want to install Lmod
from the science
tap in brew
. There are several good pages covering environment modules (TCL
version), but not many that use the newer Lua syntax. This document aims to fill
that roll.
Python 3 upgrade
About ten years ago, Guido Van Rossum, the Python author and Benevolent Dictator for Life (BDFL), along with the Python community, decided to make several concurrent backward incompatible changes to Python 2.5 and release a new version, Python 3.0.
[Read More]C++17
The every-three-year cycle has changed the development of C++; we are now getting consistent releases somewhere in-between the major and minor releases of old. The 2017 release may be called minor by some, with a huge portion of the planned improvements being pushed back another 3-6 years, but there were several substantial changes in useful areas; it is much more impactful than C++14, for example. This almost feels like a lead-in release to C++20.
The std::variant
, std::optional
, and std::any
additions to the standard
library are huge, and can restructure the way you program (and are available for
older C++ releases through Boost and other libraries).
C++14
Unlike C++11, this is a minor release, focused mostly on improvements on top of C++11 changes, with very little that one could call “new”. C++14 feels a little more natural than C++11 by expanding the usage of features and implementing common sense additions that were missed in the original C++11 release. There were also quite a few bug fixes; several of these were backported into C++11 mode in compilers.
Also, while C++11 is always available in ROOT 6, C++14 requires a flag and compatible compiler, so C++14 features are often unavailable. The Conda-Forge ROOT package has C++17 enabled.
[Read More]C++11
C++11 was the largest change ever made to C++; and due to the changed release schedule, probably will remain the largest single change. It is a well thought out, mostly backward-compatible change that can cause you to completely rethink the way you write code in C++. It is best thought of as almost a new language, a sort of (C++)++ language. There are too many changes to list here, and there are excellent resources available, so this is meant to just give you a taste of some of the most useful changes.
Many of the features work best together, or are related. There already are great resources for learning about C++11 (listed at the bottom of this lesson), and C++11 is already in use in most software. Therefore, the remainder of this lesson will cover a few of the common idioms in C++11 that a programmer experienced with the older C++ might not immediately think of.
[Read More]