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.

    These days, I am working at the ERGS research group at the University of South Carolina under Anthony Scopatz. I am working primarily on improving SymPy's code generation capabilities. I gave a talk at SciPy 2016 about SymPy code generation:

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

  • Conda, a package manager. I worked primarily on conda when I was at Continuum Analytics. Conda is the package manager included with Anaconda, a free collection of open source packages for doing science, math, engineering, data analysis in Python.

    I gave a talk about conda at SciPy 2014:


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.

  • Pyflakes, a linter for Python with a focus on logical errors only (no stylistic warnings). I use flycheck-pyflakes in emacs to highlight errors in Python using pyflakes as I write. It's an essential tool for catching stupid mistakes early, and it doesn't bug about style, so the annoyance factor is minimal.

  • Jedi, a completion library for Python. Jedi is pure magic. I use emacs-jedi, but there are plugins for other editors as well.

  • Pyinstrument, a statistical call stack profiler. The best way to speed profile Python code, although the standard library profile module and line_profiler are also good (and serve different purposes).

Side stuff

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

Good stuff

  • Doctr. A tool for automatically deploying docs from Travis CI to GitHub pages (Gil Forsyth also works on this).

  • 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.

Funny stuff

  • Some interesting spam I've received. The deaththreat one is pretty funny (slightly NSFW).

Not so good stuff


Comments powered by Disqus