A printable version of this resume is also available.

Work History

2019 to Present

sourcegraph Sourcegraph

I am a software engineer on the Code Intelligence team. I am currently working on providing fast and precise code intelligence to power operations such as cross-repository jump-to-definition and cross-repository find-references.

We are currently utilizing Microsoft's Language Server Index Format as an upload format. For more information, see the introductory blog post. In addition to building the infrastructure for serving LSIF data, I have also worked on writing LSIF indexers for Go, Python, Typescript, and Java. Our progress can be tracked on

2015 to 2019


I am a senior software engineer on the Labs team, which is currently focused on building an IFTTT-like engine as well as the surrounding ecosystem to allow third-parties to easily integrate with customer-defined workflows.

We previously designed Mitel's Internet of Things Collaboration strategy, which involved building out infrastructure for registering LoRa gateways and devices and reading, storing, and aggregating sensor readings. Prior to an acquisition, we were focused on building Summit as part of Mitel's Unified Communications Platform as a Service offering. This allowed customers to build voice and SMS applications as Lua code that would run in a containerized sandbox.

I was the primary author the following infrastructure services written in a mix of Go, Python, and C (in the form of Redis modules).

  • Charon is an distributed limiting service which grants or denies an internal application permission to use a resource on behalf of a tenant based on current resource usage and the tenant's recent usage history. The service increases infrastructure reliability by ensuring that no resource is overcommitted, and ensures that no single tenant can utilize a disproportionate amount of resources with respect to a tenant's service-level agreement. Technical details are available in the Whitepaper.

  • Domo is an S3-aware HTTP proxy layer in front of Ceph Object Store which allows for automatic, instantaneous failover to a remote data center when the local Ceph cluster is slow or unresponsive. The server synchronizes clusters across data centers on write requests so that a write to any data center will (eventually) become globally consistent.

  • Bigboss is a Mesos framework and deployment system for frequent-churn containers. Bigboss elastically schedules call processor services so that at any given time between 30-40% of all running processes are available to accept a new call without delay. When new call processor code is deployed, idle call processors are shut down and replaced with a fresh container running the updated version. The following image is a portion of the scheduler metrics dashboard over the course of two weeks (for one datacenter). Peaks indicate heavy call traffic, and the two-day flat line periods are the weekend, where call volume does not generally exceed our elastic scaling threshold.

  • Apollo is a audio streaming server which mixes hold music and announcements from tenant-configurable playlists. The server self-regulates load by redirecting attached clients to servers which are already serving a particular audio file, minimizing the bytes in-flight from the audio storage system.
2008 to 2011

ESDN, Inc.

Developed an e-commerce and supply chain web application which streamline interactions between jewelry consumers, retailers, and suppliers. Major projects include a consumer-facing jewelry collection showcase and a retail (brick-and-mortar) location management system. Primary technologies include ASP.NET MVC using C# and MSSQL.


2011 to 2013

MS Computer Science

University of Wisconsin – Milwaukee

My thesis, Optimizing the RedPrairie Distance Cache, was supervised by Christine Cheng.

RedPrairie's Transportation Management products are based on a suite of optimizers that approximate solutions for the Vehicle Routing Problem, a well-known NP-hard problem. The optimizers work by heuristically updating portions of route assignments and require many prohibitively expensive queries to a Geographic Information System. The thesis explores several strategies for caching queries in-memory – specifically, how can hash tables be organized to maximize the entries which can fit in resident memory, and which cache eviction strategies retain the most useful data with respect to the optimizer's access patterns.

RedPrairie was acquired by JDA Software Group, Inc in 2012.

Teaching History

2011 to 2016

University of Wisconsin – Milwaukee

  • CompSci 658 / 790 – iOS Programming
  • CompSci 482 – Server-side Internet Programming
  • CompSci 481 – Rich Internet Applications
  • CompSci 655 – Compiler Implementation Laboratory
  • CompSci 251 – Intermediate Computer Programming
  • CompSci 744 – Text Retrieval and Its Applications in Biomedicine
  • CompSci 395 – Social, Professional, Ethical Issues
  • CompSci 361 – Introduction to Software Engineering
  • CompSci 351 – Data Structures and Algorithms
  • CompSci 315 – Assembly Language Programming
  • CompSci 201 – Introduction to Computer Programming
  • CompSci 150 – Survey of Computer Science

created: designed the syllabus, focus, coursework, and lectures the first semester this course was offered

instructed: re-designed the coursework and lectures of an existing course

assisted: instructed labs, graded student work, prepared assignments