Skip to content
View zmitchell's full-sized avatar

Organizations

@savikhin-lab @flox

Block or report zmitchell

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
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