I am a full-stack software architect and systems engineer, with experience in the design and implementation of mission-critical Software as a Service platforms at an enterprise level. My experience in the computer industry spans software development, database design, networking, security, and both hardware and software support.
I was the first senior Ruby developer to join the team full-time, taking ownership of a couple of projects that served as the backend infrastructure to a pair of front-end apps written in Angular.
In addition to my development duties I also spent a fair amount of time mentoring the junior backend developer, via code review and discussion of architectural principles.
The original RaceNote product is a platform for note-taking and parts management for low-end Dirt and Asphalt racing teams.
I was in charge of the backend API to this platform, which interfaced with a front-end Angular application. During my tenure I made a couple major overhauls:
- Updated project from Rails 4.2 to 5.0
- Rewrote a large portion of ActiveRecord code to improve performance
Live Audio Product
I spent the bulk of my time working on this system. Unlike the RaceNote platform, this was a standard Rails monolith project.
The purpose of this platform was to provide an internal tool for live transcription of radio chatter from NASCAR drivers during the race.
This product is used by several race teams, a major car manufacturer, a major television network, and NASCAR.
Through a combination of human intelligence and Microsoft Cognitive Services, we categorized and transformed a stream of utterances pulled from radio and pushed them in real-time to a front-end application called RaceDay. It would show up as a live Twitter-like feed of text.
I led several major overhauls to this codebase:
- Updated Project from Rails 4.2 to 5.0
- Major rewrite to accommodate multiple sessions per race in our data
- Near-total rewrite of existing ActiveRecord code to improve performance
- Entirely new integration system for ingesting race events and adding them to our data during a race
- Integrated Babel & Webpack to transition our frontend code to ES2015
- Introduced VueJS to build more advanced frontend UI
- Rewrote our legacy integration to Oxford Speech beta to use Microsoft's Bing Speech API
- Integration piece between our system and Payable.com to automate accounting
System Administration & DevOps
I shared system administration duties with the Front-End Lead and CTO.
Our infrastructure was hosted on AWS using custom AMIs built with Packer and deployed via Terraform configuration. We used a combination of ELB, Auto-Scaling Groups, and deployment configuration stored in S3 to allow our infrastucture to scale automatically to meet demand or recover from errors.
In addition to basic maintenance, I made a few modest improvements to our cloud system:
- Rebuilt AMIs to support multiple Ruby versions
- Deployed an update to Ruby 2.3
- Cleanup and refactoring of bootstrap scripts
- Wrote and implemented an automated backup routine for our Databases
- Rewrote our Unicorn configuration to support zero-downtime deployment
As the lead engineer of a small startup, I had to wear many hats due to our limited budget for personnel. Some of the more important aspects of my role included:
The company started with an application suite called Inteliguide and Patrolguide, originally written in ASP.Net by my business partner to meet the needs of a local security business. When we needed to start supporting a growing franchise network, we needed to rebuild the system to handle a much larger set of users across many locations around the country.
I led a small team of developers in a feature-complete rewrite of our ASP.Net application on Ruby on Rails, designed to be horizontally scalable to meet future growth. This included an API service built on Sinatra, and a proprietary single-sign-on solution that worked across the two domains.
- Advanced Shift Scheduling via an interactive calendar
- Time and attendance with geofencing
- Shift reports for Clients to access via the web or email
- Geolocation of all addresses in the system
- Intelligent routing of vehicles in the field based on location, visits, and unpredictability
- An internal messaging system between users that also supported email
- Automated reminders for workers who were scheduled for shifts
- Work Orders to generate Shifts & Tours in the system to facilitate long-term contracts
- An attachment upload system to add additional photos or document data to records
- A custom role-based security system
System Administration & DevOps
I designed and implemented the cloud-based server infrastructure that hosted the platform online, and well as the scripts that allowed us to deploy updates quickly and easily.
I chose Ubuntu Server as our OS platform, to host the services using a combination of Nginx for HTTP, SSL-termination, and reverse-proxy, Unicorn as application server to run the Ruby code and provide zero-downtime deployment, Redis as a caching layer and NoSQL key-value store, and PostgreSQL as the SQL backend.
In addition to maintaining our cloud servers, I also set up monitoring on our servers and applications via NewRelic and Airbrake to alert us when there were problems. I serve as the on-call technical contact for the platform 24/7.
We originally launched on Rackspace Cloud when we were servicing a single client. We later retooled the platform as a multitenant, software-as-a-service product on AWS built on EC2, RDS, and S3.
ASP.Net application development in VB.Net and C# for an internal company web portal.
Developed site redesign for company website
Developed online application for users to sign up for security-related classes.
Skills & Proficiency
Ruby on Rails
HTTP & Nginx
Here are some software projects I've created or contributed to publically.