Migrated FYIMusicNews.ca (http://FYIMusicNews.ca) — a daily Canadian music industry news publication — from Pantheon to a self-managed Drupal 10 stack on DigitalOcean, preserving content history end-to-end. Then built the custom JSON export endpoints used by Billboard to ingest 12,000+ articles, taxonomies, author profiles, and relationship data during their acquisition migration.
Migration scope (Pantheon → DigitalOcean). Full content + media + user migration with no editorial downtime. Cron job orchestration via wget against signed cron URLs. Bitbucket + Bitbucket Pipelines for CI/CD.
Billboard data export. Designed and shipped a set of custom Drupal endpoints — /articles-export, /tags-export, /categories-export, /authors-export, /article-sector-export, /career-category-export, /job-type-export, /publication-source-export, /release-type-export — paginated at 500 records per response, so Billboard's engineering team could pull the entire corpus reliably during their migration window.
Ad-revenue + email plumbing. Implemented a Google Publisher Tags (GPT) slot system supporting multiple leaderboard sizes (728×90, 300×50, 320×50, 970×250, 970×66) and big-box variants (300×250, 300×600), with a provider-switching helper (pod10_ads_select_provider). SendGrid for transactional email and bulk newsletters; Campaign Monitor for newsletter subscription.
1
4
Built, maintained, migrated, and operated the entire web presence for Slaight Music: their flagship corporate site, two digital music publications (Samaritan Mag, FYIMusicNews), a decoupled headless Drupal + React music platform (MusicPeaks), and a portfolio of Canadian-artist sites. Work spanned full-stack Drupal development (D7 → D8 → D9 → D10 across multiple sites), server administration on AWS Lightsail / EC2 / Linode / DigitalOcean / Pantheon, decoupled architecture with GraphQL + React, content migrations between platforms, and ongoing client-driven feature work.
1
8
Multi-phase Drupal engagement on samaritanmag.com (http://samaritanmag.com) (Canadian online magazine, still live). Sole developer across two major version migrations: D6→D7 with re-theming, then D7→D9 (Linode → DreamHost → AWS Lightsail). Built a Feeds + Media bulk-import pipeline that solved Drupal's image-mapping limitation for the editorial team. Drupal-specific fail2ban hardening. Active 2024 feature work: search UX redesign, accessibility module, mobile hamburger menu, inline image upload workflow, media-provider link restoration. Stack: Drupal 6/7/9, PHP 8.2, MySQL/MariaDB, AWS Lightsail, Apache.
0
35
12-year engagement as primary developer on RockPeaks, a crowdsourced music video clip database. Phase 1 (2011–2018): maintained an 87-module Drupal 5 platform and built five custom modules — S3 storage, JWPlayer integration, automated thumbnail generation, Dropbox video access, and Plex media server. Phase 2 (2018–2023): migrated to Drupal 8 + Contenta CMS and built a Next.js 10 + React frontend with Apollo Client and Three.js 3D elements. TypeScript AWS Batch + Fargate pipeline for MusicBrainz metadata enrichment. Flow blockchain NFT layer on testnet.
0
47
B2B platform for the Canadian music industry — publishing rights, artist metadata, and media licensing. Drupal 10 backend: JSON:API, GraphQL, Stripe, Elasticsearch, Redis. Next.js 10 frontend with Apollo Client and Auth0. AWS infrastructure via CloudFormation (nested templates, blue/green CodeDeploy): Aurora RDS, ECS Fargate, Lambda, SQS FIFO, ElastiCache, S3/CloudFront. Four Lightsail microservices: Chartmetric analytics, fanart.tv (http://fanart.tv) image sync, Flow blockchain NFT gateway, YouTube video ingestion. Flow smart contracts (Cadence) on mainnet. 13 repositories.