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