Software

My Software

A few examples of my code (those that I'm able to make publicly available) can be seen on my GitHub page.  Some are just for fun (like the battleship simulator), while others were made for research purposes.

Other Recommended Software

My research involves a great deal of computational work.  While I've written some public software (above), more often than not, someone else has already written a software tool to solve my problems.  Below is a collection of programs that I have a great deal of experience using and would recommend to others.

Datasette

A super neat tool for sharing data interactively.  Data is stored in the open SQLite database format and then Datasette provides an interactive web-application to explore and visualize it.  All the server parts are taken care of!  Makes sharing data with others really straightforward, so long as you have access to a public facing web server.

PugSQL

An database ORM that lets you stick with basic SQL most of the time.  Using it within a Python environment is a breeze and without all the hassle of SQL Alchemy.

DuckDB

An open source, in process, OLAP database.  Essentially SQLite but columnar and fastIts interop abilities with Python Pandas dataframes are also amazing!

Julia

A new programming language first made available in 2012, Julia focuses on performance and efficiency without sacrificing clarity.  Julia has a syntax that closely resembles Mathwork's MATLAB, but is open source and freely available.  More importantly, due to the central placement of multiple dispatch and a strong type system, Julia is able to achieve speeds close to native C (for some applications).  While imperfect, Julia has almost solved the two-language problem in my work and has become my favorite language for coding.

DifferentialEquations.jl

Probably one of the most complete and sophisticated packages for solving differential equations in any language, DifferentialEquations.jl has hundreds of available methods with advanced support for user callbacks and error handling.  If you have a favorite ODE solver, it's probably been ported to work in this one package.

UQ Toolkit

A software suite for uncertainty quantification and sensitivity analysis with a convenient python interface, provided by Sandia National Labs.

BASH (or ZSH for the advanced users)

The glue that holds it all together, BASH (and it's myriad of built-in utilities) is a wonderful scripting language that's often overlooked by students.  It's ubiquity make it an extremely useful tool to learn.  Getting comfortable with writing BASH scripts has lead me to being more productive in most areas of computing.