It’s amazing what you can find when you plug in an old external hard drive. I recently rearranged my desk and realized that one of the external drives on top of my desktop Linux machine had apparently been unplugged for a while. I plugged it in to see what it held, and there were a lot of files from 2014, including some MXDs, so I moved it over to a Windows machine.
Digging through the contents of the drive was an exercise in archaeology/forensics, exploring the state of geospatial technologies over a decade ago. There was a lot of data and code related to one particular project I was working on at the time. The overall gist of the project was that we were building a mobile mapping application to be deployed on Android tablets for use in the field.

My role on the team was to add the geospatial capabilities into the app. That consisted mostly of viewing map data on the device, with some limited interactivity, such as tapping to interrogate points. I recall the first hurdle being the visualization of offline basemaps. The devices were going to be disconnected over 90% of the time, so offline was a primary requirement. They were also going to be tested in Hawaii, which meant bright sunshine, leading to a requirement for high-contrast maps. My job was to make all of that happen.
The project team was working in .Net, so all of my back-end code had to be written in C#. Because we were deploying on Android devices, the project gave me my first exposure to Xamarin, which, at the time, mainly supported cross-platform deployment of non-UI .Net code. The UI work was all done in Java (by other people). Most of that work is documented in posts I made at the time, so I won’t dissect it in detail here, but the list of technologies I used in that project shows the transition the geospatial technology field was experiencing at the time.
- GMAP.NET – Open-source .Net library we used to feed basemaps to the UI on the device. I wrote a custom provider to add support for raster MBTiles.
- QGIS – Used to seamlessly process DEM data and create contour lines
- MBTiles – Vector MBTiles wasn’t a thing yet, so this was straight raster
- SQLite – Used both as a container for MBTiles and some vector data
- SpatiaLite – The pre-geopackage approach to geospatial data in SQLite
- ArcMap – For cartographic styling of the high-contrast maps
- Arc2Earth – A now-defunct product for generating tiles out of ArcMap
- Xamarin – Cross-platform deployment of .Net code
I recall we initially used TileMill for the cartography and tile creation, but CartoCSS proved too inscrutable for the people who would have to maintain the basemaps, so we moved to ArcMap and Arc2Earth.

What we were seeing then was a lot of thought into how to break up monolithic geospatial software stacks into something more suitable for the kinds of distributed processing that were emerging with the cloud. The cloud itself was a lot less mature than it is now, so the progress was uneven. Public sector entities were still unsure about the cloud and mobile computing, so they approached both with caution, but there was general recognition that the hegemonic reign of client-server was coming to an end.
Delivering basemaps and geospatial data, performing browser-based analytics, and shipping cross-platform code are all so much easier now, thanks to the advent of the cloud and mobile/edge computing. But you can see the seeds being planted in the geospatial technologies of circa 2014, and the results of that work a decade ago have borne fruit in the form of today’s cloud-native and mobile-first approaches.
We’re now looking ahead to an AI-driven technology landscape and trying to figure out what that looks like for geospatial. I’m not sure any of what’s happening today will fit on an external drive for me to stumble across in ten years, but I’m excited to see where it goes.