Formerly a Staff Software Engineer @mailchimp. Open-source contributor + speaker. Automation evangelist. Coffee enthusiast + roaster. Beard curator.
wp-cache-remember. Helper for the WordPress object cache and transients.
148wp-enforcer. Git hooks to encourage well-written WordPress.
111one-time-callbacks. Enable WordPress actions and filter callbacks to be called exactly once.
68schemify. Automatically generate Schema.org JSON-LD markup for WordPress content.
57lost-in-translation. Uncover missing translations and localization strings in Laravel applications.
36time-constants. A series of constants designed to make it easier to express time in PHP applications
28mcavoy. Discover what visitors are searching for on your WordPress site.
20wp404. Get in-depth information about the 404 errors that occur on your WordPress site.
19confidently-testing-wordpress. Slides for "Confidently Testing WordPress"
18phpunit-markup-assertions. Assertions for PHPUnit to verify the presence or state of elements within markup
17revision-strike. Periodically purge old post revisions via WP Cron.
17wordpress-git. Reveal.js version of my "Keeping WordPress Under [Version] Control with Git" blog post
17building-for-php-cli. Slides for "Building for the PHP Command Line Interface"
17advanced-post-excerpt. Replace the default Post Excerpt meta box with a superior editing experience.
17intro-to-ci-cd. Slides for "Build and Release Confidently with Continuous Integration and Delivery"
15wp-admin-tabbed-settings-pages. A polyfill for Trac #51086, bringing tabbed settings pages into WP-Admin.
14reveal-ga. Add Google Universal Analytics tracking to your reveal.js presentation.
14php-cli-examples. Examples to accompany "Building for the PHP Command Line Interface"
10wp-client-reference. A WordPress plugin designed for agencies to embed client documentation directly into a WordPress site
10writing-wp-cli-scripts-that-work. Slides for "Writing WP-CLI Commands That Work!"
9wp-password-generator. The WP Password Generator plugin takes the hassle out of creating new WordPress users by generating random, secure passwords with one click.
7mailto-link-formatter. Composer package for easily generating RFC 6068-compliant mailto: links in your markup.
7platform-plugin. Slides for "Considerations & Concerns for Platform Plugin Development"
6technical-debt. Slides for "Up to my Eyeballs in Technical Debt!"
6intro-to-testing. Slides for "Testing Like You've Never Tested Before (Because You Haven't)"
5wp-encrypted-options. An API for saving encrypted data into the wp_options table. **NOT YET READY FOR PRODUCTION USE!**
5wordpress-starter-theme. My WordPress starter theme so I don't have to repeat myself at the beginning of every project.
5semver-parser. Library for parsing and manipulating Semantic Versioning ("SemVer") relases
4parse-video-metadata. Extract meta data from videos uploaded to the WordPress media gallery.
4professional-development-professional-developers. Slides for "Professional Development for Professional Developers"
4vvv-redis. Custom VVV utility to automatically install and configure Redis
4simple-twitter-timeline. A PHP class for reading public Twitter timelines. Designed with "Latest Tweets"-style widgets in mind.
4runkit7-installer. Composer package to automate the installation of Runkit7 in development + CI environments
4wp-analysis. A custom PHP_CodeSniffer ruleset and report format to generate user-friendly details about what high-level issues exist and *why* they're important.
4protecting-yourself-online-irl. Slides for "Protecting Yourself Online & IRL"
3custom-orders-table. Slides for "Custom Tables & the Checkout Bottleneck"
3php-namespaces. Slides for "A Crash-course in PHP Namespaces for WordPress Developers"
3stevegrunwell-com-legacy. Source for http://stevegrunwell.com running the Grunwell 2012 theme.
3code-review-for-me-and-you. Slides for "Code Review: For Me & You"
3pupper. A Twitter clone for use in training courses
3smee. ABANDONED: Please use https://github.com/BrainMaestro/composer-git-hooks instead! Library for automatically copying Git hooks into a project.
2son-of-clippy. Add "fun" animated characters to your WordPress edit screens!
2stevegrunwell-com. Source for SteveGrunwell.com in 2018
2taking-the-web-offline. Slides for "Taking the Web Offline"
2laravel-authentication-made-easy. Slides for "Laravel Authentication and Permissions Made Easy"
2write-some-docs. Slides for "I'd Like to Write the World Some Docs"
2wordpress-starter-plugin. A quick template to start a new WordPress plugin. Meant to complement https://github.com/stevegrunwell/wordpress-starter-theme
2volunteer-line. *Work in Progress* Connecting volunteers of grass-roots campaigns with the community
1structured-data. Slides for "Computers <3 Structured Data"
1up-and-running-with-wp-cli. Slides for "Up and Running with WP-CLI"
1php-compatibility. Test a package's compatibility with different versions of PHP.
1wp-test-assertions. Additional PHPUnit assertions for testing WordPress plugins and themes.
1understanding-wordpress-actions-filters. Slides for "Understanding WordPress Actions and Filters"
1wordpress-sdk. PHP
1