Open source projects I created, maintain or significantly contributed to, with a focus on maps, computational geometry & data visualization. Most are tiny, dependency-free, and built for exceptional performance.
| Project |
Role |
★ |
Description |
| Leaflet |
author |
46k |
The number one JavaScript library for interactive maps. |
| Mapbox GL JS |
core dev |
12k |
JavaScript/WebGL vector maps library. |
| pixelmatch |
author |
6.9k |
The fastest and smallest pixel-level image comparison library. |
| suncalc |
author |
3.5k |
Tiny library for calculating sun/moon positions and phases. |
| flatbush |
author |
1.6k |
Fast static spatial index for 2D rectangles and points. |
| rbush |
author |
2.8k |
Fast dynamic R-tree-based 2D spatial index. |
| delaunator |
author |
2.6k |
The fastest JS Delaunay triangulation library for 2D points. |
| earcut |
author |
2.6k |
The fastest and smallest JS polygon triangulation library. |
| supercluster |
author |
2.4k |
Fast geospatial point clustering library. |
| geojson-vt |
author |
2k |
Fast tile-based geospatial index for GeoJSON data. |
| polylabel |
author |
1.6k |
Finds the pole of inaccessibility of a polygon (for labeling). |
| mapbox-gl-native |
core dev |
4.5k |
OpenGL-based vector maps rendering engine (archived). |
Computational geometry & geospatial algorithms
| Project |
Role |
★ |
Description |
| kdbush |
author |
0.7k |
Fast static spatial index for 2D points in JavaScript. |
| robust‑predicates |
author |
0.3k |
Fast robust geometric predicates (modern JS port of Shewchuk's). |
| concaveman |
author |
0.7k |
Fast concave hull algorithm in JS. |
| cheap-ruler |
author |
0.4k |
Fast approximations for common geographic measurements. |
| tiny-sdf |
author |
0.7k |
Browser-side signed distance field generation from text. |
| potpack |
author |
0.4k |
A tiny and fast JS rectangle packing library (for sprite layouts). |
| MARTINI |
author |
0.7k |
Fast terrain meshing via right-triangulated irregular networks (RTIN). |
| delatin |
author |
0.3k |
Fast terrain meshing via Delaunay-based greedy triangulation. |
| d3-delaunay |
core dev |
0.7k |
Fast Voronoi diagram library for 2D points (based on Delaunator). |
| delaunator-rs |
author |
0.3k |
A port of Delaunator to Rust. |
| earcut.hpp |
core dev |
1k |
C++11 port of Earcut. |
| geoflatbush |
author |
|
Geographic queries for Flatbush. |
| geokdbush |
author |
0.4k |
Geographic kNN queries for kdbush. |
| rbush-knn |
author |
|
kNN search plugin for RBush. |
| simplify-js |
author |
2.4k |
Fast JS polyline simplification library. |
| lineclip |
author |
|
Fast library for clipping polylines and polygons by a bbox. |
| linematch |
author |
|
Fast algorithm for comparing polyline sets (e.g. road networks). |
| which-polygon |
author |
|
Fast index for point-in-polygon queries (e.g. point-in-country). |
| dobbyscan |
author |
|
Fast density-based clustering of geographic points. |
| icomesh |
author |
|
Fast icosphere mesh generation library for WebGL visualizations. |
| circle-union |
author |
|
Fast union of geographic circles as coverage polygons. |
| Project |
Role |
★ |
Description |
| flamebearer |
author |
1.7k |
A JavaScript CPU trace analysis tool for agents and humans. |
| pbf |
maintainer |
0.9k |
Low-level, lightweight protocol buffers encoder/decoder for JS. |
| webgl-wind |
author |
1.1k |
WebGL-powered wind particle visualization. |
| simpleheat |
author |
1k |
Tiny JavaScript library for drawing heatmaps with Canvas. |
| Leaflet.heat |
author |
1.7k |
Simple, fast heatmap plugin for Leaflet. |
| bullshit.js |
author |
1.9k |
Bookmarklet to expose bullshit on web pages. |
| road-orientation-map |
author |
0.3k |
A visualization of road orientations on an interactive map. |
| claudefiles |
author |
|
Tiny Claude Code efficiency kit (status line & guard hook). |
| tinyjam |
author |
|
A radically simple, zero-configuration static site generator. |
| yeahjs |
author |
|
A tiny, fast, modern EJS templating library. |
| yeahml |
author |
|
A tiny, fast JS parser for a strict subset of YAML. |
| geobuf |
maintainer |
1k |
Compact binary encoding for geospatial data. |
| vector-tile-js |
maintainer |
0.4k |
Library for parsing Mapbox vector tiles in JavaScript. |
| tinyqueue |
author |
0.5k |
Small and simple JS priority queue. |
| flatqueue |
author |
|
A faster but more limited variation of tinyqueue. |
| quickselect |
author |
|
Fast selection algorithm in JavaScript (Floyd-Rivest). |
| simple-statistics |
core dev |
3.5k |
Descriptive, regression, and inference statistics for JS. |
Older, deprecated, unfinished or experimental projects — kept as a record of past work.
| Project |
Role |
Description |
| magic-string |
core dev |
Tool for generating source maps (earlier contributions). |
| kothic-js |
core dev |
Full-featured JS map rendering engine using HTML5 Canvas (earlier contributions). |
| dead-simple-grid |
author |
250-byte CSS grid framework (unmaintained). |
| tile-cover |
core dev |
Generates the minimum set of tiles that cover a geometry (unmaintained). |
| tile-reduce |
core dev |
Scalable vector tile geospatial analysis library for Node (unmaintained). |
| geojson-vt-cpp |
core dev |
C++11 port of GeoJSON-VT (archived). |
| seidel |
author |
Seidel's polygon triangulation in JS (deprecated). |
| binary-split |
maintainer |
Fast Node.js stream splitter. |
| geojson-cpp |
author |
C++14 library for converting GeoJSON into geometry.hpp representation (archived; formerly geojson.hpp). |
| mbtiles-extracts |
author |
Tool for extracting regional subsets of MBTiles files (archived). |
| bbtrees |
author |
Self-balancing binary search tree implementations in JS (unfinished). |
| supercluster.hpp |
author |
C++14 port of Supercluster (archived). |
| tile-decorator |
author |
JS tool for optimizing vector tiles (unmaintained). |
| github-org-browser |
author |
Simple tool for browsing public repos of a GitHub organization. |
| kdbush.hpp |
author |
C++11 port of KDBush (archived). |
| cumulative-timer |
author |
Simple cumulative timer for benchmarking JavaScript (archived). |
| Leaflet.TouchHover |
author |
Leaflet plugin for hover interactions on mobile. |
| polysnap |
author |
Snap rounding a polygon with self-intersections (a work in progress). |
| suncalc-go |
author |
Go port of SunCalc (unfinished). |
| polyclip |
author |
Martinez polygon boolean operations in JS (unfinished). |
| pbf-split |
author |
Splits a Node stream of length-prefixed protocol buffer messages (deprecated). |
| fanny |
author |
Experiments with feedforward neural networks in JS. |
| rollup-plugin-unassert |
maintainer |
A Rollup plugin to remove assertion calls via Unassert. |
| hain |
author |
Port of Hain's polygon trapezoidation in JS (unfinished). |