Skip to main content

· 4 min read
Brandon Liu

In my last post, I described the downsides of the existing “pay-as-you-go” business model for maps. Organizations searching for a map solution weigh the benefits and drawbacks of build vs. buy. Buying a hosted SaaS — and letting someone else manage infrastructure for you — makes sense when DIY map infrastructure looks like this diagram:

In this post, I'll introduce Mantle, the commercial offering of the Protomaps system. It's the same backend that powers the interactive Leaflet maps on this site, like at Protomaps Downloads. It enables scalable hosting of map data with two moving parts:

· 6 min read
Brandon Liu

Protomaps is a new mapping system, and usually that implies a new map API - an HTTP service, hosted by a company somewhere Out There on the Web. Your typical interactive web map talks to an API using these conventions:

  1. The world is split into a pyramid of square tiles, with objects simplified to one of many pre-determined zoom levels.
  2. The browser fetches an image or other data tile as the user zooms and pans.
Leaflet.JS example

Front-ends like Leaflet or OpenLayers are mature libraries for consuming tiles, but leave unanswered where the tiles come from and whether or not those tiles cost money.

· 9 min read
Brandon Liu

Protomaps is a independent project to build a new map of the world. This scale of mission demands a wide range of novel frontend and backend components, like an open source spatial database, a serverless tile archive format, and a vector map renderer. There's also a web application — the one you're looking at now — with subsystems to process background tasks, ingest metrics and manage objects on cloud storage. Finally, there's the core map engine for cartographic generalization and tiling of OpenStreetMap data, which you can access at Protomaps Downloads.

Bringing a viable product to market, in addition to publishing open source software, creates some special pressures for a one-man shop. Chief among those is to make conservative technology choices. Building on stable tech means I can spend my risk budget on unique parts of the project instead of libraries; it means my open source components can be adopted by others with minimum friction and mature independently of my own use case. Rust and WebAssembly are exciting for maps, but a bootstrapped company can't afford multi-year investments in every emerging low-level technology. In this context, some Protomaps choices raise eyebrows among web and GIS developers, so I'll document a few of them here.

· 9 min read
Brandon Liu

Serverless computing supposedly will let developers run sophisticated applications on the web without wrangling virtual machines or databases. New products like Lambda offer simpler deploys for code; emerging standards like WebAssembly let you host SQLite databases on GitHub pages and make queries all from your browser. These examples rely on developers adopting new workflows or programming environments. So what if I told you that you've been computing serverlessly without realizing it?

Behold this one megabyte embedded video, a clip from Powers of Ten: A Film Dealing with the Relative Size of Things in the Universe and the Effect of Adding Another Zero:

· 7 min read
Brandon Liu

If you develop for the web, you've probably heard of OpenStreetMap, an open data alternative to Google Maps. Despite the wide name recognition of OSM, you may have questions like how do I make a web map with OSM data? and how can I host maps myself?

There are popular guides on how to work with planet files, PostGIS databases, and run tileservers for the OSM "slippy map" style. Even if you figure those out, you may be curious about vector maps for high-DPI sharpness and client-side customization of appearance and labels.

Protomaps is a new basemap system which is an end-to-end rethinking of this entire stack, oriented around the idea that custom mapmaking should be simple.

· 4 min read
Brandon Liu

A common user interaction in GIS applications is selecting a bounding box or polygon:

Your application may then use this polygon to do things like:

  • Render a high resolution, printable map image.
  • Generate a report of the surface area of buildings.
  • Calculate an isochrone map of distance to transit.