ryan w tenney

engineer

I build high-scale distributed systems, routing platforms, and optimization engines. I lead small teams that tackle hard problems and ship fast.

About

I specialize in high-scale distributed systems, routing, and optimization. Over 17 years I've built platforms handling billions of daily requests, led teams that ship fast on ambiguous problems, and found the gaps nobody else was looking for.

I'm at my best leading small, autonomous teams tackling hard infrastructure challenges — real-time routing, dispatch optimization, platform reliability at scale. I like working at the intersection of deep technical problems and business-critical outcomes.

Outside of work, I maintain open-source projects, tinker with hardware, and occasionally build things like constraint solvers for wedding seating charts.

Experience

2018 — 2026

Senior Staff Engineer

Grubhub

Technical lead for Pathfinder, the vehicle routing platform handling 1.5 billion requests per day.

  • Led a team of 5 engineers building real-time traffic, map matching, and drive time polygon services
  • Designed Just-In-Time order dispatch to time kitchen starts based on courier arrival predictions — applied to over 200 million orders
  • Built actor-based simulation modeling realistic order and courier behavior in pre-production, catching bugs that previously went undetected until production
  • Discovered a systemic regulatory compliance violation carrying eight-figure liability across multiple state jurisdictions; implemented geofencing controls to remediate
  • Built MCP servers connecting AI tools to internal systems — self-directed work that spread organically across engineering teams
2016 — 2017

Senior Engineer

American Express

Middleware development for the US cardmember mobile app.

  • Debugged production login failures caused by a race condition that only manifested on Power8 hardware; kept systems running manually during an extended code freeze while tracing the root cause, then shipped a one-line fix
  • Led development of Check Spending Power; uncovered that a dependent team's promised API didn't actually exist, escalated early enough to fall back to a legacy API and ship on time
  • Designed and built mobile backend for Pay It / Plan It, allowing cardholders to pay or finance transactions directly from the app
2013 — 2016

Senior Engineer

EnerNOC

Platform engineering for energy management and demand response systems.

  • Internationalized the entire platform to capture a Japan market opportunity post-Fukushima; designed approach so subsequent locales required no more than 60 days and $60k to support
  • Built tariff engine processing real-time energy readings against a database of global utility tariffs
  • Led engineering team's migration from monolithic webapp to microservices architecture
2008 — 2013

Software Engineer

Shutterstock, Martello Technologies, Symplicity, Xerox

Backend development and systems work across a range of industries.

Projects

01

Courier Signals: The Trip That Advances Itself

Grubhub made couriers tap buttons to move a delivery forward; nobody else did. Courier Signals replaced the taps with the phone's own sensors — GPS, closing rate, and iOS Motion Activity — fused through a filter over the trip's state machine, where getting out of the car is the most informative event in a delivery and no geofence can see it.

Sensor FusionHMMBayesian FilteringCore MotionGeofencingTypeScript
02

Actor Simulation: A Marketplace That Runs Itself

The actor-based simulation that gave Grubhub's pre-production environment a heartbeat, rebuilt in the browser: statistically realistic diners, merchants, and couriers who actually drive real Chicago roads — offer, accept, reject, pocket veto — through a full simulated day of meal peaks, dispatch queues, and delivery stats.

Discrete-Event SimulationActor ModelPoisson ProcessesOSMTypeScriptWeb Workers
03

External Courier Gateway: Someone Else's Couriers

The service that broke Grubhub Managed Delivery's deepest assumption — that the courier on a delivery is ours. Holds against our own dispatch, courier identities minted from an opaque provider id, masked phone numbers, and a full courier's worth of events emulated from webhooks — then re-pointed at an autonomous drone fleet as configuration, not a rewrite.

Event-Driven ArchitectureWebhooksIdempotencyAnti-Corruption LayerState MachinesJava
04

Turn-by-Turn: Guidance from a Graph With No Names

In-app navigation built on a routing graph deliberately stripped of everything guidance needs. Street names come back as a bit-packed side-car — a grammar of direction, base name, and street type over a front-coded dictionary, 2.6 bytes per segment against 76 — and maneuvers are derived per query from junction geometry, branch analysis, and name continuity, because a maneuver isn't a property any edge can store.

CRPBit PackingFront CodingComputational GeometryOSMTypeScript
05

HMM Map Matching: Noisy Pings onto Roads

The map matcher behind Grubhub's courier tracking, rebuilt in the browser: a hidden Markov model over packed parameter arrays — quantized reference speeds, turn probabilities, quadtree candidate lookup — decoding a 1 Hz GPS stream whose errors are ray-traced through 17,000 real Chicago buildings using the GPS Urban Canyon physics, live against ground truth.

HMMViterbiQuadtreeRay TracingOSMTypeScriptWeb Workers
06

Autodispatch: The Assignment Problem, Live

The courier-to-order assignment engine at Grubhub, rebuilt as an interactive bipartite graph: a totally unimodular MIP solved exactly by min-cost flow, an acceptance model structurally forbidden from seeing tips, and the offline simulation harness that proved two plausible objective improvements weren't — including one that posts the best acceptance rate on the board while stranding low-tip diners.

Mixed-Integer ProgrammingMin-Cost FlowTotal UnimodularitySimulationTypeScript
07

Bounder: Delivery Boundaries from Isochrones

