Skip to main content


Here are some things that I've worked on. Most of what I do is open source, and most of my open source work is on my GitHub page. Everything I do is liberally licensed (BSD or MIT) if possible.

Main projects

  • SymPy, a computer algebra system in Python. My first foray into open source was with Google Summer of Code with SymPy in 2009. I've been an active contributor ever since, and am now the lead developer.

    I've touched most parts of SymPy, but the parts that I'm most proud of are the ODE module (my 2009 GSoC project), the implementation of the Risch integration algorithm (my 2010 GSoC project), improvements to the assumptions system (an ongoing project), and the tutorial.

    If you are interested in SymPy or have any questions about it, please email the SymPy mailing list.

  • ndindex. ndindex is a new library that I have started as part of my work at Quansight, which can be used to represent and manipulate indices to NumPy arrays (e.g., slices).

Side stuff

Stuff I've done on my own. In no particular order.

  • Brown Water Python. Better documentation for Python's tokenize module (in the spirit of Thomas Kluyver's Green Tree Snakes).

  • removestar. A tool to automatically replace import * with explicit imports in Python files.

  • mypython. I wrote my own Python REPL.

  • catimg. Shows an random image of a cat from Imgur inline in the iTerm2 terminal.

  • prefsync, a little tool to help sync OS X plist files in a human-readable format.

  • dotfiles. All my dot files (configuration files) for various things. Mostly my emacs and bash configuration.

  • A walkthrough of the GitHub workflow for contributing to open source projects.

  • This blog.

  • My old blog. Contains posts from when I was a Google Summer of Code student, posts about when I moved to emacs, and other interesting things about Python and mathematics.

  • A presentation about why you should be using Python 3.

Open source projects that I use heavily and contribute to

(though some not as much as I would like)

  • PuDB, a curses-based debugger for Python. It has been an essential tool for debugging and understanding Python code. I wrote some blog posts in the past about it.

  • Prompt Toolkit, a library for building interactive prompt-based terminal applications, such as shells and REPLs. I use this heavily in mypython (see above).

  • NumPy is the core library for numerics in Python, which implements the standard array type and some common algorithms. I have contributed to NumPy, specifically the numpy.array_api module (see the next bullet).

  • Array API specification is a specification for Python array APIs, such as NumPy and other similar libraries. I have worked on this as part of my work at Quansight, including work on the official test suite as well as the NumPy implementation of the specification.

  • Numba. Numba is JIT compiler for Python that lets you write pure Python code that executes as fast as compiled code. I have contributed to Numba as part of my work at Quansight.

  • Conda, a package manager. I worked on conda when I was at Continuum Analytics (now called Anaconda). Conda is the package manager included with the Anaconda distribution. I no longer work on conda, so if you have any questions about it, you should reach out to the support channels at Anaconda.

  • conda-forge is a free distribution of conda packages maintained by the community. While I am not involved in the conda-forge core development, I do help maintain several package feedstocks.