Career Profile

I am a full-stack developer with skills in front- and back-end development, DevOps, cloud computing, network administration and infrastructure monitoring and configuration. Owning and operating companies for 14 years, leading small teams on a variety of projects, I often found myself exposed to the entire stack in a variety of roles. I am motivated by autonomy and a clear sense of direction and I can say Kubernetes ten times in 4 seconds.

Most of all, I'm tenacious and love solving problems.

Experiences

Full Stack Developer

2015 - Present
National Machine

At National Machine, I worked with clients to build a variety of single-page applications. I utilized javascript front-end frameworks to create high-quality user experiences. I built REST APIs and microservices for a variety of purposes from on-boarding new hires to content management and email marketing.

Technologies
  • Angular 5 + NGRX with hot module replacement and ahead-of-time compilation.
  • Worked with observables and RxJS to solve state management issues.
  • Used, and loved, the Redux pattern using NGRX entities to reduce boilerplate.
  • Incorporated many UI/CSS frameworks such as Kendo, Bulma and Bootstrap into our projects.
  • Converted applications from Angular 1 to Angular 5 and from Javascript to Typescript.
  • Built APIs with complex domain models in Laravel + MySQL. Implemented multiple third-party services such as Stripe, Mailchimp and custom OAuth servers.
  • Built performant and light-weight APIs with Node + Express + PostgresSQL.
  • Maintained API uptime using Zabbix Web Scenarios, Runscope and other monitoring technologies.
  • Designed relational databases for scalability, data consistency and long-term stability.
  • Flirted with NoSQL databases but never really found love. I haven't given up hope, however.
  • Configured multi-tiered API tests and error reporting to ensure that clients got the responses they expected and, if they didn't, that we reported the error immediately and provided proactive support.

Systems Administrator

2015 - Present
National Machine

At National Machine, I helped small and mid-sized businesses provision servers, keep their data secure and build out their physical networks. I configured monitoring and fault-tolerance for our entire server fleet across three locations, eight hosts, 50 virtual machines and a slew of containers. I built and configured our entire private network inside the datacenter including the edge router, redundant switches, routing, NAT and firewalls.

Technologies
  • Worked with VMWare ESXi to provision virtual machines.
  • Built a Proxmox cluster on top of Ceph distributed block-level storage.
  • Implemented VRRP to ensure graceful failover in the event of a router failure.
  • Configured the entire server fleet using Puppet and the best-practice roles and profiles method.
  • Ran services in Docker when that was more appropriate than an entire VM.
  • Monitored each server at three levels: guest OS, hypervisor and iDRAC / IPMI using Zabbix, the Zabbix agent and SNMP.
  • Deployed multiple applications using Jenkins Pipelines, CircleCI and Gitlab.
  • Deployed and monitored NodeJS applications using Jenkins and pm2.
  • Implemented Pagerduty with various escalation schedules to notify on-call staff of any issues with our fleet or client applications.
  • Integrated all of our platforms into Slack for a unified reporting feed.
  • Maintained a Graylog server to which all syslogs, Nginx and application logs were exported. Used streams and its advanced search functionality to debug systems and software.
  • Set up Grafana dashboards to provide engineers with an at-a-glance overview of how our systems were running.
  • Utilized BIND to provide split-horizon DNS for our three linked physical locations, enabling access to private services where some parts of the zone still needed to resolve externally.
  • Maintained a suite of Veeam backup, replication and backup copy jobs to make sure we had two on-site and one off-site copy of everything.

Full Stack Developer

2016 - 2017
Plotly, Inc

At Plotly, I was responsible for building a few different front- and back-end auxiliary applications to help support their main SaaS product. I worked on an event management platform (which eventually became Symposia), a support platform and its associated website, as well as their event series, PLOTCON.

Technologies
  • Partnered with Plotly sales, marketing and engineering to gather requirements for their Support and Event Management platforms.
  • Built three single page applications in Angular utilizing component-based front-end design and services for managing state.
  • Built a support payment gateway using Laravel and integrated Plotly's existing user database.
  • Implemented custom OAuth with Plotly core to make sure there was always only one source of truth.
  • Provided pro-active support.

Projects

I've mostly been self-employed, so these projects are also largely my work.

Symposia - A full-featured event and content management system. I built a majority of Symposia over 18 months. Symposia is made up of three javascript applications and one API that powers them all. The API is built on top of Laravel 5.5, the control panel was built using Angular 5 + Redux and the auxiliary applications are Angular 1.6. In addition to development, I was also responsible for networking administration, server provisioning and management, our CI/CD pipeline, Git and monitoring and security systems. It is my largest project to date and involved every piece of the development-to-delivery pipeline.
Homelab - I began building a homelab in January 2016 in order to learn networking, virtual computing, containerization, configuration management, DNS and more. What started as a single server grew into a fleet of hosts and 100+ virtual machines spread across three physical locations, managed by Puppet. One of my favorite things is simulating a business use-case at home to learn campus networking, advanced DNS configurations and how to keep things online.
For the Love of Vinyl - My wife, Katy, and I started a podcast which we live-streamed over the internet. Each episode featured an in-studio guest musician and a selection of their favorite tracks played on vinyl. I was lead engineer and host, managing eight simultaneous inputs, mic placement, compression and EQ. We ran the show for almost 8 months until National Machine and Symposia required more energy and time. Working with talented musicians in an intimate, tiny-desk environment was an incredible experience and we can't wait to get back to it someday.