Publishing is pain, maintenance is mayhem: why I built squidmaps
I wanted a web map, not an engineering project.
A thread on r/parkslope asked a simple question: what are the neighborhood’s certified bangers? The one dish or drink at each spot that locals swear by. The replies poured in, and the thread became the best food guide in Park Slope. It was also nearly impossible to use. Which of these places is near me? Which ones are three blocks apart on Fifth Avenue? What was that bakery someone mentioned forty comments up? A wall of comments can’t tell you.
So I put it on a map.
A picture is worth a thousand words, and a map is worth a thousand comments. At a glance you can see where the bangers cluster, which ones are on your way home, and what to order when you get there.
Making a map like that should be easy for me. I’ve spent my career building web maps and teaching others to: Leaflet hobby projects during NYC’s open data boom, solutions engineering at CartoDB, zoning and planning tools for New York City government, web mapping classes for planning students at NYU, and developer advocacy at Mapbox. I’ve built dashboards, data publishing tools, web GIS with dozens of layer toggles, and store locators, with the map woven deep into rich user interfaces.
But the map most people need is the simplest one. A colleague recently told me it has a name: JAMTAM, “Just Add Markers To A Map.” It’s also the map where a custom build is hardest to justify.
Publishing is pain
I have every skill I need to build the bangers map from scratch. That’s the problem: building it from scratch means yet another local directory on my dev machine, and yet another GitHub repository to publish a few hundred lines of HTML, JavaScript, and CSS. All that, for some pins.
These days, AI coding tools make the building part trivial. Ask Claude for a map of the bangers and you’ll get a polished, interactive HTML file in a minute. But then what? You’re right back to the repository and the hosting.
That’s roughly how the bangers map started. An AI assistant pulled every recommendation out of the thread, but it couldn’t reliably geocode them all, so I spent most of an hour in squidmaps checking locations and dragging pins to the right spots. Then I hit publish. No repository, no hosting, and the hour went into making the map right, not into making it exist.
I felt this pain a couple of years ago doing the 30 Day Map Challenge. All my maps were web-based, and I had fun building them, but I didn’t have the infrastructure to host and share them quickly, so I resorted to screenshots and videos of maps that were meant to be clicked.
Maintenance is mayhem
Publishing is only the start. The GitHub Pages URL gets forgotten after I share it. The API keys for the basemap and the geocoder go stale. I never keep the dependencies up to date. Nobody is actively maintaining these maps, so I only find out one is broken when someone tells me.
And the bangers thread didn’t stop when I made the map. Someone always replies with a spot I missed, or points out that a place moved down the block. With a hand-built web map, fixing it means finding the repository, editing GeoJSON by hand, pushing, and waiting for a deploy. Make it in desktop GIS instead, and it means digging up the project file, reopening it, moving the pin, exporting a new image, and re-uploading it everywhere you shared the old one. In squidmaps, I open the map, drop or drag a pin, and hit publish, and the link and every embed update on their own.
When I asked my brother what fun mods he had planned for his new 3D printer, he said:
None. I want an appliance, not a project.
That’s squidmaps. A web map, not an engineering project. Something I can come back to in a day, a month, or a year, and change in a minute.
What squidmaps is (and isn’t)
squidmaps is not a cloud GIS platform, a dashboard tool, or an app builder. It’s not for big data or heavy analysis.
It’s for people who want to make maps of the places they care about and share them: at a link that keeps working, embedded on their own website or newsletter, and on a public profile alongside the rest of their maps.
I intend to keep a large and generous free tier, and charge for things like private maps, team features, and white-labeling. More on that on the pricing page.
Opinionated on purpose
Build a web map from scratch and you have the full universe of options: any library, any layer, any interaction you can code. squidmaps trades that for guardrails: a set of point, line, and area styles, plus popups, tooltips, a title panel, and a legend for the interactivity most maps need. There’s plenty of room to make a map your own inside those guardrails, and because the options are bounded, a whole map can be described as data instead of code: a single JSON document in the open map spec, built on GeoJSON. Finding that sweet spot, enough customization and interactivity to make a map worth sharing while keeping its definition simple, has been the core design problem of squidmaps.
That pays off in a few ways. Your maps stay yours: you can export any map as a single file, and because it’s in an open spec, it isn’t locked to squidmaps. And a map that’s just data is easy for AI to write. If AI is already helping you create your maps, add the squidmaps MCP server. Instead of an HTML file, you get back a link to a real map you can keep editing and publish. More on using squidmaps with AI →
Standing on the shoulders of giants
The squidmaps editor began as a fork of Tom MacWright’s Placemark, the open source spatial data editor, and relies on Placemark’s many libraries for reading and writing spatial formats. Basemaps are vector tiles from Protomaps, built from OpenStreetMap data, with a basemap design by Geraldine Sarmiento and code by Protomaps and Kelso Cartography. Protomaps and its PMTiles format, which serves an entire tileset from a single file in cheap cloud storage with no tile server to run, are a huge part of how I keep costs down, and of why I can offer a generous free tier. MapLibre GL JS draws every map, Turf.js handles the geometry, and place search runs on Geocode Earth, built on the open source Pelias geocoder. That’s just the start: the full list is long, and I’m grateful to everyone on it.
What will you map?
I want squidmaps to be a place where people’s maps live for years, and where you can find interesting maps other people have made.
The 30 Day Map Challenge is running right now, and this year I’m not settling for screenshots: my maps are going on squidmaps, as live links and embeds. Come peruse them on my profile. If you’re doing it too, or you’ve got your own idea for a map waiting to be made, sign up and make it. Then come show it off, ask questions, or tell me what’s missing in the Discord.
