Programming often limits research more than fundamental domain challenges.
I work to correct this imbalance through academic research, software development, and teaching.
I study how domain scientists develop and distribute software. My goal is not to solve any particular problem but rather to isolate, automate, and distribute the decisions experts make in developing solutions.
I focus on the domains of numerics, complex networks, and computer algebra as well as general data analytics. I automate through compilers and the construction of domain specific languages.
I contribute within the numeric Python ecosystem. I also maintain a few functional programming libraries. My work is usually open source and my recent workflow and thoughts are frequently published online.
There exists an imbalance between computer science and the physical, life, and social sciences. The maturity of solutions in computer science has outpaced the knowledge of computational methods in these domains. This is despite their relevance in todays dominant issues.
Because of this imbalance I prefer to teach methods courses in technical fields outside of computer science. While at UChicago I traditionally served as lab instructor for CMSC-12100. and lectured a similar course during the Summer.