Programming
I develop mathematical and scientific software. I also regularly contribute to free1 1as in speech, not as in beer. software that I use.
Much of my contributions can be found through my github. I am also active on various development mailing lists.
Research software associated to papers
-
LearningEulerFactors, code accompanying the paper Learning Euler Factors of Elliptic Curves. Much of this code was written with my collaborators.
-
mobius_case_study, code accompanying the paper Studying number theory with deep learning: a case study with the Möbius and squarefree indicator functions.
-
heuristic_hejhal, code written for (part of the) paper Learning Fricke signs from Maass form Coefficients. This is a relatively easy-to-follow implementation of Hejhal's algorithm to compute weight $0$ Maass forms. I have faster implementations that are less easy to follow as well.
-
isolated_points, Magma code accompanying the paper Towards a classification of isolated $j$-invariants, appearing in Math Comp 94 (2025). Much of this was written with my collaborators.
-
maass_portraits, code accompanying the new database of rigorous Maass forms described in A database of rigorous Maass forms.
-
CongruentNumberTrianglesSameHypotenuse, a Jupyter notebook for sage accompanying the paper Congruent numbers with the same hypotenuse. Closely related is the prepared, python-readable dataset of elliptic curves.
(Looking back, I would have presented this code and data differently. But it was the first time I published code along a math paper).
Mathematical Software
-
LMFDB, the L-function and modular form database. I develop the code running the database and write software that computes or verifies the underyling data. I am currently strongly affiliated with the character pages and the Maass form pages, as well as the images for each modular form.
-
SageMath, an open source computer algebra system. I reworked their complex function plotting routines, and have contributed to various parts of the main library as well. If you have sage trouble or need help reporting/fixing a bug, you can reach out to me.
-
phase_mag_plot, tools to visualize complex functions in sage. (Associated to my paper Visualizing Modular Forms. See also the announcement page and followup page). Note that this has now been incorporated into sage.
-
conrey-dirichlet-characters, sage/cython code for working with Dirichlet characters using the Conrey indexing system. This library is primarily written by Jonathan Bober.
I've contributed much less regularly to a wide variety of other pieces of scientific software, including arb, eclib, ipython, and matplotlib. These are all great pieces of software and I encourage others to check them out.
Small Tool Sites
These pages act as miniature websites and serve as particular tools for particular tasks.
-
arxiv_to_bibtex, a tool to generate bibtex entries from lists of arxiv URLs. The source is very simple and available on github. The github has a python version that can be integrated into a local system and the pure javascript/html one that runs on the site.
Post describing this tool -
MathShare, a math pastebin that runs on a static site. All the data for the pastebin is transferred via URL parameters, limiting the pastebin to approximately 1500 characters.
Source on github
Post describing this tool and its creation
Despite being highly trafficked, MathShare is such a light page that it costs essentially nothing to host.
Other Software
-
tld: a minimal list manager for people who want to do things, but with a little flexibility. I use this behind the scenes for all sorts of things that aren't public-facing.
-
simple_address_book: a minimal address book that works with mutt. It's similar to
abook
, but simpler, less featureful, maintained, and in python. -
latex2jax: a python script to turn texfiles into Wordpress-compatible html. I used this for years to write math for this site. But I no longer use Wordpress, and I've built different tooling to generate notes for this site.
-
Vundle: a plugin manager for vim. (Unfortunately, this is now essentially abandonware. But I still use it).