Resume

Who Am I?

I am a systems administrator-turned-software developer (and not the other way around), who enjoys working on backend systems, taking on architectural responsibilities, and approaching problems by decomposing them into smaller, more-approachable pieces. I am a quick learner, adaptable to short deadlines and fast-paced environments. While I do prefer to work as a productive member of a team, I do have a proven ability to work independently. I am seeking a position that will utilize my current strengths while allowing for professional growth in new skills and technologies.

A majority of my work over the past 10 years has been in the Go programming language, targeting Linux and BSD systems. Most of my time has been spent working on highly-scalable and reliable distributed systems and platforms, such as Kubernetes. I am currently learning the Rust programming language. In the past, I have also used Lua, Python, C, JavaScript, Common LISP, Erlang, TCL, and Ruby to varying extents.

When it comes to working with databases, I am most familiar with PostgreSQL, SQLite, Cassandra (and ScyllaDB), Redis, and etcd. I have a passing familiarity with Consul, memcached, InfluxDB, MongoDB, MySQL, and Elasticsearch.

Given my history as a systems administrator, I focus on automation and repeatable processes, using tools like Ansible, and Salt. I have also used Chef, Nomad, Puppet, and Terraform.


I have more than 10 years’ experience working remotely, and am only open to remote positions. I am not interested in working on contract terms; full-time employment only. I am not interested in management roles.

Specialities

  • Network API/RPC design (gRPC, HTTP) and message queues.
  • Concurrent software design patterns.
  • Relational and non-relational (“NoSQL”) database design.
  • Scalable system design techniques.
  • Continuous testing, integration, and deployment.

Experience

Akamai

Senior Engineer II (May 2023 — July 2024)

  • Worked on the CNS (Cloud Native Services) team.
  • The team’s subject matter expert on the Go programming language, and Kubernetes controllers.
  • Contributed to various proofs of concept for potential projects.
  • Wrote a proof of concept Kubernetes informer to replicate custom resources between clusters.
  • Contributed to Flatcar Container Linux to provide better support for Akamai Connected Cloud (Linode), including contributions to Flatcar’s documentation, as well as dependencies such as afterburn and ignition.

DigitalOcean

Senior Engineer II (June 2022 — February 2023)

  • Technical lead of the Delivery team.
  • Part of a cross-functional team to increase safety around software deployments.
  • Technical reviewer for proposals focused on increasing developer productivity, and redesigning core, internal systems’ architecture.
  • Overhauled my team’s bare-metal provisioning and configuration tooling, to minimize operational toil. When upgrading ~230 hosts between major operating system versions (e.g. Ubuntu 18.04 → Ubuntu 20.04 → Ubuntu 22.04), this work resulted in the process going from approximately 4 months of full-time work for 2 engineers, to 3 weeks of part-time work for 1 engineer.
  • Technical advisor on a cross-functional project setting up a managed, multi-tenant, multi-region Cassandra cluster.

Senior Engineer I (July 2020 — June 2022)

  • Member of the Delivery team.
  • Maintained and extended an internal, Kubernetes-based deployment platform used by a majority of teams.
  • Maintained a bespoke service discovery system that spanned most of DigitalOcean’s regions.
  • Tuned a Cassandra cluster spanning more than 12 regions/datacenters, used to power DigitalOcean’s internal service discovery system.
  • Enhanced the documentation and automation around the team’s bare-metal host management.
  • Maintained an internal artifact storage service used by many continuous integration and deployment pipelines: “artifacts.internal”.
  • Maintained an internal Docker/OCI image registry: “docker.internal”.
  • Served as a steward of DigitalOcean’s monolithic repository: “cthulhu”.
Skills

Kubernetes, Go, Bash, GNU make, gRPC, Concourse CI, GitHub Actions, Debian packaging, Ubuntu, Chef, Ansible, Cassandra


NetApp

Senior Software Engineer (September 2019 — July 2020)

  • Worked on the Kubernetes Application Management Platform team, on the NetApp Kubernetes Service (NKS) project.
  • Worked on various applications that did not fall into the domain of any other teams. For example: a GraphQL API service, and an in-cluster agent service for reporting on Kubernetes cluster health.
  • The de facto maintainer of the services that maintained always-on connections/tunnels with deployed Kubernetes clusters, called dispatch.
  • Wrote and implemented a proposal to scale the dispatch server to more than one instance, in the NKS backplane, while still allowing other, existing services to communicate through the tunnels without modification.
  • Passively worked on standardizing build and test scripts, across the various repositories that composed NKS; bringing consistency to Makefiles, and transferring responsibility of tasks from Dockerfiles and CI configurations, into the projects’ Makefiles.
Skills

Go, Kubernetes, Helm, Kustomize, CircleCI, GraphQL, Amazon Web Services


Rose Rocket

Senior Software Engineer (September 2018 — September 2019)

  • Technical lead for a team responsible for site reliability, systems administration, and “continuous improvements”.
  • Led the effort to consolidate various deployment environments, each with their own deployment methods, hosted across several cloud infrastructure providers, to a single, managed Kubernetes cluster (Amazon EKS).
  • The company’s Go programming language subject matter expert, providing code reviews and guidance on how to improve the company’s code base, and make it more idiomatic.
  • Improving continuous testing, integration, and delivery for all developed services.
  • Providing technical guidance on HTTP API design, database schema design, and system architecture.
Skills

Go, Kubernetes, Docker, Amazon Web Services, Ansible, Ubuntu, PostgreSQL, Jenkins, DigitalOcean


Global Cyber Alliance

