Winston Hoyle

I build geospatial data pipelines, APIs and interactive maps.

Now
Staff Software Engineer at Ad Hoc
Before
Esri, Maxar, TomTom and iMerit, since 2018
Based in
Los Angeles, working remotely

Where I've worked

  1. 2025 to now

    Ad Hoc

    Staff Software Engineer, Contractor

    Remote, Silver Spring, MD office

    Lead the componentization and scaling of interactive maps for the National Weather Service's new weather.gov, live now as beta.weather.gov.

    • Scheduled ingestion jobs in Go (cron) for large weather datasets on recurring update cycles.
    • Interactive maps for state, county and point forecast pages.
    • Schemas and migrations for geographic and large gridded weather data.
    • Subject matter expert and primary liaison between the beta site, built to serve millions of users, and api.weather.gov, a public API with millions of users.
  2. 2022 to 2024

    iMerit

    Solutions Engineer

    Remote, New Orleans, LA office

    Led LiDAR annotation projects for government, geospatial and autonomous vehicle customers.

    • Primary point of contact for LiDAR projects, managing ingestion and evaluation of LiDAR data.
    • Product and workflow demos for prospective customers, technical documentation, and professional services support.
    • Customer workflows in Python on AWS (SageMaker, ECS, ECR, Lambda): mask generation, dataset configuration, ingestion and export APIs.
    • A Python REST API for timekeeping and a QGIS plugin for annotation analytics.
    • Researched, evaluated and onboarded technology partners, with independent trials in LiDAR, point cloud and geospatial work.
  3. 2021 to 2022

    TomTom

    Software Engineer II

    Remote, Lebanon, NH office

    Geospatial and infrastructure work on Azure for next-generation traffic services and an OpenStreetMap application.

    • Cut a pipeline from 22 hours to under 2, saving thousands of dollars a day.
    • Generated roads from GPS traces: Python algorithms to aggregate traces into road geometry, with horizontally scaled map tiling.
    • Moved geospatial Python to Kubernetes and Azure Batch, and wrote Spark jobs in Databricks over traffic data.
  4. 2020 to 2021

    Maxar Technologies

    Software Developer, Contractor

    Remote, Arlington, VA office

    Full-stack software for government satellite programs.

    • Led the backend of a Bayesian modeling web app in Python and FastAPI on AWS.
    • Designed the PostgreSQL, PostGIS and Elasticsearch architecture behind an Apache NiFi news pipeline.
    • Optimized PostgreSQL geospatial structures for a vessel tracking app, served through GeoServer, and modernized its Python GIS code with Shapely, H3 and GDAL.
    • An internal HR app in Python and React that consolidated data from multiple sources.
  5. 2019

    The Buffalo Group

    Software Developer, Contractor

    Remote, Reston, VA office

    Full-stack development and GIS lead, with OpenLayers, Leaflet, GDAL, GeoServer and GRASS. Wrote the Docker build scripts for a cloud-agnostic deploy.

    • Command-line GIS tools exposed as REST endpoints in Python and FastAPI.
    • Microservices backend for a terrain modeling app: GRASS, GDAL, Nameko, Flask and RabbitMQ in Docker.
    • Sole developer of the mapping component in the React frontend.
  6. 2018 to 2019

    Esri

    ArcGIS Analyst

    Remote, Vienna, VA office

    Resolved issues on enterprise GIS servers across AWS, Azure, SQL Server and PostgreSQL.

    • Python subject matter expert: wrote internal and public articles on Python availability.
    • Diagnosed issues, wrote scripts and logged defects against Esri's APIs for Python, JavaScript, Java and C#.
    • Deployed ArcGIS Enterprise and the ArcGIS API for Python on secure systems for defense clients, and extended their web maps with Web AppBuilder and Esri Leaflet.
  7. Education

    George Mason University

    B.S. in Geography

    Minor in Computational and Data Sciences.

What I build on my own time

Flight Atlas

Every direct flight route between airports in the US, Canada and Mexico, rebuilt each month from Wikipedia. Pick an airport or an airline to see where it flies.

  • A monthly Python scraper parses 10 Wikipedia airport lists into 21K+ routes, published to S3 as precomputed JSON, served by Lambda and cached at Cloudflare's edge.
  • Each month's routes load as one ~75 KB download and filter in the browser, drawn on an OpenLayers canvas with 1,100+ airports.
  • Per-airport and per-country re-scrapes merge into the live snapshot, so a failed page never forces a full rerun.
  • All AWS and Cloudflare infrastructure is in Terraform, deployed by GitHub Actions.

Python, React, OpenLayers, ECS Fargate, Lambda, S3, API Gateway, Terraform, Cloudflare Pages

VineMapper

A new map every day for a year straight, on demographics, politics, economics and retail. More than 300 maps and 30 million views, picked up by news outlets at home and abroad.

  • An open-source repository for collecting, cleaning and visualizing geospatial data from diverse sources.
  • Each map has its own folder with the data and Jupyter notebook behind it.

Python, QGIS, GeoPandas, Pandas, NumPy, Beautiful Soup, Jupyter

Practice Speaking

An Android app for practicing a language out loud. An AI tutor answers by voice and underlines your grammar mistakes. It covers Russian, French, Portuguese, German and Spanish.

  • Anthropic, OpenAI and Gemini sit behind one provider interface and one contract test suite.
  • Speech, search and key storage all run on the phone, so the app needs no backend or account.
  • MVVM with exhaustive sealed-type error handling, Robolectric and Compose UI tests, and signed APK releases built on each tag.

Kotlin, Jetpack Compose, Room, Android Keystore, GitHub Actions

WMATA Fares

Pick a DC Metro station and every other station is colored by what the trip costs, at peak, off-peak or reduced fares. Presented at a WMATA mapping and transit meetup.

  • Fares come from the WMATA API and Open Data DC, stored in S3 and served by one Lambda behind API Gateway.
  • Terraform covers AWS and Cloudflare, and GitHub Actions tests and deploys on every push.

Python, TypeScript, React, Leaflet, Lambda, Terraform, Cloudflare Pages

Income by Census Tract

About 4,700 tracts in Massachusetts and Los Angeles, colored by median income, mean income or income bracket from the 2024 American Community Survey.

  • A GeoPandas pipeline joins Census table S1901 to TIGER/Line shapes and simplifies them to about 5 m.
  • The map is one static page on Leaflet's canvas renderer, with no build step.

Python, GeoPandas, Census API, Leaflet, GitHub Pages

TimeKeeper for QGIS

Track project time without leaving QGIS, backed by a swappable FastAPI and SQLite service.

Python, PyQGIS, FastAPI, SQLite

Tools

Languages
Python, Go, Kotlin, JavaScript/TypeScript, SQL, Java, HTML/CSS
Geospatial
PostGIS, GDAL, GeoServer, QGIS, GRASS, Leaflet, OpenLayers, GeoPandas, Shapely, H3, ArcGIS
Cloud
AWS, Azure (Batch, Databricks), GCP, Cloudflare, Terraform, Docker, Kubernetes, GitHub Actions
Frameworks
FastAPI, Flask, Nameko, React, Node.js, Jetpack Compose, Spark
Databases
PostgreSQL, DynamoDB, Elasticsearch, SQLite, SQL Server
Systems
Linux (Ubuntu, Debian, CentOS), Windows, Android

Get in touch

Email is the fastest way to reach me.

[email protected]