John Swanson - Software Engineer
A seasoned software engineer with a decade of industry experience, expertise in functional programming, a passion for observability, and a dedication to mentorship and collaboration in remote work environments. I enjoy thinking about idempotency, transactionality, and other challenges of distributed systems.
Professional Experience
2020 - now: 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, currently 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 asyncronous 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 culstomer billing records, used to obtain/stay complaint 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