Skip to main content
Jul 06, 2023

Using DDEV snapshots to speed up GitHub Actions workflows

My projects all use DDEV for local development. Regarding end-to-end testing, as part of my continuous integration process, I also use DDEV! This way, my scripts for running Cypress are the same locally and in my CI.

#drupal  #ddev  #github
Jun 27, 2023

Profiling Drupal AJAX requests

One of my favorite development tasks is performance engineering. I love taking an application and analyzing it to increase performance. Application performance monitoring (APM) tools like New Relic and Blackfire.io are tools every developer should have in their toolkit.

#drupal  #performance  #blackfire  #xhprof
Jun 21, 2023

Using jq with Drush to inspect state values in Drupal

Drupal has a key-value database table that stores information about the current environment. The values stored are serialized PHP objects or arrays. That makes inspecting them nearly impossible by just querying the database. Luckily, Drush provides a state:get command for retrieving those values.

#drush  #drupal
May 23, 2023

Dependency injection anti-patterns in Drupal

Whenever I have done an audit for a Drupal codebase, one of the first things I manually review and profile is dependency injection anti-patterns in custom code and any contributed modules used. The anti-pattern isn't for accessing services statically through \Drupal: service. These anti-patterns live within the class's __construct method.

#drupal  #dependency injection
May 09, 2023

Upgrading my site from CKEditor 4 to CKEditor 5

My site runs on Drupal 9.5. I started preparing to upgrade to Drupal 10 right after 10.0.0 was released, but then I got hit with CKEditor 4 to CKEditor 5 blockers.

#drupal  #ckeditor
May 02, 2023

Drupal module semantic versioning for Drupal core support

A large amount of our time during the Drupal 10 readiness effort was around semantic version discussions. Folks were creating new major versions to add Drupal 10 support while dropping Drupal 9 simultaneously. Technically that follows the semantic versioning guidelines but is a horrible user experience. Users must update the module when they upgrade Drupal core to Drupal 10.

#drupal