Skip to content
View zmitchell's full-sized avatar

Organizations

@savikhin-lab @flox

Block or report zmitchell

Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
zmitchell/README.md

Zach Mitchell (@zmitchell)

Hey, I'm Zach. I'm a software engineer and a professional curler1. I'm also a CPython contributor2.

Background

My background is physics, but that's not what I do anymore because lasers don't have unit tests or version control. I did a PhD building various kinds of laser spectrometers to study how energy moves between molecules (specifically inside proteins involved in photosynthesis). The lasers I built spit out pulses of light as short as 20 femtoseconds (femto = 10^-15), and sometimes they even worked! I also did quantum mechanics simulations. If you call me "doctor" I'll simultaneously feel extremely uncomfortable and proud. Do with that what you will.

I developed an interest in systems programming during my PhD, and now I spend my free time doing things like building eBPF-based profilers (like everyone else). I feel at home in Rust and Zig, but I spent several years knee-deep in Python. I have a healthy fear of C++, and C macros scare me a little bit. It's my professional opinion as a doctor that header files should be illegal.

I spent about 9 months on the Nix documentation team (if you've seen the documentation you'll understand why). I don't do that anymore, but I do still use Nix to configure all of my machines (yes, even my macOS laptop). You can see my Nix configurations here: zmitchell/nixos-configs. I'm the program chair for the Nix conference that takes place in North America every year.

Work

I work at Flox building something that's hard to do justice in a single sentence. I work on both the CLI and the backend server. The CLI is open source and can be found here: flox/flox.

Flox is a tool for creating reproducible "environments". If you use it during development, it's a developer environment. If you use it in CI, it's a CI environment. If you use it in production, it's a production environment. It's a way of getting the same set of software everywhere that you use it. macOS or Linux. x86_64 or Arm.

For developers, the idea is that onboarding to an existing project looks like this:

$ git clone
$ flox activate

I truly believe it's the current local maximum for developer environments, bringing Nix-powered reproducibility together with an intuitive and familiar CLI.

I can't help myself, so I've developed several tools and projects related to Flox:

  • flox-debugger - A "debugger" for the flox activate command
    • zmitchell/flox-debugger
    • The flox activate command does the complex, heavy lifting of setting up a shell with a reproducible set of dependencies, carefully handled process parentage, etc. It's the magic that makes Flox work, and it's simultaneously the hardest part to get correct.
  • release-flox (internal) - The (internal) tool we use to cut and upload Flox CLI releases
  • flox-ci (private) - A proof of concept CI system based around Flox environments
    • This uses systemd-nspawn containers and ZFS copy-on-write clones to make starting jobs substantially faster when there are jobs on a given host that use the same Flox environment.

Writing

I write infrequently, but I enjoy doing it when I have something to teach. Much of the documentation at flox.dev/docs was written by me (especially the Concepts section).

A few highlights:

Talks

I'm genetically incapable of shutting up, and being on stage temporarily quenches my thirst for power, so I frequently find myself speaking at conferences or working booths.

The full list of my appearences is here: https://tinkering.xyz/talks/

The highlights:

Footnotes

  1. In the sense that I somehow convinced my employer to sponsor my curling team. I'm not kidding: https://flox.dev/blog/flox-named-exclusive-media-sponsor-of-the-rock-bottom-curling-clubs-2025-season/

  2. Look, someone had to do it. Also, no one else volunteered to be an accomplice in my Python crime.

Pinned Loading

  1. flox/flox flox/flox Public

    Developer environments you can take with you

    Rust 3.7k 105

  2. flox-debugger flox-debugger Public

    Rust 1

  3. floxdocs floxdocs Public

    Forked from flox/floxdocs

    Curated Flox Documentation

    Shell

  4. proctrace proctrace Public

    A high-level profiler for process-level events such as fork, exec, exit, setpgid, and setsid

    Rust 61

  5. polsim polsim Public

    A command line utility for doing polarization simulations

    Rust 17

  6. annotation-abuse annotation-abuse Public

    Rust-like macros in Python by abusing type annotations

    HTML 63 2