Senior Drupal & web developer. 20+ years building, migrating, and maintaining sites for universities, nonprofits, and businesses.
Drupal is my specialty — I've carried sites through every major version from Drupal 6 to 11, built custom themes and editorial workflows, and rescued more than one inherited or failing codebase. A lot of my best work is the untangling kind: stepping into an existing site, figuring out how it's actually put together, fixing what's broken, and making changes safely without breaking what already works.
Available for part-time, remote, and contract work.
- Drupal & WordPress — builds, redesigns, upgrades, long-haul migrations, and ongoing support
- Analytics & tag management — GA4 migrations, Google Tag Manager from scratch, Consent Mode v2
- CRM & fundraising — Salesforce (certified Admin, Platform Developer I, JavaScript Developer I), Marketo, GiveCampus, Blackbaud Luminate
- Email — hand-coded, bulletproof responsive HTML templates
- Accessibility — WCAG 2.1 AA audits and remediation
| drupress | A WordPress-style admin experience for Drupal 11 — module suite, admin theme, and install recipe, built as a strict presentation layer |
| petrichor | Agent-first project management on Drupal 11: projects, wiki and durable agent memory as content entities, with a built-in MCP server. Replaced Leantime in two days and has run every project since |
| peanut-gallery | Timestamped comments on hours-long audio for Drupal 11 — streams multi-GB files, node-access sharing, passwordless invites, 54 PHPUnit tests |
| drupaltui | Go terminal UI for writing Drupal content over JSON:API + OAuth2; no delete code path by design |
| mag2026 | Dependency-free Drupal 10/11 magazine theme; hand-written CSS grid, no framework |
| drupal-module-ci | Reusable GitHub Actions workflow: phpcs, phpstan and PHPUnit against a freshly built Drupal site, PHP × Drupal matrix |
| drupal-claude-skills | Claude Code skills that keep an AI agent writing modern, standards-compliant Drupal |
| bulletproof-email-templates | Production modular Marketo email template built for a large weekly alumni newsletter |
| givecampus-link-tool | Self-service tool for advancement teams — prepopulated, fully tracked giving links |
| marketo-api-tools | Small tools on the Marketo REST API to remove repetitive work from an email team's day |
Every repo above ships with a license, CI and a tagged release. Drupal code runs
through drupal-module-ci
(phpcs Drupal + DrupalPractice, phpstan with deprecation rules, PHPUnit) on every
push, and the drupal-claude-skills
repo is how I keep AI-assisted work to the same standard.