I love to explore and build new things. I've recently been focused on projects to support reproducible web-based mapping. The source for nearly all my projects is available at Github.
A Cython port of Martini for fast RTIN terrain mesh generation, 2-3x faster than Martini in Node.
A fast Python Quantized Mesh encoder. Encodes a mesh with 100k coordinates and 180k triangles in 20ms.
With judicious use of vectorized Numpy functions, I was able to achieve speeds of at least 100x faster than an existing Python library.
Serverless high-resolution NAIP map tiles from Cloud-Optimized GeoTIFFs for the lower 48 U.S. states.
usgs-topo-tiler is a Python package to read Web Mercator map tiles from USGS
Historical Topographic Maps.
usgs-topo-mosaic is a fork of
cogeo-mosaic-tiler to serve USGS Historical Topographic
map tiles on demand. Together, they enable serving map tiles on demand from the
USGS's public collection of 181,000 historical topographic maps.
A visualization of all public transit in the world (or at least what exists in the Transitland database). Zoom into a city in the U.S. to see an animation of transit vehicles moving along their routes.
I use Python,
sqlite to download
and analyze the source data. I use Gatsby and React for the website structure. I
use React Map GL/Mapbox GL JS and Deck.gl for the map rendering; the former for
the route geometries and the latter for the schedule animation. I use
generate a high-resolution static image of transit in the continental U.S.
An open-source project for exploring and navigating U.S. National Scenic Trails, starting with the Pacific Crest Trail.
The website is designed to bring together most information hikers want: data overlays exist for land management boundaries, current and historical wildfires, public transit options near the trail or trail towns, current air quality, photography, and Wikipedia articles. All units, including peak elevations and contour lines, can be switched between Imperial and Metric.
Essentially all data generation is automated, to allow for the possibility of expanding to other National Scenic Trails in the future.Source
A free topographic Mapbox GL basemap style with complete liberty to use and self host. This is a fork of OSM Liberty and combines vector tiles in the schema of OpenMapTiles with contour lines and hillshading to create a beautiful topographic vector map.Source
OSM Liberty is one of the best free Mapbox GL basemap styles for general use. I contributed styling for river names and glacier land cover.Python Bash Source
Scripts to generate contours, hillshade, Terrain RGB, and slope-angle shading tiles from Digital Elevation Model (DEM) data.Python Source
Scripts to generate high-resolution aerial imagery tiles from USDA National Agriculture Imagery Program (NAIP) data.Python Source
Scripts to generate map tiles from US Forest Service Topo quadrangle maps.Python Bash Source
Scripts to generate vector tile contours from USGS contour data.Python Source
Python library and command line interface to quickly and easily query elevation values on Digital Elevation Models. The command line interface can add elevations to a provided GeoJSON FeatureCollection.Python Source
Python library and command line interface to quickly and interactively visualize geospatial data with Kepler.gl. Since I work with GIS data in Python, I use this whenever I need to see my data on a map.
Jupyter Notebooks permit sharing of code and results together, with simple reproducible modifications in a web-based computational environment. Alternative front-ends like Hydrogen allow for rich HTML output even from computations on a remote server.
The Hydrogen project is a front-end for the Jupyter project, enabling interactive coding and rich output formats inside the Atom text editor. I contributed code that allowed Jupyter Notebook files to be imported and exported as regular Python files.
Send code to the Stata window from the Atom text editor. This is a more primitive version of running Stata code from Atom than the Jupyter kernel above.Python Source
Syntax highlighting for Stata for the Atom text editor.Java Source
A prototype Java implementation of reading Parquet files into Stata. My first Java project, I was able to successfully read Parquet files into Stata's memory, but it ended up being less performant than my friend Mauricio Caceres' C++ implementation.
While working with Medicare data, I was frustrated with the fragmented state of public documentation regarding the data I was working with.
I scraped the ResDAC documentation website and joined it with public NBER documentation to create my own beautiful, responsive documentation website to help me search documentation faster. I used MkDocs as the static site generator and Material for MkDocs as the theming.