Resume

Brian Cain

Portland OR, USA

LinkedIn


Friendly and motivated software developer and leader. Excels in designing intuitive technologies that help automate problems away for users. Experienced open-source software and community maintainer with 10+ years in the industry. Loves automation tools, game development, and software security.

Experience

2017-Present
Staff Software Engineer, @ HashiCorp: (Remote, Portland OR)

Vagrant community maintainer of 4 years. Implementing feature requests, inbound bug reports, enhancements, feedback on pull requests, questions, and more on one of the largest and most-used developer productivity tools.

  • Maintained Vagrant Cloud, a service that allows users to share and discover Vagrant boxes.

  • Built several new features for Vagrant (the first in a few years!) for managing virtual disks in a provider-agnostic way, and implemented a trigger system to run tasks before or after any Vagrant operation. Both of these were two of the most community-requested features.

  • Worked with other external open source maintainers for various Linux distributions to ensure Vagrant was working on their platforms.

  • Wrote a large bulk of unit tests around the core of Vagrant to ensure stability and maintainability.

Terraform Cloud (HCP Terraform) developer, working on solving complex issues that affected HashiCorps largest customers. Helped form a team where we designed and implemented a pragmatic solution for customers using multiple Terraform Cloud organizations and wanting a more streamlined solution for administering these organizations for their teams.

  • Met with large HashiCorp customers to discuss their pain points and offer solutions.

  • Worked closely with new teams and a new (to me) codebase to help solve complex issues.

Waypoint lead developer, working on a new developer tool that helps automate the deployment and self-service of applications. Worked on the initial design and implementation of the project, and helped grow the team to 10+ engineers. Built a pragmatic solution of helping brownfield projects adopt Waypoint by creating an Actions system that allows users to craft golden patterns and workflows that hook into their existing CI/CD systems.

  • Taught HashiCorp engineers how to maintain and contribute to open-source projects.

  • Worked with the HCP Platform team to design a functional RBAC system for Waypoint and other HCP products.

  • Met with customers to discuss application management needs and present Waypoint as a solution for feedback.

Engineering mentor to early software engineers looking to level up their skills in the field. Covered topics such as compilers, containers, and distributed computing.

  • Taught a micro-course on how to build a compiler in Golang, and a course on distributed computing using Golang and Consul.
2013-2017
Software Engineer, @ Puppet Labs: (Portland OR)

Worked on a handful of projects at Puppet Labs, including the core Puppet product, facter, PuppetDB, and Puppet Enterprise.

While working on Puppet Enterprise (PE), I helped start a new project aimed at orchestrating application deployments through Puppet. We built a Clojure-based service as well as enhanced the Puppet language compiler to support ordering dependencies between resources. This project was eventually integrated into PE as the Puppet Application Orchestration feature.

2012-2014
President, Research Developer, & Team Lead, @ Kansas State University: (Manhattan KS)

President of the first cyber defense club at Kansas State. We competed in various regional cyber defense competitions which involved taking on already compromised infrastructure, hardening it and maintaining uptime while under attack from a red team as well as continuing to fulfill business operations. This team placed 1st and 2nd at regional competitions.

Ran various security audits of KSU’s network and web applications.

Gave several lessons and demonstrations around security pen-testing tools like Metasploit, nmap, Nessus, and Kali Linux.

Education

2012-2014
Masters, Computer Science; Kansas State University (Manhattan KS)
  • National Science Foundation fellow. Working with the NSF to bring science and technology to underrepresented high schools across Kansas.
  • Worked with the United States Navy through a research grant to build an abstract, model-driven approach to create and manage cyber defense infrastructure. Helped develop an automated system for automatically provisioning virtual machines in the case of a breach through OpenStack and Puppet.
2008-2012
BSc, Computer Science; Kansas State University (Manhattan KS)
  • Association for Computing Machinery (ACM) member. Participated in the ACM programming competition.
  • Very active music member in marching band and jazz bands.

Volunteer

2016-Present
Event Volunteer and Game Developer, @ Portland Indie Game Squad: (Portland OR)
  • Helped as an organizer for various events, a moderator for its various online platforms (discord and twitch) Participated in many game jams, helped other community members with their game dev projects. Team lead for many game jams. https://briancain.itch.io/
  • Proficiency in game engines Unity3D/2D and Godot using C# and GDScript.
2016-2019
Programming Coach and Speaker, @ Django Girls: (Portland OR)
  • Guided and directed groups through a course that taught python and Django with the goal of building a website from scratch
  • Gave presentations to early developers on various aspects of software development

Technical Experience

Game Development
Ever since I was a kid programming in TI-Basic on my TI-84 graphing calculator making space invaders and snake, I’ve always loved making video games. While living in Portland I’ve been a part of the Portland Indie Game Squad, a community of game developers and enthusiasts. I’ve participated in many game jams, and have released a few games on my itch.io page. When working with a team building a game for a game jam, I would typically take on the design, product management, and programming roles. I have experience with Unity3D/2D, Godot, and Unreal Engine 5 using blue prints and C++, C#, and GDScript.
  • In 2024, I have been learning Unreal Engine 5 (using blue prints and C++), but my primary game dev experience has been using Unity in C#.
  • In 2016 I participated in the Cartoon Network Game Jam.
Open Source
In 2017 I joined HashiCorp to help build and maintain Vagrant, and automation tool for building and managing virtual developer environments. Prior to that, I had spent 4 years at Puppet Labs, where I was a core contributor to Puppet, an automation tool for managing infrastructure. I love open source software and hope to continue contributing to the software community.
Programming Languages
Golang: Lately, Golang has been my main language at work. I love how simple and fast it is. We also make heavy use of Protocol Buffers and gRPC, which I have become very familiar with.

C#: I have been using C# for game development for the last 10 years. I love the language and the Unity3D engine.

ruby: Ruby was my primary programming language at Puppet, and is what Vagrant was written. I’m not too excited to jump back into Ruby, but I’m very familiar with it and comfortable using it.

Basic knowledge of C/C++, Python, Java/JVM, Javascript, Common Lisp/Clojure, Ember.js

I have experience building compilers and interpreters, and have built a few small ones in my free time. I love programming languages and am quick to pick up on new ones.

Trivia

  • Human Languages:

    • English (native speaker)
    • Can read staff sheet music
  • I am an active powerlifter and strongman competitor for the last 12 years.

  • I have a cat named Qubit, named after the quantum computing term for quantum bits.

  • I love music and have been playing piano ever since I was old enough to reach the keys. I also played saxophone, flute, and trumpet in high school and college, and taught myself guitar.

©2024 Brian Cain - Split Template by One Page Love