Mark Campbell - Ruby Enthusiast

location: Winnipeg, MB
mobile: 204-963-9981
email: [email protected]

Profile

Experience

Co-founder
BusyPaws, Winnipeg, Canada
September 2022 - May 2024

  • I have developed many full features for BusyPaws including major features like the calendar, time sheets, group bookings, additional user types, and more. I improved many existing features and fixed many bugs in our Ruby on Rails + JS stack.
  • To name a few of the tools I used, webpacker, turbolinks, momentjs, jQuery, Font Awesome, flatpickr, Bootstrap, Searchkick, Sidekiq (Redis), ActiveJob, Quickbooks, Mailchimp, NewRelic, imgproxy, Slim templating, Honeybadger, and Capybara/cuprite/selenium
  • One of my projects at BusyPaws was to build and implement the BusyPaws mobile app for Android and iOS. I developed the mobile app for Android+iOS using Flutter. Along the way I integrated our existing Ruby on Rails app's web experience into the mobile device platforms. With key features like native offline SMS and Email messaging experience and push notifications, this delivers a lot of value for our customers .
  • Other major features I worked on related to the mobile app Firebase Cloud Messaging (push notifications), error reporting, rich text editors in Flutter, Flutter Riverpod, Flutter Go Router, and server side driven configuration. As a full stack developer, I implemented all of the server side changes as well and used my prior experience creating and maintaining JSON and GraphQL APIs at theScore.
  • One of my roles at BusyPaws has been to carry out devops oriented tasks - we work in a AWS and a Heroku environment for our Rails 7 app with CircleCI carrying out builds. I debug and design daily in these environments to solve our business's problems concerning email, scaling services, and much more. I have worked extensively in our CircleCI environment to improve their reliability, to reduce false run fails, and to speed up the build times - I have done this as well in the past at theScore in addition to Jenkins experience while there.

Senior Software Developer and acting Team Lead
theScore, Toronto, Canada
March 2020 - September 2022

  • While at theScore from 2020 to 2022, I developed and maintained public facing APIs (millions of users), internal APIs, and did full-stack software development for internal facing systems. All of this work was a mix of Ruby on Rails, Elixir, and Devops tasks.
  • One of my major projects at the time was to migrate major systems from AWS EC2 to AWS EKS (Kubernetes) without any downtime. A proud achievement of mine was directing and managing my team to ensure a problem-free transition for the largest public facing API at theScore. This was done for many Ruby on Rails based applications. A comprehensive checklist was created by myself that was used for each of the systems that we were migrating over.
  • I documented a lot of code and systems while at theScore - I used my years of experience to produce documentation throughout the code bases, the wikis, and more, but most interestingly I created and produced a video based on a presentation I gave to the other software developers at theScore.
  • I worked in Elixir a lot during my time there. I worked on two major projects: a data processing system for XML / JSON with polling and the largest public facing GraphQL API servicing tens of thousands devices concurrently with the absinthe library, including deduplicating requests across the cluster.
  • I worked in Ruby on Rails in my time at theScore from 2020 to 2022. Among many projects and bugs, I created a robust ‘spreadsheet’ functionality in Ruby on Rails and other open source tools which an internal team uses as the data provider for one of the leagues at theScore.
  • I mentored and managed many software developer at theScore as my role as the stand-in tech lead for my team. Many co-op students were hired and interviewed under me.
  • I worked as the release engineer for our team - I approved of our releases for dozens of systems and was responsible for deploying them.
  • I built and maintained alerting and monitoring infrastructure with Splunk and Datadog

Software Development Team Lead
Sermo, Toronto, Canada
January 2016 - February 2020

  • Remotely led a team of developers and designers ranging from PST timezone to eastern Europe
  • Designed and implemented services with AWS technologies (too numerous to mention!), serving as a networking and devops engineer full time for about a year
  • Full stack developer for services related to ETL, BI, and data operations with data warehousing, reporting, and monitoring implemented with ETLWorks, AWS RedShift, Metabase, etc.
  • Implemented several new stand-alone Ruby on Rails based apps as a full stack developer with unit and integration testing as a focus
  • Directed the implementation of an overall QA strategy and trained team members to become proficient with automated testing tools
  • Begun the implementation of a DataOps method of BI
  • Built new JSON and Thrift APIs between .NET based apps and Ruby on Rails based apps (and maintained them of course)
  • Successfully migrated and put into maintenance existing Ruby on Rails based apps in a split Ruby on Rails and .NET ecosystem to a primarily .NET based ecosystem
  • Dockerized several rails apps and Jenkins itself for CI/CD purposes
  • Successfully transitioned several large Ruby on Rails apps on an old Amazon Linux AMI with Puppet 2 to a modern Ubuntu release with Puppet 3
  • Implemented a streamlined deployment strategy à la GitHub flow along with CI/CD with Jenkins and GitLab
  • Built monitoring systems for AWS based services (Sentry, CloudWatch, dashboards, PagerDuty, etc.)

