John Swanson - Software Engineer

971-331-1800
john.d.swanson@gmail.com
johnswanson.dev

A seasoned software engineer with over a decade of industry experience, expertise in functional programming, permissions and access control, and a passion for observability. I'm the person who writes the migration and gets the data model right, and I enjoy making features behave correctly under caching, multi-tenancy, and the other cross-cutting challenges of distributed systems.

Professional Experience

2023 - now: Senior Software Engineer @ Metabase (remote)

  • Shipped the API Keys feature as the primary engineer: migrations, key creation and authentication, full CRUD, and excluding API-key users from billing calculations
  • Designed and built the archive-to-Trash system: the trash collection, restore/delete semantics, serialization, and search integration
  • Built Database Routing, a flagship enterprise feature - migrations, CRUD and healthcheck APIs, and router/mirror access controls made correct under caching, sandboxing, impersonation, serialization, and audit logging
  • Drove multi-tenancy: tenant provisioning and deactivation, tenant-scoped JWT auth with tenant attributes, dedicated tenant collections, and the permission model to match
  • Built Remote Sync, including transforms serialization and pull-mode behavior
  • Currently driving Explorations - a new asynchronous model for finding interesting patterns in data

2020 - 2023: Senior Software Engineer @ Reserve (remote)

  • Automated the (previously hours-long, manual) process of refreshing our blocklists of sanctioned individuals, improved precision/recall of the search, and reduced search time by over 50%
  • Implemented a system to rerun blocklist checks (with refreshed blocklists) across entire userbase on a regular basis
  • Designed and implemented an integration with Unit21 for fraud detection
  • Automated cryptocurrency deposits/withdrawals, handling $1M+ volume per week
  • Designed and implemented a robust, reliable and observable system for delivering webhooks to customers
  • Improved observability and reliability: containerized dependencies for local development, added observability tools to generate timing metrics and log contexts, propagated log contexts when running asynchronous jobs

2018 - 2020: Senior Software Engineer @ CircleCI (remote)

  • Designed and built a microservice to preprocess user config, used this preprocessing stage to add additional features, such as reusable, shared commands and jobs
  • Planned and implemented SLIs, SLOs, and error budgets for team services
  • Took on a failure-prone, expensive system for scaling VMs for user builds, made incremental improvements:
    • Circuit breaker (automatically switch between compute regions)
    • Auto-scaler (automatically determine demand for various machine sizes/types and scale them appropriately)
    • Improved isolation between different regions and compute types
    • Added Windows and GPU executors

2013 - 2018: Software Developer @ DreamHost (remote since 2015)

  • Led team of engineers in building a single-page app wysiwyg webpage editor
  • Designed and built out continuous integration/deployment using CircleCI and Kubernetes
  • Extracted financial data from customer billing records, used to obtain/stay compliant with a $30M loan from Goldman Sachs
  • Identified causes of customer churn based on statistical analysis of customer data

Side projects

  • TicTag - a stochastic time tracker. Used Slack to ping users at random intervals (averaging once per 45 minutes), allowing them to tag their time. Over long periods, you'd get a highly accurate picture of how you spend time with little effort. Integration with the Beeminder API provided a mechanism for setting up commitment contracts for how you spend time.
  • I've also made contributions to open-source projects like clj-time and chezmoi.

Education

BA Economics - Pomona College '10

Selected Technical Skills

Clojure / PostgreSQL / Linux / Git / Kubernetes / distributed systems