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.
- 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.
- 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.
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.
- 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.
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.
- 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.
I've mostly been self-employed, so these projects are also largely my work.