Resume
Staff Software Engineer · Data & Knowledge Platforms · Knowledge Graphs for AI
Bainbridge Island, WA · (360) 930-9180 · [email protected] · linkedin.com/in/tobych · tobychampion.com · letsmapbainbridge.org
Summary
I build platforms that make other people productive: data and knowledge platforms for researchers and applications, and the tools, libraries and onboarding that let developers move fast. From ESA mission control to utility trucks to a community history graph, in Python, knowledge graphs (RDF, OWL, SPARQL), geospatial data and AWS with Terraform. I work with AI coding agents as a collaborator, not an autopilot. A natural bridge between specialists and engineers, a patient mentor and a clear writer, with a gentle English manner.
Selected achievements
- Built CityGraph single-handed in 10 months for my Let’s Map Bainbridge project: a geospatial knowledge-graph platform (OWL ontology, SKOS vocabulary, 14 Dagster pipelines) now holding nearly 4,000 people, places, buildings and vessels.
- Built the telemetry extraction software for ESA’s Cluster mission, used by the five research teams of its Wave Experiment Consortium. Because it checked everything, it caught a bug in the spacecraft’s on-board software before launch; at ESA’s mission control in Darmstadt during the 2000 launches, its data confirmed each spacecraft had deployed successfully.
- Co-invented a patented IoT tool-tracking system (RECON Dynamics; US 10,580,276) and led its back-end development, including the state machine that ran on Puget Sound Energy crew trucks and the MQTT ingestion behind its Django platform.
- Cut deploy times from 6 hours to 20 minutes (RECON) and from 45 minutes to 5 (Attunely, with SaltStack).
- Contributed the user endpoints to the WordPress REST API, now part of WordPress core.
Skills
- Languages: Python (expert), SQL, SPARQL, JavaScript, C
- Data engineering: Dagster, PostgreSQL, DuckDB, GeoParquet, Kinesis, ETL pipelines, data modeling, data quality
- Knowledge graphs: RDF, OWL, SKOS, SHACL, SPARQL/GeoSPARQL, Apache Jena Fuseki, Protégé, CIDOC CRM, Wikidata
- Geospatial: PostGIS, QGIS, GeoPandas, OpenStreetMap, MapLibre, vector tiles, GeoServer (OGC WFS), STAC, ArcGIS REST
- Cloud & DevOps: AWS (EC2, RDS, ECS, Lambda, Cognito, WAF, IAM), GCP, Terraform/OpenTofu, Ansible, SaltStack, Docker, GitHub Actions, Woodpecker, Jenkins, Prometheus/Grafana, Linux administration
- Developer experience: SDKs and sample code, developer documentation (Sphinx), shared libraries, project templates, reproducible dev environments, CI/CD and deploy automation, chatops, onboarding
- Backend & practice: Django, FastAPI, Flask, GraphQL, OIDC/SSO; trunk-based development, TDD, domain-driven design, technical writing, mentoring, AI-assisted development (Claude Code, MCP)
Experience
Founder & Lead Engineer, Let’s Map Bainbridge · Bainbridge Island, WA · 2023–present
Hyperlocal mapping and local-history project, with data from the City of Bainbridge Island and the Bainbridge History Museum. Private alpha.
- As sole engineer, built CityGraph: an ontology, a 955-concept SKOS vocabulary crosswalked to the Getty AAT, Wikidata and OSM tags, and a hybrid Jena Fuseki and PostGIS store joining OpenStreetMap, government GIS and museum records.
- Run every derived data product through 14 Dagster jobs, chained by sensors: RDF↔PostGIS projections, Wikidata enrichment, search indexing, map styles, tiles and backups.
- Designed and built a search query language (Lark grammar compiled to SQL) with type filters that follow the vocabulary hierarchy; serve OGC WFS to ArcGIS clients via GeoServer.
- Imported ~6,700 City-supplied addresses into OpenStreetMap, incrementally and checked; 9,100+ OSM changesets.
- Self-host on Proxmox and Hetzner (PostGIS streaming replica, Garage cluster, Woodpecker CI); develop with Claude Code under design docs, 60 codified skills and custom MCP servers.
Software Engineer, Rawlins Infra Consult · Remote · May–Jun 2026
Civil engineering and infrastructure consultancy.
- Built the cloud foundation for the firm’s first internal apps: AWS EC2 and RDS PostgreSQL via Terraform/OpenTofu and Ansible, Cloudflare Tunnel, GitHub Actions deploys.
- Implemented single sign-on for staff and client users (AWS Cognito, OpenID Connect, Flask).
Data Engineer (contract), American Family Insurance · Remote · Aug 2022–Jan 2023
Data Science & Analytics Lab: about 40 software engineers and data scientists.
- Worked on a Python property-data service that combines several vendors’ data and uses ML to choose the most trustworthy value; set up its Sphinx API documentation.
- Gave the lab written onboarding feedback, and interviewed developers about documentation pain points, presenting the findings to engineers and data scientists.
Senior Python Engineer (contract), Winnebago Industries · Remote · Jan–Apr 2022
Control and monitoring software for Winnebago’s first all-electric motorhome.
- Built the Python package that creates and parses RV-C (CAN bus) messages, with unit tests and Sphinx docs; it drove the prototype coach’s lighting and was later used in the e-RV’s coach control system.
- Bridged the remote lab’s CAN bus to developers’ machines (candump and cansend over SSH, relayed through an MQTT broker in each developer’s VM), so the team could read live traffic and send commands to real hardware.
- Built a disposable, standardized dev environment (Vagrant, Docker Compose, 10 services) connected to the prototype coach over VPN and SSH, and a cookiecutter template for new Python packages; proposed and prototyped camera-based checks of lighting commands at the Detroit lab.
Platform Engineer (contract), Attunely · Remote · Jan–Jun 2021
- Cut the development team’s deploy time from 45 minutes to 5 by replacing per-change VM rebuilds with SaltStack; owned the AWS infrastructure in Terraform (per-client modules, IAM, secrets, environments).
- Built a Salt master per environment with Terraform and a custom Salt module delivering secrets from AWS SSM Parameter Store; taught the team SaltStack (presentation, handover docs) and coached an engineer through his first Salt changes.
Senior Software Engineer (contract), EveryoneSocial · Remote · Jun–Nov 2020
- Led requirements and backend design for Private Groups (serverless Python on AWS: Lambda, AppSync GraphQL, Cognito) for a major enterprise customer.
- Supported the company’s SOC 2 readiness effort: fixed penetration-test findings (an AWS WAF rule blocking GraphQL introspection; TLS 1.2-only public APIs behind CloudFront, prototyped in Terraform) and planned moving secrets out of a shared Git repo into AWS.
Software Engineer, Machine Learning, Phyn · Hybrid, Seattle · Jan 2018–Dec 2019
Smart-water leak detection. The only software engineer on a seven-person Data Science & ML team, through commercial launch.
- Built the team’s shared Python library (~10k lines plus tests), so data scientists could work with telemetry and AWS without learning its details; a resilient Kinesis consumer for real-time telemetry; and CI/CD that retrained the disaggregation model per device every six hours, unattended.
- Led the moves from Python 2 to 3 and Windows to Mac; added project templates and setup guides; interviewed candidates and mentored a junior engineer.
Senior Software Engineer, RECON Dynamics · Hybrid, Kirkland, WA · 2012–2016
IoT tool tracking for utility crews; ran on Puget Sound Energy crew trucks for years.
- Led back-end development of the ToolVision platform (Django, PostgreSQL): designed its domain model and APIs; wrote about half its 6,000 commits. Built the in-truck state machine; introduced Protobuf; led MQTT ingestion (RabbitMQ, Celery).
- Led deployment automation (6 hours to 20 minutes); trunk-based delivery with feature switches; onboarding that had new developers committing to production on day one; chatops bots and team tooling.
Earlier career
- Divensi, Senior Software Engineer (2017): helped build a new consulting team; automated GCP setup with Python and SaltStack.
- California Appellate Defense Counsel, contract (2013–15): upgraded a legacy Django app on Heroku and added Solr search.
- Red Answers and others, contract (2011–12): one-command Rackspace deploys; Django for HTC; Django Feature Flipper.
- Avalara, SDK Support Analyst (2010): supported developers integrating the AvaTax API; drafted its ~15,000-word Developer Guide and wrote sample code in several languages.
- University of Sussex, SPRU, research software engineer (1999–2009): sole author of MCM Analyst, used by research teams in five countries; benchmarking system for 481 UK manufacturers; Python OLAP tool behind two Energy Policy papers.
- University of Sussex, Space Science Centre, PPARC Research Fellow (1993–2005): lead engineer on ground software for the Cluster Wave Experiment Consortium. Turned a struggling project around by introducing version control, then unit testing; built the telemetry extraction and decommutation software, and control software for the spacecraft interface simulator.
Talks
- “Beyond GIS Layers: A Spatiotemporal Knowledge Graph of Bainbridge Island,” CUGOS, University of Washington, Oct 2026
- Let’s Map Bainbridge, History Huddle series, Bainbridge History Museum, 2027
- “Feature flags with Waffle,” Django Seattle, 2013
Patent, publications & community
- US Patent 10,580,276 (2020), co-inventor. Two Energy Policy papers on UK road-freight energy use (2009, 2012), co-author.
- Founded the first mob programming meetup in the US (Seattle). Board member and Grants Coordinator, Bainbridge High School PTSO (2025–26).
- Volunteer GIS and cartography: Dana’s Trail map for Squeaky Wheels; the City’s Bike to School Day map; walkshed analysis for Safe Routes to School. Volunteer, Bainbridge History Museum.
Education
- B.Sc. Computer Science (First Class Honours), University of Sussex, UK.