Martijn van Exel

Work & Projects#

I have been working professionally with maps, geospatial technology and open data for my entire career in a lot of different roles ranging from software / data engineer to strategic leadership. My main interest and area of expertise is OpenStreetMap (OSM), the "Wikipedia of Maps". I have been involved in OSM for nearly 20 years and know the project, its community and the data inside and out. I have served on the boards of the OSM Foundation as well as OpenStreetMap United States. My contributions to the OSM project include well-regarded and widely used tools such as MapRoulette, highlighted below. I have a particularly large amount of experience with setting up and managing mapping teams and data infrastructure pipelines in organizations with a need to tailor OpenStreetMap / Overture data to their specific needs.

MapRoulette#

MapRoulette is the premier task orchestration platform for OpenStreetMap. The MapRoulette website connects map contributors with desired map improvement micro-tasks. Administrators can design and publish Challenges, which bundles of tasks covering a specific map improvement theme and geographic area, monitor their progress and orchestrate a complete workflow including work reviews, task priorities and higher level organization of Challenges.

MapRoulette, free to use and open source, is used by companies like Microsoft, TomTom, Uber, Lyft, Meta and the World Bank to orchestrate their OSM map improvement projects. Most organizations use a combination of community engagement and internal editing and review teams to complete meaningful map improvement work. Individual OSM contributors and community leaders globally use MapRoulette to engage new and experienced mappers looking for meaningful map improvements to contribute.

Background

I started MapRoulette in 2011 because the OSM community in the United States was small and we had big problems to solve. We needed a way to structure and organize mapping work. New to API design, Python and web development, I hacked together the initial version of MapRoulette in a few weeks. The OSM community in the United States used it to fix more than 100,000 road network errors over the course of mere weeks.

It turned out that there was a real demand for a platform like this in the wider community and in organizations and companies that use OSM. The project has kept on growing and thriving. Dozens of community members and engineers from companies using the tool have contributed to the code. MapRoulette is now available in 20 languages. I no longer write any code for MapRoulette, but I continue to serve as a project lead and liaison for some of the major users.

Screenshot of the MapRoulette application

OpenStreetMap Utah#

I am the main organizer for the local OpenStreetMap community in Salt Lake City, Utah. I started the local OSM group because none existed and I wanted to get to know people. Since the summer of 2011, when I moved to Salt Lake City from Amsterdam, I have organized OSM mapping meetups almost every month. I used meetup.com for a long time, but decided to make our own website in 2024. It proved immensely useful to be able to point people to a place where they can find out all about what we do and what our next event is.

Besides monthly meetups, I have collaborated with local and state GIS agencies on OSM related projects. One example is the Collaborative Trailheads initiative, launched with the Utah State geospatial agency, UGRC. I have given presentations at many local GIS meetups such as the Salt Lake Area GIS Users Group, Northern Utah GIS and the annual statewide GIS conference organized by the Utah Geographic Information Council. As a result, most GIS professionals in Utah are now at least aware of OSM, and many have become interested in contributing to the project. We already have three local building footprint datasets available to incorporate into OSM, and we acquired a waiver from UGRC stating that we can use all Utah GIS data they are the steward of for the purpose of improving OSM.

The 2024 edition of the national OpenStreetMap conference was held in Salt Lake City, and quite a few local community members volunteered their time to help make the event a success.

OSM Utah Website screenshot

Ask OpenStreetMap#

Ask OpenStreetMap is a website where you can ask questions of OpenStreetMap data in natural language.

Until now, it took advanced knowledge of OpenStreetMap to answer simple questions like: 'Where can I get a coffee in downtown Amsterdam?' Not anymore! I designed a four-stage query process consisting of interactions with different LLMs and OSM APIs to process any natural language query into something OSM can understand and respond to.

The language OSM speaks to answer search queries is complex and not very well documented, so the barrier to querying live OSM data is high, and one single question to ChatGPT or Claude will not reliably get you a query you can execute. My goal with this project was to remove these barriers and give anyone the power to unlock the rich data of OpenStreetMap.

Notes: 1) Because querying LLMs is not free, I do not currently host a public site. If you would like to try it, sponsor this project with a few $ and I will give you access! 2) I decided not to open source the code to this website and API. I think there is value to unlock in the unique design of this process and the LLM prompts I used!

Ask OSM screenshot

Meet Your Mappers#

OpenStreetMap is made up of people, most of them volunteers, who contribute their time and local knowledge to make the best map of the world. People with a shared interest seek connection, and many local mapping communities have sprung up over the years. While OSM offers a few ways to find local mapping communities, it can be hard for local community organizers to know who is actively contributing to the map in the area. That is why I built Meet Your Mappers.