The delivery boundary generator I owned from inception at Grubhub, rebuilt in the browser: a CRP isochrone descended into every touched cell, buffered into a polygon via a raster distance field and marching squares, then simplified 95× — with the coverage and over-promise error measured on every query rather than assumed.

CRPIsochronesMarching SquaresComputational GeometryOSMTypeScript
08

Geocoding Without Google

The combined geocoder and reverse geocoder I built on OpenStreetMap data at Grubhub — rejecting Google Maps over a caching restriction that turned a one-time cost per address into a recurring one — rebuilt in the browser: USPS Publication 28 standardization applied to both sides of the match, three inverted indexes that fail in different directions, parity-aware house-number interpolation, and a confidence tier honest enough to drive product behavior.

GeocodingUSPS Pub 28MetaphoneTrigram IndexOSMTypeScript
09

Pathfinder 3.0: Radius-Based Merchant Discovery

Interactive visualization of the merchant discovery design I led at Grubhub: CRP-partitioned road graph, per-cell boundary cliques, and precomputed merchant routing data driving an expanding radius search — animated on real OSM data for downtown Chicago, entirely in the browser.

CRPDijkstraOSMTypeScriptWeb Workers
10

Customizable Route Planning, Visualized

The CRP routing engine behind Grubhub's Pathfinder service, rebuilt in the browser: partition a real OSM road network, compute boundary cliques live, then watch point-to-point queries escape their cell, hop across the overlay, and unpack into the shortest path.

CRPDijkstraOSMTypeScriptWeb Workers
11

Multi-tenant community incident reporting SaaS, grown from a system I built for my own neighborhood association. Rust on Lambda, SvelteKit frontend, and a layered spam-defense stack — including a proof-of-work-style upload authorization — that works without requiring reporters to create accounts.

RustAxumAWS LambdaDynamoDBSvelteKitServerless
12

WGnext

WireGuard client for iOS and macOS with automatic tunnel failover. Fork of the official client adding failover groups: traffic-based health detection, seamless in-place config swaps inside the Network Extension, and hot-spare probes that preserve the Noise session for zero-handshake failover.

SwiftGoNetwork ExtensionWireGuard
13

Loopback Port Forwarding (US 10,097,523)

The local agent from my patent with Martello Technologies, rebuilt in the browser: a management client hardcoded to a single TCP port, pointed at every device on every customer network at once by binding each one to its own stable address inside 127.0.0.0/8 — with the on-demand setup sequence (authorize, port forward down the probe's reverse tunnel, device proxy, nonce-matched meet-in-the-middle) running hop by hop.

JavaAppletSSHTCPSocketsPatent
14

xcancel Forwarder

Network-wide redirect of twitter.com/x.com links to xcancel, configured by a zero-backend web wizard: it interviews you about your network, generates a root CA and wildcard server certs entirely in the browser with node-forge, tailors nginx/Caddy + Docker Compose + DNS config to your answers, and zips the whole deployment into a single download with JSZip.

nginxDockerDNSnode-forgeJSZipJavaScript
1 1
15

Wedding Seating Optimization

Constraint solver that generated the final seating chart for my wedding. Because some problems deserve a proper optimizer.

PythonPuLPFICO Xpress
16

Twomlaut Tour of Germany

TSP-optimized road trip visiting every German city with two or more umlauts. MIP formulation with PuLP/CBC, road routing via Graphhopper on OSM data.

PythonPuLPGraphhopperOSM
17

GPS Urban Canyon

Ray-traced GPS visibility and multipath in real Midtown Manhattan: NYC Open Data footprints, IGS precise orbits parsed in the browser, image-method facade reflections, a 3D city view, and WLS position-error heatmaps — why your phone thinks you're two blocks away.

TypeScriptPythonComputational GeometryOrbital Mechanicsthree.js
18

OmniVault

Self-hosted universal file management with full-text search across 1000+ formats, AI-powered enrichment, and complete version history. Think Paperless-NGX with complete file type freedom and integrated AI.

JavaSpring BootReactElasticsearchPostgreSQLDocker
19

Dropwizard Metrics

Lead maintainer (2014-2017) of the de facto standard for JVM application metrics. Captures JVM- and application-level metrics so you know what's going on.

JavaOpen Source
7.8k 1.8k
20

USB Battery Minder

Custom PCB design for an 8-port USB-C charging station that automatically stops charging at 80% state-of-charge. Detects the CC-to-CV transition in the lithium-ion charge profile to infer battery level without device communication.

KiCadC++ESP32Hardware Design
21

Graph Clearing Problem

Solver for a minimax graph clearing problem, built for the ACP Summer School 2018 competition — the only submission within the time limit.

GoConstraint ProgrammingDecision Diagrams
22

Metrics Spring

Spring integration for Dropwizard Metrics. Instruments annotated methods on Spring beans through dynamic proxies and bytecode generation. Used by American Express, Apple, Dealer.com, eHarmony, ESPN, Orbitz, and more.

JavaSpringOpen Source
697 220
23

passkit4j

Java library for generating Apple Passbook (.pkpass) files.

JavaOpen Source
81 46

Reach out

I'm currently exploring Staff Engineer roles and building out a consultancy practice. Whether you have a hard technical problem, need someone to lead a team, or just want to talk shop — I'd like to hear from you.