Skip to content
Kyle Barron
GitHubBlueskyXMastodonLinkedInRSS

Projects

All my projects are available at Github.

Python

Lonboard

Python TypeScript Source

A Python library for fast, interactive geospatial vector data visualization in Jupyter.

Building on cutting-edge technologies like GeoArrow and GeoParquet in conjunction with GPU-based map rendering, Lonboard aims to enable visualizing large geospatial datasets interactively through a simple interface.

geoarrow-rust

Python Rust Source

Python bindings to the core geoarrow-rs library implementing the GeoArrow specification with efficient spatial operations.

GeoPolars

Rust Python JavaScript Source

GeoPolars extends the Polars DataFrame library for use with geospatial data.

suncalc-py

Python Source

A fast, vectorized Python implementation of suncalc.js for calculating sun position and sunlight phases (times for sunrise, sunset, dusk, etc.) for the given location and time.

pymartini

Cython Python Source

A Cython port of Martini for fast RTIN terrain mesh generation, 2-3x faster than Martini in Node.

This was my first time using Cython and I was thrilled with its ease of use and performance. Upon first porting the original JavaScript Martini code to pure Python, it was taking around 5 seconds to generate one tile. After converting to Cython, it's within 50 milliseconds.

pydelatin

Python Source

Python bindings to hmm for fast terrain mesh generation. I figured out just enough C++ to connect hmm to pybind11.

quantized-mesh-encoder

Python Source

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.

nst-guide/terrain

Python Bash Source

Scripts to generate contours, hillshade, Terrain RGB, and slope-angle shading tiles from Digital Elevation Model (DEM) data.

nst-guide/naip

Python Source

Scripts to generate high-resolution aerial imagery tiles from USDA National Agriculture Imagery Program (NAIP) data.

nst-guide/fstopo

Python Source

Scripts to generate map tiles from US Forest Service Topo quadrangle maps.

nst-guide/contours

Python Bash Source

Scripts to generate vector tile contours from USGS contour data.

naip-cogeo-mosaic

Python Source

Serverless high-resolution NAIP map tiles from Cloud-Optimized GeoTIFFs for the lower 48 U.S. states.

The server was shut off after a very large AWS bill.

usgs-topo-tiler & usgs-topo-mosaic

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.

The server was shut off after a very large AWS bill.

demquery

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.

keplergl_cli

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.

JavaScript & TypeScript

parquet-wasm

Rust Source

Rust-based WebAssembly bindings to read and write Apache Parquet data

@geoarrow/deck.gl-layers

TypeScript Source

deck.gl layers for rendering GeoArrow data.

arrow-js-ffi

TypeScript Source

Zero-copy reading of Arrow data from WebAssembly.

deck.gl-raster

JavaScript GLSL Source

deck.gl layers and WebGL modules for client-side satellite imagery analysis.

snap-to-tin

TypeScript Source

Snap vector features to the faces of a triangulated irregular network (TIN)

Rust

geoarrow-rs

Rust Source

A Rust implementation of the GeoArrow specification and bindings to GeoRust algorithms for efficient spatial operations on GeoArrow memory.

geopolars

Rust Source

Geospatial extensions for the Polars DataFrame library.

geo-index

Rust Source

A Rust crate for packed, static, zero-copy spatial indexes.

arrow-wasm

Rust Source

Building block library for using Apache Arrow in Rust WebAssembly modules.

Websites

National Scenic Trails Guide

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.

OSM Liberty Topo

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.

OSM Liberty

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.

All Transit

JavaScript Bash Python Source

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, jq, and 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 d3 to generate a high-resolution static image of transit in the continental U.S.

Jupyter

Stata Jupyter Kernel

Python Source

Connects the Stata statistical package to the Jupyter ecosystem, enabling researchers to use a modern data science toolkit with Stata.

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.

As of February 2020, it has been downloaded nearly 90,000 times.

Hydrogen

JavaScript Source

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.

Stata

While working as an economics research assistant, I built a number of open-source tools that interface with the Stata statistical package to improve research reproducibility and increase productivity.

stata-exec

JavaScript Source

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.

language-stata

Python Source

Syntax highlighting for Stata for the Atom text editor.

stataParquet

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.

Miscellaneous

medicare-documentation

Python Source

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.

Meta

kylebarron.dev

JavaScript Source

This website is built with GatsbyJS, starting from the gatsby-starter-minimal-blog template.