About us

Resume - Stephen Mulvihill

Stephen C Mulvihill

Senior Drupal developer and solution architect

Education


Bachelor of Information Technology (BIT), April 2010

Carleton University - Degree

Multimedia and Design (IMD), April 2009

Algonquin College - Diploma

ITIL v3 Certification, May 2012

CTES Training

Web Experience Toolkit (WET, WxT), June 2014

Evolving Web

Drupal Custom Module Development, June 2014

Evolving Web

Solr Unleashed, October 2015 (Austin, TX)

Lucidworks

Under the Hood, October 2016 (Boston, MA)

Lucidworks

Certified: Azure Fundamentals, March 2022

Microsoft

Experience


Project # 25 - Environment and Climate Change Canada (ECCC)

Intranet Migration
February 2022 – Present (5 month)
Solution Architect (Cloud)

Environment and Climate Change Canada (ECCC) is looking to replace their aging web content management system with a modern, user-friendly system that supports and continues to serve the department’s Intranet needs. The project requires migrating three separate Intranet instances into Drupal WxT hosted on ECCC’s Microsoft Azure cloud environment.

Tasks

  • Define, document, and build the DevOps pipeline
  • Manage service connections between DevOps and Azure services including Azure Container Registry (ACR), Azure Resource Manager (ARM), and GitHub repositories
  • Use Terraform (HCL) to manage Infrastructure as Code (IaS) and to deploy new images
  • Use Azure CLI and Terraform to test and deploy solution
  • Work with ECCC’s Cloud Center of Excellence (CCoE) team to setup Azure DevOps pipeline including service connections and pipeline scripts
  • Work with CCoE to deploy terraform to provision cloud services and to deploy new Drupal images for updates to application
  • Implement configuration management including config split to provide a different set of configurations per environment (Dev/Stage/Prod)
  • Write GitHub actions to automated Drupal deployments to development environments (Amazon EC2 cloud instance)
  • Create and maintain the Azure CDN Purge module on Drupal.org using PHP. The module clears the Azure CDN cache when content has been updated in Drupal, and provides an interface to submit manual purge requests including wildcard paths (e.x. /news/*)
  • Develop new functionality for Intranet site using PHP and Drupal core and contributed hooks and APIs.
  • Build front-end displays in Drupal, including home page layout and search interface using PHP, HTML, CSS, and Twig templates.
  • Fix theme issues with the GCIntranet theme and contribute back to WxT. Fixes include WCAG 2.1 improvements, screen reader fixes, and changes to align templates with GCIntranet requirements as outlined by the Centrally Deployed Templates Solution (CDTS)
  • Use JavaScript to build and support CKEditor plugins for adding dynamic components through the editor.

Technology

  • GitHub for code management and automated deployments
  • Azure Portal and Azure DevOps for administrative tasks
  • Azure Storage Explorer to manage files in the cloud
  • Azure Cloud Shell to run bash commands on Azure
  • Microsoft Azure App Services
  • Microsoft Azure cloud environment
  • Terraform HCL, Azure CLI, Azure Cloud Shell
  • Drupal 9 WxT, Docker Scaffold
  • Docker, Docker Compose, Composer
  • PHP, JavaScript, jQuery, SCSS, CSS, HTML, XML, Twig
  • Linux, Nginx, MySQL, PHP (LEMP)

Project # 24 - Health Canada – HPFB BID

IT Plan Initiatives
November 2021 – Present (8 month)
Solution Architect

The Business Informatics Division (BID) team is responsible for creating and maintaining Drupal applications for Health Canada’s HPFB and ONPP branches. Sites include the Canada Food Guide, the COVID-19 Vaccine Portal, as well as other internal workflow applications.

Tasks

  • Design and maintain a common services Docker framework to facilitate development across multiple web applications and projects
  • Define container architecture for new and existing projects
  • Create custom Docker images using Dockerfiles
  • Work with client to improve automated deployments using Jenkins and other scripts
  • Upgrade all projects to the latest Drupal WxT version
  • Migrate four applications from a custom Drupal profile to the Drupal WxT profile
  • Lead the development of the Canada’s Food Guide website and the COVID-19 vaccines and treatments portal
  • Fix WCAG AA accessibility issues identified by WCAG team and contribute back to Drupal WxT. Use the NVDA screen reader tool as well as the W3C markup validation service
  • Build a new recipe search interface, and page layout, leveraging Apache Solr to support advanced full-text and faceted search requirements
  • Fix bug with entity_reference_revisions and integration with views by debugging SLQ query and implementing custom PHP code in a hook_views_query_alter() to fix the query for entities using revisions
  • Build new Food Guide Kitchen landing page layout and other font-end displays using HTML, CSS, and Twig

Technology

  • Drupal 9, Drupal WxT
  • Docker, Docker Compose, Git, Composer
  • Linux, Apache, MySQL, PHP (LAMP)
  • PHP, MySQL, SCSS, CSS, HTML, JavaScript, jQuery

Project # 23

Canada Revenue Agency (CRA)
Web Optimization Strategy (WOS)
May 2021 – May 2022 (12 month)
Solutions Architect

As part of the Web Optimization Strategy (WOS), the CRA is exploring the adoption of a new platform and toolset to manage its public-facing web presence. The CRA wishes to implement a new Web platform that will support a more user-centric web presence and search experience for Canadians. This includes a migration from the current Adobe Experience Manager (AEM) platform, where the CRA is currently hosting their content, to Drupal WxT.

Tasks

  • Upgrade site from Drupal 8 to Drupal 9 and migrate from Postgres to MySQL
  • Implement GC Subway using the Drupal book module and contribute to Drupal WxT
  • Data migration from Canada.ca AEM to Drupal 9 using Node.js data harvester and Drupal 9 migrate and REST APIs.
  • Write GitHub actions to automated Drupal deployments to development environments (Amazon EC2 cloud instance)
  • Troubleshoot and fix docker scaffold issues (drupalwxt/docker-scaffold)
  • Fix WCAG 2.1 issues identified by an accessibility scan, as well as fix screen reader issues
  • Create custom CKEditor widgets using JavaScript to implement common WET components (panels, alerts, footnotes, table of contents)
  • Create D3.js data visualizations using JavaScript, with DataTables integration.
  • Monitor the Drupal WxT issue queue and provide support as needed
  • Update Drupal contributed modules to be compatible with Drupal 9 using PHP
  • Implement new front-end displays, including institution page layout, using PHP, HTML, CSS, and Twig

Technology

  • Drupal 8/9, Drupal WxT
  • Docker using drupalwxt/docker-scaffold
  • Node.js data harvester
  • Amazon AWS EC2 cloud
  • Linux, Nginx, MySQL, PHP (LEMP)
  • PHP, MySQL, SCSS, CSS, HTML, JavaScript, jQuery

Project # 22 - Health Canada

Food Reference Listing
March 2021 – May 2021 (3 month)
Solutions Architect

In 2014, the Government of Canada repealed the requirement for preregistration of construction materials, packaging materials and non-food chemicals used in federally registered meat establishments. The Canadian Food Inspection Agency (CFIA) historically maintained this information, which is now being made available on Canada.ca for reference purposes.

Tasks

  • Design and develop new application using Drupal 9 WxT
  • Migrate historical data (CSV source format), including multi-level taxonomy terms and content translations

Technology

  • Drupal 9 WxT
  • Composer 2 for dependency management
  • Docker, Jenkins, GitLab
  • Linux, Apache server, MySQL, PHP (LAMP)
  • PHP, MySQL, SCSS, CSS, HTML, JavaScript, jQuery

Project # 21 - Health Canada

COVID-19 Vaccines and Treatments Portal
covid-vaccine.canada.ca
November 2020 – May 2021 (7 months)
Solutions Architect

On December 9, 2020, Health Canada authorized the first vaccine for use against COVID-19, the Pfizer-BioNTech COVID-19 vaccine. The COVID-19 vaccines and treatments portal was created to provide Canadians with up-to-date information on products that are under review or authorized for COVID-19.

Tasks

  • Architect solution using Drupal 8.x WxT
  • Upgrade to Drupal 9.x WxT
  • Rapid prototyping and development; 9 days from project start to production deployment (in time for first vaccine announcement)
  • Ensure WCAG 2.0 AA conformance
  • Implement DataTables filter functionality, using JavaScript and jQuery, to provide a client-side search against vaccine resources
  • Build a RESTful web service (API) using PHP, with authentication, to allow another Health Canada application to access vaccine metadata
  • Implemented a data migration pipeline (API) to import vaccine related news articles from an external data source using JSON.
  • Maintain docker containers for local development
  • Build font-end displays, including vaccine page layout, using PHP, HTML, CSS, and Twig templates

Technology

  • Drupal 8.x WxT / Drupal 9.x WxT
  • Composer 2 for dependency management
  • Docker, Jenkins, CloudFlare
  • Linux, Apache server, MySQL, PHP (LAMP)
  • GitLab code repository
  • PHP, MySQL, SCSS, CSS, HTML, JavaScript, jQuery, DataTables

Project # 20 - Health Canada

Canada’s Food Guide
food-guide.canada.ca
November 2019 – May 2021 (19 months)
Solutions Architect

Canada’s Food Guide is a nutrition guide that was created by Health Canada in 1942. It was designed to help Canadians follow a healthy diet by providing healthy eating recommendations, tips for healthy eating, and recipes.

This project required a migration from the current WordPress platform to Drupal 8.x WxT. It was then updated to Drupal 9.x WxT to stay in line with an upgrade path.

Tasks

  • Gather and analyze requirements
  • Perform site audit of the current WordPress site
  • Identified entity types, field mappings, and views
  • Develop a migration strategy to migrate data
  • Develop the Drupal 8.x WxT version of the Canada’s Food Guide website
  • Create architecture documentation and user guides
  • Run workshops with stakeholders to solidify requirements
  • Organize requirements into features and break work into tickets and sprints
  • 14 patches accepted on Drupal.org for the Drupal 8.x/9.x WxT distribution
  • Develop a front-end search interface based on Apache Solr 7.7, using HTML and CSS for theming the page and defining the layout
  • Ensure WCAG 2.1 AA conformance and fix accessibility issues identified by Health Canada’s accessibility team
  • Maintain docker containers for local development
  • Build a RESTful web service (API) using PHP and SQL to expose recipes and associated data
  • Use SQL queries to find data using keywords and provide to client for content updates
  • Trigger Jenkins job from Drupal to flush reverse-proxy cache, using Guzzle HTTP client
  • Analyze upgrade path to Drupal 9.x WxT and perform updates.
  • Build font-end displays using PHP, HTML, CSS, and Twig templates.

Technology

  • Drupal 8.x WxT / Drupal 9.x WxT
  • Apache Solr 7.7
  • Composer 2 for dependency management
  • Docker, Jenkins, CloudFlare
  • Linux, Apache server, MySQL, PHP (LAMP)
  • GitLab code repository
  • PHP, MySQL, SCSS, CSS, HTML, JavaScript, jQuery, jQuery UI