Software¶
Projects I Maintain¶
These are packages where I have played a significant role in design, development, and ongoing maintenance.
SimPEG¶
An open-source Python framework for simulation and gradient-based parameter estimation in geophysics. SimPEG provides a modular, extensible platform covering potential field (gravity, magnetics), direct current resistivity, induced polarization, and electromagnetic methods. I served as Director of Operations during my postdoc at UBC, leading architecture, development, CI/CD, and community engagement, and continue as a core administrator.
Key contributions:
- Scalable parallel inversion infrastructure (Dask + MPI) for HPC clusters
- Joint inversion framework supporting cooperative, petrophysical, and total-variation coupling
- Extensive refactoring and API modernization across multiple major releases
- CI/CD pipelines, release management, documentation, and community support
discretize¶
A finite volume library providing structured and unstructured mesh types for solving PDEs in geophysical applications. Supports tensor, tree (quadtree/octree), curvilinear, and cylindrical meshes with full boundary condition support.
Key contributions:
- Tetrahedral mesh implementation
- Improved quadtree/octree generation algorithms
- Full boundary-condition capabilities for geophysical PDE systems
- Performance improvements and API design
CGEMaestro¶
CGEMaestro is a geophysical software application developed by the Center for Geophysics, Energy, and Minerals (formerly the Center for Gravity, Electrical and Magnetic Studies) for the members of the GeoMultiphyiscs Research Consortium (GMRC) at the Colorado School of Mines. Developed primarily in fortran, it contains forward modeling, processing, and inversion codes adapted for industry use from research projects for many potential fields related systems.
Key contributions:
- Implementented openmp parallelism throughout codebase
- Modernized legacy FORTRAN code
- Migrated to version controlled system
- Adapted many research projects into industry strength executables
- Managed software distribution to consortium sponsors
ndwt¶
A fast multithreaded and SIMD excelerated rust library for both lifted and filtered wavelet transforms, with Python bindings. Provides forward and inverse transforms along with adjoint versions suitable for minimization algorithms.
lifted¶
A fast C++ library for floating-point lifted wavelet transforms. Uses explicit SIMD instructions via Google Highway and thread-based parallelism for high-performance signal processing.
Open Source Contributions¶
Beyond the projects above, I have contributed to the broader scientific open-source ecosystem. The projects below represent areas where I have submitted patches, participated in design discussions, or helped with maintenance.
| Project | Description |
|---|---|
| geoana | A collection of (mostly) analytic functions in geophysics |
| pymatsolver | A linear operator-like interface for matrix solvers |
| pydiso | A python wrapper for the MKL pardiso solver written in cython |
| pyvista | 3D visualization and mesh analysis for science and engineering |
| aurora | Open Source MT processing library |
| mt_metadata | Standard MT metadata |
| python-mumps | Python bindings for the MUMPS: a parallel sparse direct solver. |
| highway | C++ library that provides portable SIMD/vector intrinsics. |
| pydata-sphinx-theme | A clean, three-column, Bootstrap-based Sphinx theme by and for the PyData community |