Posts by Ian Wagner
Founder & Chief Architect
Ian is co-founder of Stadia Maps and leads engineering and operations. He works on routing, navigation, and the technical foundations that keep customer applications reliable at scale.
Water Labels Reworked: Cleaner Names, Smarter Placement, and Straits at Last
We overhauled water name labeling across our basemaps with better relevance in the tiles, cleaner names for seas and oceans, centered lake labels, and straits.
Water Labels Reworked: Cleaner Names, Smarter Placement, and Straits at Last
We overhauled water name labeling across our basemaps with better relevance in the tiles, cleaner names for seas and oceans, centered lake labels, and straits.
The Hidden Cost of Search: Why Your Geocoding Bill is Higher Than It Should Be
Google, Mapbox, AWS, and ESRI charge 6-8x more to store a geocoding result than to query it. Here's why the caching tax exists, and how Stadia Maps avoids it.
The Hidden Cost of Search: Why Your Geocoding Bill is Higher Than It Should Be
Google, Mapbox, AWS, and ESRI charge 6-8x more to store a geocoding result than to query it. Here's why the caching tax exists, and how Stadia Maps avoids it.
The Open Data Superpower: Why Global Search is Moving Beyond Proprietary Silos
Stadia Maps geocoding and search APIs ingest continuous open data for rapid updates, multilingual search, and precision reverse geocoding.
The Open Data Superpower: Why Global Search is Moving Beyond Proprietary Silos
Stadia Maps geocoding and search APIs ingest continuous open data for rapid updates, multilingual search, and precision reverse geocoding.
Precision Meets Privacy: Elevating the Consumer Search Experience
Stadia Maps geocoding API delivers structured search, reverse geocoding, and autocomplete across 1B+ locations — no user tracking, no ad-network bias.
Precision Meets Privacy: Elevating the Consumer Search Experience
Stadia Maps geocoding API delivers structured search, reverse geocoding, and autocomplete across 1B+ locations — no user tracking, no ad-network bias.
The Invisible Costs of Routing: Privacy, Pricing, and Avoiding the "MAU" Trap
Compare mapping SDKs on privacy and pricing. Stadia Maps is private by design and bills on usage only — no data harvesting, no MAU fees.
The Invisible Costs of Routing: Privacy, Pricing, and Avoiding the "MAU" Trap
Compare mapping SDKs on privacy and pricing. Stadia Maps is private by design and bills on usage only — no data harvesting, no MAU fees.
How We Fixed Water Feature Rendering Across All Zoom Levels in Our Basemaps
Mixing Natural Earth and OSM data across zoom levels broke rivers, coastlines, and islands. Here's how a single Overture Maps dataset fixed it.
How We Fixed Water Feature Rendering Across All Zoom Levels in Our Basemaps
Mixing Natural Earth and OSM data across zoom levels broke rivers, coastlines, and islands. Here's how a single Overture Maps dataset fixed it.
Beyond the Car: Routing for the Other 90% of Transport
Trucks, e-bikes, and LSVs need more than car-first routing. How Stadia Maps uses Valhalla and OpenStreetMap for modal-specific routing APIs.
Beyond the Car: Routing for the Other 90% of Transport
Trucks, e-bikes, and LSVs need more than car-first routing. How Stadia Maps uses Valhalla and OpenStreetMap for modal-specific routing APIs.
Why Basic OpenStreetMap Routing Needs Real-Time Traffic
OpenStreetMap has a world-class road network, but no real-time traffic. Why algorithmic ETAs fail in logistics, and how TomTom-powered routing fixes it.
Why Basic OpenStreetMap Routing Needs Real-Time Traffic
OpenStreetMap has a world-class road network, but no real-time traffic. Why algorithmic ETAs fail in logistics, and how TomTom-powered routing fixes it.
AI Tools for API Companies: 4 Design Principles for AI-Native API Consumption
Four design principles for MCP servers and AI tools that models actually use: contextual descriptions, token frugality, AI-readable outputs, focused tools.
AI Tools for API Companies: 4 Design Principles for AI-Native API Consumption
Four design principles for MCP servers and AI tools that models actually use: contextual descriptions, token frugality, AI-readable outputs, focused tools.
AI Tools for API Companies: AI Needs Context, or How Our Auto-Generation Failed Spectacularly
Auto-generating an MCP server from OpenAPI specs seemed obvious — and failed. What we learned about AI-native API consumption and MCP tool design.
AI Tools for API Companies: AI Needs Context, or How Our Auto-Generation Failed Spectacularly
Auto-generating an MCP server from OpenAPI specs seemed obvious — and failed. What we learned about AI-native API consumption and MCP tool design.
Ferrostar: Building a Cross-Platform Navigation SDK in Rust (Part 2 - iOS Packaging)
How we cross-compile Rust for iOS, package an XCFramework, and publish a Swift Package — Part 2 of the Ferrostar navigation SDK deep dive.
Ferrostar: Building a Cross-Platform Navigation SDK in Rust (Part 2 - iOS Packaging)
How we cross-compile Rust for iOS, package an XCFramework, and publish a Swift Package — Part 2 of the Ferrostar navigation SDK deep dive.
Custom Markers and POST Support for Static Maps
Add custom marker images (up to 5 per request, 128px) to static maps, and send complex requests as JSON via POST to bypass URL length limits.
Custom Markers and POST Support for Static Maps
Add custom marker images (up to 5 per request, 128px) to static maps, and send complex requests as JSON via POST to bypass URL length limits.
Ferrostar: Building a Cross-Platform Navigation SDK in Rust (Part 1)
Why Stadia Maps built Ferrostar's core in Rust with UniFFI: cross-platform architecture, Cargo workspace setup, and idiomatic Swift/Kotlin bindings.
Ferrostar: Building a Cross-Platform Navigation SDK in Rust (Part 1)
Why Stadia Maps built Ferrostar's core in Rust with UniFFI: cross-platform architecture, Cargo workspace setup, and idiomatic Swift/Kotlin bindings.
Water Labels Reworked: Cleaner Names, Smarter Placement, and Straits at Last
We overhauled water name labeling across our basemaps with better relevance in the tiles, cleaner names for seas and oceans, centered lake labels, and straits.
Water Labels Reworked: Cleaner Names, Smarter Placement, and Straits at Last
We overhauled water name labeling across our basemaps with better relevance in the tiles, cleaner names for seas and oceans, centered lake labels, and straits.
The Hidden Cost of Search: Why Your Geocoding Bill is Higher Than It Should Be
Google, Mapbox, AWS, and ESRI charge 6-8x more to store a geocoding result than to query it. Here's why the caching tax exists, and how Stadia Maps avoids it.
The Hidden Cost of Search: Why Your Geocoding Bill is Higher Than It Should Be
Google, Mapbox, AWS, and ESRI charge 6-8x more to store a geocoding result than to query it. Here's why the caching tax exists, and how Stadia Maps avoids it.
The Open Data Superpower: Why Global Search is Moving Beyond Proprietary Silos
Stadia Maps geocoding and search APIs ingest continuous open data for rapid updates, multilingual search, and precision reverse geocoding.
The Open Data Superpower: Why Global Search is Moving Beyond Proprietary Silos
Stadia Maps geocoding and search APIs ingest continuous open data for rapid updates, multilingual search, and precision reverse geocoding.
Precision Meets Privacy: Elevating the Consumer Search Experience
Stadia Maps geocoding API delivers structured search, reverse geocoding, and autocomplete across 1B+ locations — no user tracking, no ad-network bias.
Precision Meets Privacy: Elevating the Consumer Search Experience
Stadia Maps geocoding API delivers structured search, reverse geocoding, and autocomplete across 1B+ locations — no user tracking, no ad-network bias.
The Invisible Costs of Routing: Privacy, Pricing, and Avoiding the "MAU" Trap
Compare mapping SDKs on privacy and pricing. Stadia Maps is private by design and bills on usage only — no data harvesting, no MAU fees.
The Invisible Costs of Routing: Privacy, Pricing, and Avoiding the "MAU" Trap
Compare mapping SDKs on privacy and pricing. Stadia Maps is private by design and bills on usage only — no data harvesting, no MAU fees.
How We Fixed Water Feature Rendering Across All Zoom Levels in Our Basemaps
Mixing Natural Earth and OSM data across zoom levels broke rivers, coastlines, and islands. Here's how a single Overture Maps dataset fixed it.
How We Fixed Water Feature Rendering Across All Zoom Levels in Our Basemaps
Mixing Natural Earth and OSM data across zoom levels broke rivers, coastlines, and islands. Here's how a single Overture Maps dataset fixed it.
Beyond the Car: Routing for the Other 90% of Transport
Trucks, e-bikes, and LSVs need more than car-first routing. How Stadia Maps uses Valhalla and OpenStreetMap for modal-specific routing APIs.
Beyond the Car: Routing for the Other 90% of Transport
Trucks, e-bikes, and LSVs need more than car-first routing. How Stadia Maps uses Valhalla and OpenStreetMap for modal-specific routing APIs.
Why Basic OpenStreetMap Routing Needs Real-Time Traffic
OpenStreetMap has a world-class road network, but no real-time traffic. Why algorithmic ETAs fail in logistics, and how TomTom-powered routing fixes it.
Why Basic OpenStreetMap Routing Needs Real-Time Traffic
OpenStreetMap has a world-class road network, but no real-time traffic. Why algorithmic ETAs fail in logistics, and how TomTom-powered routing fixes it.
AI Tools for API Companies: 4 Design Principles for AI-Native API Consumption
Four design principles for MCP servers and AI tools that models actually use: contextual descriptions, token frugality, AI-readable outputs, focused tools.
AI Tools for API Companies: 4 Design Principles for AI-Native API Consumption
Four design principles for MCP servers and AI tools that models actually use: contextual descriptions, token frugality, AI-readable outputs, focused tools.
AI Tools for API Companies: AI Needs Context, or How Our Auto-Generation Failed Spectacularly
Auto-generating an MCP server from OpenAPI specs seemed obvious — and failed. What we learned about AI-native API consumption and MCP tool design.
AI Tools for API Companies: AI Needs Context, or How Our Auto-Generation Failed Spectacularly
Auto-generating an MCP server from OpenAPI specs seemed obvious — and failed. What we learned about AI-native API consumption and MCP tool design.
Ferrostar: Building a Cross-Platform Navigation SDK in Rust (Part 2 - iOS Packaging)
How we cross-compile Rust for iOS, package an XCFramework, and publish a Swift Package — Part 2 of the Ferrostar navigation SDK deep dive.
Ferrostar: Building a Cross-Platform Navigation SDK in Rust (Part 2 - iOS Packaging)
How we cross-compile Rust for iOS, package an XCFramework, and publish a Swift Package — Part 2 of the Ferrostar navigation SDK deep dive.
Custom Markers and POST Support for Static Maps
Add custom marker images (up to 5 per request, 128px) to static maps, and send complex requests as JSON via POST to bypass URL length limits.
Custom Markers and POST Support for Static Maps
Add custom marker images (up to 5 per request, 128px) to static maps, and send complex requests as JSON via POST to bypass URL length limits.
Ferrostar: Building a Cross-Platform Navigation SDK in Rust (Part 1)
Why Stadia Maps built Ferrostar's core in Rust with UniFFI: cross-platform architecture, Cargo workspace setup, and idiomatic Swift/Kotlin bindings.
Ferrostar: Building a Cross-Platform Navigation SDK in Rust (Part 1)
Why Stadia Maps built Ferrostar's core in Rust with UniFFI: cross-platform architecture, Cargo workspace setup, and idiomatic Swift/Kotlin bindings.