Software Development Team Lead and Ruby on Rails Developer
theScore, Toronto, Canada
June 2013 - January 2016

  • 'Go-to person' for many issues due to breadth and depth of knowledge of systems at theScore
  • Technical recruitment of new employees to the company via monthly hack nights
  • Speaker on multiple occasions for the Ruby Tech Talks in Toronto
  • Solved tons of long-term technical debt with automated testing and rapid change
  • Led a team of developers and mentored juniors into high performance employees
  • Developing the JSON API that theScore's mobile devices (Android, iPhone, etc.) consume
  • Effectively upgraded and modernized a large custom legacy python project and replaced/upgraded large portions of it
  • Upgraded and effectively impelmented integration testing in a complex queue based push alert system (millions of devices, 1+ billion messages per month)
  • Queuing systems with beanstalkd and Sidekiq
  • Architecting new applications and testing infrastructure, including a system with 10,000 RPM using Rails and MySQL to service 10 million users
  • Caching strategies from CDNs (CloudFront/Akamai) to Varnish HTTP caching to fragment caching within Rails
  • Implementing AngularJS based administrative interfaces
  • Experienced with Splunk for operational alerts and ad-hoc reports
  • Augmenting server deployments using Ansible
  • Working with various AWS components

Ruby on Rails Developer
Wave Accounting Inc., Toronto, Canada
December 2011 - May 2013

  • Key member involved in building Wave Payroll
  • Applied RSpec and Capybara tools to achieve 90%+ test coverage
  • Collaborated and worked remotely with colleagues in US and Canada
  • Worked closely with Rida Al Barazi, author of Beginning Rails 3
  • Domain expertise in Electronic Funds Transfers (moving over $6 million a month), credit cards, and implementing Canada Revenue Agency requirements
  • Designed and implemented fraud detection for Wave Payroll
  • Technologies used: Ruby on Rails, Git, beanstalkd, Redis, MySQL, cucumber, nginx, unicorn, and more

Co-founder, Ruby on Rails Developer
ArrangeMySeat
October 2011 - December 2014

  • Co-founded a seating arrangement web-application with Nathan Bertram (http://about.me/nathanbertram)
  • Uses Ruby on Rails and JavaScript to deliver a complete Eventbrite-like experience with seating choices in mind
  • Seating plan designer built in Raphaël JS
  • Integrated with PayPal to remit money to event organizers

System/Database Administrator
Agriculture and Agri-Food Canada, Winnipeg, Canada
January 2011 - September 2011

  • Developed automation tasks for Oracle database backup and data warehousing
  • Performed security audits of HP-UX and AIX Unix environments
  • Exported End of Life products from obscure, proprietary formats to portable formats to ensure continued availability of data

Application Developer
Manitoba Government, Air Services Branch, Winnipeg, Canada
May 2010 - August 2010

  • Authored technical manual detailing systems used to run Air Ambulance, fire fighting, and chartered flight programs for developers and system administrators
  • Developed critical business application for aircraft flights, Transport Canada regulations, and Manitoba government requirements
  • Redesigned a critical recertification application and implemented in a 3 client – 1 server configuration for centralized data reporting

IT Consultant
Extreme Computer Systems, Minnesota, USA
January 2009 - December 2014

  • Configured, set up, and administered Cisco VoIP phone and data environments
  • Designed and created websites with Photoshop, C4D, and web-related languages
  • Created internal CRM website developed with Ruby on Rails
  • Built, configured, repaired, and maintained computers for clients

Languages, Technologies, and Techniques

  • Ruby
  • Ruby on Rails
  • Python
  • AWS (CloudFormation, etc. etc.)
  • pytest
  • Sinatra
  • JavaScript/Node
  • Splunk & ELK
  • Cucumber (Rails)
  • Strong sql skills
  • ETLWorks
  • Metabase
  • mod_security
  • Redis
  • Sidekiq
  • RSpec
  • Capybara
  • Beanstalkd
  • Git
  • Bash/Ksh/Zsh
  • Jenkins CI/CD workflow administration
  • MySQL administration
  • PostgreSQL administration
  • Oracle administration
  • Elixir
  • Dart
  • Flutter
  • Ansible & Puppet
  • TDD & BDD
  • MVC & MVVM
  • Varnish
  • Agile and Scrum
  • Vim
  • MS-Access
  • CCNA Level 1

References

References are available on request