If you are deciding whether to quote me, book me, or hand me a project, this is the page that saves you the digging. Everything I claim about my work in WordPress lives here in one place: the code I have contributed, the plugins I have shipped, the writing I have published, and the rooms I have spoken in. Every item links to its source so you can verify it yourself, without taking my word for any of it.
WordPress core
1 committed changeset
Committed to WordPress itself and attributed by name in the changeset. The credit line is public, which makes this the easiest claim on the page to check first.
Open source
18 merged contributions
Patches accepted into 15 projects maintained by other people, among them Automattic, 10up, WPGraphQL, Pressbooks, and CMB2. Each link goes to the merged pull request itself, not to a summary of it.
- h5p/moodle-mod_hvp #637: fix / Remove deprecated FEATURE_GROUPMEMBERSONLY from hvp_supports()
- vektor-inc/vk-all-in-one-expansion-unit #1423: Fix legacy text domain on two CSS-customizer notices
- GravityPDF/gravity-pdf #1674: Fix pre-rename text domain on three REST strings
- WebberZone/top-10 #188: Fix text domain on importer and widget strings
- openlibhums/janeway #5377: fix: #5348 escape literal % in search SQL before Article.objects.raw()
- Tetrakern/fictioneer #101: Escape get_term_link() in the glossary entry link
- Tokinx/Wing #159: Use wp_parse_url() instead of parse_url()
- wp-graphql/wp-graphql #4021: feat: expose the Site Address as generalSettings.homeUrl
- 10up/classifai #1135: Guard settings destructure so the settings page doesn't blank when classifAISettings is missing
- pressbooks/pressbooks #4507: fix: keep reset URL in password reset email when no IP line is present
- 10up/safe-redirect-manager #453: Fix wildcard replace dropping leading slash for slash-free redirect bases
- WebDevStudios/custom-post-type-ui #1046: Fix debug nonce verification and export textarea escaping in Tools
- pluginkollektiv/antispam-bee #716: Escape action link URL and replace strip_tags() with wp_strip_all_tags() (Refs #534)
- CMB2/CMB2 #1560: Fix: esc_attr() on HTML attribute outputs in options page form and repeatable field wrapper
- Automattic/wp-super-cache #1057: Fix: parse Accept header q-values in wpsc_get_accept_header()
- 10up/distributor #1379: fix: use wp_kses_post() instead of esc_url() for HTML output in distributor_the_original_site_link()
- lesterchan/wp-sweep #76: Add per-type meta key filters to protect metadata from accidental deletion
- Automattic/WP-Job-Manager #2967: Fix: quote data-href attribute and add esc_js() in promoted jobs admin
Plugin directory
5 plugins on WordPress.org
Plugins on the WordPress.org directory that credit me as a contributor. Read the code, the changelog, and the support history without asking me for any of it.
Speaking
18 conference talks
Talks at WordCamps and professional-association events since 2011, each linked to its conference programme, and to the recording or the slides wherever either survives.
The work
71 projects
Builds, rescues, and infrastructure work, with 8 written up as full case studies that name the organisations involved.
Writing
93 articles
Essays and field notes on Artificial intelligence (AI), learning, and the craft of the web, plus 20 columns any publication is free to run at no cost.
Tools
49 free downloads
Calculators, checklists, and tools, free to use with no signup.
Verify me anywhere