Software Developer, Contractor (May 2016 — September 2018)

  • Technical implementation lead for the Internet Immunity project, which later became Quad9 DNS.
  • Wrote threat intelligence collection, parsing, and exposition tools.
  • Wrote services to generate, transport, store, and export anonymized telemetry from received DNS queries.
  • Wrote a service providing threat intelligence providers access to near-real-time, anonymized notification streams. These streams are populated when a domain name was blocked due to an indicator provided by that threat intelligence partner.
  • Provisioned and managed internal systems running FreeBSD, using Ansible and Salt.
  • Used an intentionally-small technology stack, due to the small team size: FreeBSD, Go, PostgreSQL, and Kafka.
  • Designed a PostgreSQL database schema for storing malicious domain names with automatic record expiry, and optimized for a read-heavy workload.
  • Wrote a parser for structured DNS TXT records, used for evaluation/“scoring” sender policy framework (SPF) and domain-based message authentication, reporting, and conformance (DMARC) policies.
Skills

DNS protocol, Go, PostgreSQL, Kafka, InfluxDB, Ansible, Salt, FreeBSD, pf, CentOS, dnsdist, Microsoft Azure, Amazon Web Services, Jenkins, haproxy, gRPC


Novetta

Software Developer (February 2015 — March 2016)

  • Worked on the Novetta Cyber Analytics v5 project.
  • Developed tooling to launch several-hundred cloud VMs, across multiple hosting providers, in less than 10 minutes, and have them managed with Salt.
  • Set up and maintain servers and the services on them, using Salt.
  • Developed a centralized authentication and authorization system, as there were no preexisting solutions that met the project’s needs.
  • Implemented a service discovery and monitoring system using Consul.
  • Wrote a Go package that allows developers to store metrics data in Elasticsearch and InfluxDB.
  • Designed, developed, and managed a fully-automated, continuous integration pipeline that built project components, packaged them into Docker images, and published them to a private Docker registry.
  • Maintained most of the project’s development and testing infrastructure in Amazon Web Services.
  • Assisted other project component teams on how to manage their own automated builds, using Jenkins and Docker.
  • Lead the “Core Services” component team, whose tasks included systems administration, and the development of supporting services that provided HTTP APIs to inspect overall system health, handle centralized authorization, and wrap existing HTTP APIs to integration them with the authorization system.
  • Launched the (now defunct) Operation Blockbuster website; was required to make sure it would not be vulnerable to a DDoS attack. (Novetta blog post)
Skills

Go, Ansible, Salt, CentOS, Docker, Amazon Web Services, PostgreSQL, Consul, Jenkins, Ubuntu, DigitalOcean, SoftLayer, Python, Cassandra, Elasticsearch, NSQ, InfluxDB


FR8nex

Senior Developer (June 2014 — February 2015)

  • Developed an administrative HTTP API service in Go, which provided the backing service to all of the front-end applications. This service was the “single point of truth” for all data.
  • Optimized Python and Go codebases, as well as our datastores (primarily PostgreSQL).
  • Utilized Ansible to manage the configuration of staging and production systems, as well as for scripting code and service deployments.
  • Managed staging and production infrastructure on DigitalOcean, and Amazon Web Services.
  • Designed a distributed messaging layer for the company’s analytic systems.
  • Wrote all of the scripts and automation for building, packaging and deploying all in-house applications.
Skills

Go, Python, PostgreSQL, GNU make, Docker, Drone, NSQ, etcd, Elasticsearch, Logstash, Ubuntu, CoreOS, Ansible, Bash, Amazon Web Services, DigitalOcean


Synacor

Systems Administrator (March 2013 — June 2014)

  • Used PUppet, mcollective, facter, Ansible, and Fabric to automate all parts of Synacor’s infrastructure.
  • Responsible for packaging third-party software, and internal projects, into RPMs.
  • Responsible for maintaining internal YUM repositories.
  • Writeing intermediary tools to automate routine tasks that could not be automated using Puppet.
  • Managed internal and external DNS (BIND, Dyn).
  • Point of contact for high-availability systems managed by Corosync and Pacemaker, and for MongoDB infrastructure.
  • Wrote a generic data collection tool, called “Nebulous”, for gathering versioned information about every part of Synacor’s infrastructure.
  • Curated various administration scripts into a single package, using sub.

Lead Engineer (January 2012 — March 2013)

  • Lead the backend/API development team for Carbyn, post-acquisition.
  • Helped define technical and architectural designs.
  • Point of contact for the systems administration and release management teams.
  • Managed software builds, packaging, deployment, and configuration processes.
  • Managed development (non-production) servers.
Skills

Go, MongoDB, JavaScript, Puppet, Bash, Corosync and Pacemaker, Ruby, Python, Fabric, RPM packaging, RHEL/CentOS 4, 5 and 6, Kickstart, Facter, DNS, Redis

Previous Employers

  • Carbyn — Senior Engineer (September 2011 → January 2012)
  • Aboutown Transportation — Developer (May 2009 → September 2011)

Other Project and Open Source Experience

Quad9

A free, publicly-available anycast DNS service, that filters malicious domain names by returning non-authoritative NXDOMAIN responses for blocked domains. Operates in more than 130 points of presence, in more than 77 countries. I am currently a supporting alumnus.

yawal

“Yet another write-ahead logger.” A write-ahead logging package for Go, written due to a lack of quality, composable, write-ahead logging packages in the Go ecosystem.

Code

go-dynect

Go package for interacting with Dyn’s ECT DNS service. Was used in Hashicorp Terraform until the project took a more plugin-based approach to external service providers.

Code

Pull request adding go-dynect to Terraform