Linux Tricks

I use Linux for both my personal machine, and in most of my professional work environments. Getting things working can take quite a bit work (depending), so hopefully some what is documented here is also useful to others.

  • Sunday, March 15, 2020 - Reproducible Builds Using Nix

    Before I was a scientist, I worked for UnixOps supporting research computing– mainly building software. The fact that the University of Colorado, Boulder campus needed almost a dozen system admins to build and rebuild software tells you something about how much of a hassle it is; builds are often cryptic, requirements conflict, and things constantly break between versions.

    I’ve used various package managers over the years– homebrew when I had a mac, pip and conda for python, and various linux platform specific managers like pacman and apt-get. None of them have been particularly great; homebrew tends to be a mess and is specific to only OS X. Conda and pip work ok, but they only manage python packages, and reasonably complex software always includes non-python dependencies… linear algebra routines for numerics written in fortran or C, hdf5 libraries, and projection libraries like GDAL come to mind most quickly. Things have actually gotten worse in the last couple years with machine learning; builds now expect CUDA, and some frameworks are working on multi-gpu instances. Getting software up and running is a hassle, to say nothing of trying to have a colleague replicate your setup when you share code.

(Read more at the link…)