Kevin McCormack
917.209.0326 | kevin@mccormack.tech | github.com/HarlemSquirrel |
Since 2016 I have built, deployed, and maintained API and full stack web applications on Heroku, AWS, Digital Ocean, and on-premise servers. I document my work in detail, use Git for version control, and am comfortable in GitHub, Bitbucket, and GitLab. I believe that every application should have a comprehensive test suite with continuous integration including static analysis for code quality and security.
I am a big fan of open source software. I have a number of my own projects on GitHub and contribute to other projects when I can such as home-assistant, ActiveLdap, AmazingPrint, and Net::LDAP.
Technologies
- Application web servers (Apache HTTP Server, Puma, Tomcat)
- API models (gRPC, OpenAPI, REST)
- Authentication/Authorization (Auth0, OAuth, JWT, SAML)
- Cloud (AWS EC2, AWS Elastic Beanstalk, AWS S3, AWS Secrets, Digital Ocean, Heroku)
- Code quality (Brakeman, Code Climate, ESLint, Overcommit, RuboCop, ScssLint, YAMLlint)
- Containers (AWS ECS, Docker, Docker Compose, Kubernetes)
- CSS (SCSS)
- Databases (Kafka, Memcached, MySQL, PostgreSQL, Redis, SQLite)
- Deployment and Infrastructure (Ansible, AWS Code Pipeline, Capistrano, CircleCI, GitHub Actions, Jenkins, Terraform, Travis CI)
- HTML (HTML5)
- JavaScript (Angular v1, Cropper, Electron, Express, Inputmask, JQuery, Node.js, Quill, React, typeahead.js, TypeScript, Webpack, Yarn)
- LDAP (ActiveDirectory, OpenDJ, OpenLDAP, PingDirectory)
- Linux (ArchLinux, CentOS, Debian, Fedora, RHEL, Ubuntu)
- Load testing (Apache Bench, lb, Siege)
- Monitoring (Datadog, Honeybadger, New Relic, Rollbar, Sentry, Splunk, Uptime Robot)
- Multi-factor authentication (Duo)
- Payment processing (Chargebee, Stripe)
- PHP (Composer, PHPUnit, SimpleSAMLphp)
- Project management tools (Asana, Jira, Taiga, Trello)
- Python (Flask, ldap3, pytest)
- Ruby (Active Admin, ActiveLDAP, Capybara, Devise, Haml, JRuby, Net::LDAP, Rails, RSpec, RVM, Selenium, Sidekiq, Sinatra, VCR, WebMock)
- Shell scripting
- Version control (Bitbucket, GitLab, GitHub)
Work History
Hotel Engine, Remote
Oct 2021 - Present
Staff Software Engineer
- Created a fraud detection system with queue for manual reviews
- Designed and built a service to stream events from Salesforce to Kafka using gRPC subscriptions
- Developed interface to sync data from distributed systems to Salesforce through Kafka
- Designed and built TypeScript Express app with dynamically generated endpoints to serve complex aggregate queries from our data warehouse.
- Reduced endpoint latency by tweaking PostgreSQL queries and creating composite indexes
- Paired with developers at different levels across teams to solve complex problems and share knowledge
- Created technical flow diagrams for complex data ingestion and state machines
- Dockerized a large Rails monolith
- Devised and implemented a solution to reduce failed bookings
- Planned and performed complex data migrations and software upgrades with zero down time
- Lead efforts to improve system monitoring across the organization to minimize outages
- Built custom code coverage tool and incorporated in CI for multiple projects from Rails to NodeJS
Cerebral, Remote
Jan 2021 - Oct 2021
Lead Software Engineer
- Championed the adoption of Rubocop, Brakeman, and other static analysis tools into our CI pipeline
- Championed BDD integration testing with Capybara
- Improved development workflow by establishing clear git guidelines
- Mentored other developers across teams on best practices in Ruby and automated testing
- Crafted component architecture diagrams for new and existing systems
- Designed and implemented highly impactful features to automate manual processes
- Wrote clearly defined user stories with clear and specific technical requirements for epics
- Ran efficient stand-up meetings to identify blockers
- Gave engineering-wide presentation on Active Record queries for performance, efficiency, and security
- Conducted live coding and technical design interviews
- Refactored endpoints to reduce the number of database queries and reduce latency
Weill Cornell Medicine, New York, NY
May 2017 - Dec 2020
Senior Software Engineer, Identity and Access
- Diagnosed issues identified from users, error reports, and log analysis tools to quickly squash bugs
- Bridged the divide between technical and non-technical teams to dissect issues and enhancements
- Orchestrated highly complex systems for role-based access control (RBAC)
- Designed and developed new features for a suite of custom identity management applications built with Ruby on Rails, JRuby, PHP, JavaScript, and Python
- Led and mentored a team of developers in person and remotely
- Regularly updated internal technical documentation for my team and other teams
- Collaborated with internal and external teams to design and develop complex data synchronization and processing between a wide range of databases, systems and services
- Oversaw building comprehensive test suites for existing applications
- Streamlined deployments with Ansible and Capistrano
- Led the way in establishing continuous integration using CircleCI and AWS Code Pipeline.
- Established code quality standards and continuous enforcement using tools such as Rubocop, ESLint, Overcommit, and CircleCI
- Maintained our custom SimpleSAMLphp IdP implementation
- Migrated an on-premise Rails app to AWS as first app in our organization to move to the cloud
- Designed and carried out disaster recovery scenarios for mission-critical applications and services.
Code Climate, New York, NY
March 2017 - May 2017
Software Engineer
- Worked closely with the sales and product teams to update marketing pages
- Updated Middleman app with custom modules
- Moveed app from Rails Asset Pipeline to Webpack
- Built pages based on designs using HTML, SCSS, and JavaScript
Constant Contact, New York, NY
October 2016 - March 2017
Software Engineer
- Worked on a small team of engineers that worked closely with the sales and product teams
- Engaged in agile development including team feature planning with Jira
- Developed and maintained three Rails apps that advertised on Facebook for small businesses and nonprofits
- Ensured high code quality with Git, CodeClimate, and CircleCI
- Practiced test-driven development with RSpec and Capybara in comprehensive test suites
- Deployed, monitored and debugged production apps through Heroku, Honeybadger, Jenkins, New Relic, and Splunk
Flatiron School, New York, NY
May 2016 - October 2016
Online Instructor
- Assisted students learning full stack web development with Ruby on Rails and JavaScript
- Fielded student coding and development environment questions
- Triaged issues with the Learn integrated development environment
East Bronx Academy, Bronx, NY
Aug 2008 - September 2016
Teacher and Solutions Architect
- Designed and taught year-long curriculum for computer science and music in grades 6-12
- Administered Google Apps for Education account with over 800 active users
- Wrote shell scripts and custom OS images to automate Linux desktop deployments
- Honored by Academy for Teachers for innovation as a computer science educator
- Commissioned by PERC to create digital resources for the Exploring Computer Science curriculum
- Commissioned by New Visions for Public Schools to create Google Apps for School Operations screen-cast tutorials
Projects
Web Directory - Public listing of people, departments, and services
- Upgraded from Rails 4.1 to 5.2
- Combined two rails applications and unified the search interface for departments, services, and people
- Moved application from on-premise servers to AWS
- Improved integration with Java UnboundID LDAP SDK library and JRuby
- Improved page loading through caching and code refactoring
- Updated styles from Boostrap v3 to v4
WCM Styles - CDN-delivered shared custom assets
- Lead my initiative to extract shared styles and utilize free CDN hosting from JSDelivr
- Used Webpack to manage external and custom dependencies and package assets
Seedlr - Share positive thoughts.
- Coordinated with remote team across geographic divide with Trello, WhatsApp, Git, and Bitbucket
- Built out new features including data models and UI from an InVision app
- Integrated with payment system and mail marketing APIs
- Used JQuery and custom JavaScript to enhance front-end with asynchronous AJAX requests
AdLauncher - Making Facebook advertising easy
- Coordinated with a diverse team of engineers, product, and sales personnel
- Used Rails 4.2 and gems including activeadmin, devise, ransack, state_machines, and sidekiq
- Used Bootstrap 4 and custom SCSS to style front end
- Improved payment processing using the Stripe API
- Deployed from Github to Heroku with add-ons such as Mailgun and Redis To Go
- Connected to FacebookAdsAdapter and ConstantContact APIs
FacebookAdsAdapter - An API to simplify advertising on Facebook
- Abstracted the Facebook advertising API complexity for use on AdLauncher and Boost
- Developed with popular gems including carrierwave, clockwork, kaminari, papertrail and puma
Boost - Boost email campaigns on Facebook
- Maintained legacy JRuby Rails 4.1 app with Ruby 1.9.3
- Extended ConstantContact with Facebook advertising
- Deployed remotely with Jenkins and JRuby
Education
Flatiron School - New York, NY - 2016
Full Stack Web Development: Ruby on Rails and JavaScript online immersive program
Wilkes University - Wilkes-Barre, PA - 2011
MS: Instructional Media
City College of New York - New York, NY - 2008
BFA: Jazz Performance and Education