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 | 45k | 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.4k | 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.5k | The fastest and smallest JS polygon triangulation library. |
| supercluster | author | 2.3k | Fast geospatial point clustering library. |
| geojson-vt | author | 2k | Fast tile-based geospatial index for GeoJSON data. |
| polylabel | author | 1.5k | Finds the pole of inaccessibility of a polygon (for labeling). |
| mapbox-gl-native | core dev | 4.5k | OpenGL-based vector maps rendering engine (archived). |
| 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 |
|---|
| 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.6k | Simple, fast heatmap plugin for Leaflet. |
| flamebearer | author | 1.7k | Fast flame graphs for Node & V8. |
| 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. |
| 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). |