Meet Your Mappers is a website that lets anyone find active mappers in your area by simply drawing an area on the map and clicking a button. You can export the list of active mappers as CSV, inspect their mapping activity in more detail, and send them a message.

I built the first version of Meet Your Mappers in 2018, and completely rebuilt the tool in February 2025 using modern Python and modern infrastructure-as-code techniques, skills I had been wanting to learn.

Meet Your Mappers

OpenStreetMap Then and Now#

I've been with OpenStreetMap long enough to remember that contributing to the map meant going out and collecting GPS traces and paper notes. The tooling was rudimentary and map updates would only be published once a week (on Wednesday night), which is why we would see a spike in contributions on Wednesday from folks eager to see their contributions show up on OSM.

To show how far we have come since then, I made a website that puts OSM as it was in 2008 and as it is today, side by side. You can play around with a slider to overlay the two snapshots in time and the link to a specific location is easily shareable. I originally made the site in 2014, but the underlying infrastructure broke and I reded it in 2024. One interesting detail is that the 2008 map tiles themselves are served from a laptop on my home network that is almost as old as the tiles themselves :)

OSM Then and Now animation showing OpenStreetMap around Capitol Hill, Salt Lake City, Utah in 2008 and now.

OSM Overpass Python API#

OpenStreetMap has a powerful query API called Overpass. I created a Python interface that makes working with Overpass in your Python projects a lot easier. I designed it as a "thin wrapper" refraining from too many abstractions. You can leverage the full power of Overpass with the convenience of working with query results in native Python types. It handles syntax errors, network glitches and other hard-to-debug inconveniences reasonably well. I started this project in 2015. It is used in 100s of Python projects.

Small Things

When I have an evening or a dreary Sunday ahead and no plans, I sometimes decide on a whim to make something small that is fun, useful or both. I usually take these small projects as an opportunity to learn something new.

Gulf of What?#

In January of 2025, the executive branch of the U.S. Government issued an order requiring the USGS Board of Geographic Names to formally rename the Gulf of Mexico to "Gulf of America". Many in the geospatial world expressed their surprise and dismay about this. I made a silly looking website that would retrieve the official name from the USGS gazetteer in real time and let the visitor know if the Gulf had been officially renamed. Shortly after the name was officially changed on January 20, 2025, I took the website offline. Perhaps I will revive it when this misguided change is ordered undone!

Because I am mediocre at best at frontend development, and terrible at design, I enlisted the help of a tool called aider. Aider wraps a large variety of LLMs in a context-aware command line interface. I have tried code editors like Cursor and Windsurf, LLM integrations in VS Code, and LLM web interfaces like chatgpt.com, but none of these suit my workflow very well. LLM web UIs usually struggle with longer conversations and larger input token lengths. If you paste a couple of code files into the chat, and engage in a longer back-and-forth reasoning session about the code, I find that it's hard to keep track of suggested improvements or fixes and I end up searching in long conversation threads for some suggestion it made in an earlier iteration. "Smart" code editors and extensions I mostly find too invasive and breaking my flow with what is really more like a smart autocomplete than the higher-level help I am after.

The way aider works is much more flexible and more powerful. You start it in the root of your project, and it will read the source code map from your git metadata, so it has some idea of what it is that you're working on. At this point in time it has no knowledge of the actual code yet, but if you start asking it questions, it will suggest files to add to the conversation. You can drop files and clear conversation history at any time to reduce input token length improve response time. You can switch between models at any time, and it will give you an estimated cost of the entire conversation and the last interaction. You can add individual API keys for providers like OpenAI, Anthropic and DeepSeek, but aider also supports meta-providers like openrouter.ai.

By default, aider will commit any changes it suggests with a mostly useful commit message, and you can undo any commit with a simple /undo. I disabled this, one of the gazillion ways you can tweak aider's behavior. By default, aider will also lint the diffs the underlying LLMs spit out, and if this fails, it will ask the LLM to fix the errors. I find that this mostly works. I made a short example screencast showing a short CSS optimization conversation about this website. You'll note that I used Deepseek for this conversation. Deepseek is slower than most Anthropic and OpenAI models, and not quite as reliable in the quality of its output, but I paid $0.0018 for this conversation, less than 1/20th of what the same convo would have set me back had I used Sonnet 3.7 or GPT-4o.

A screenshot of the Gulf Of What website, showing that the Gulf of Mexico had been officially renamed to Gulf of America