Skip to main content
[2023-07-06]

Using DDEV snapshots to speed up GitHub Actions workflows

#drupal #ddev #github

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.

[2023-06-27]

Profiling Drupal AJAX requests

#drupal #performance #blackfire #xhprof

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.

[2023-06-21]

Using jq with Drush to inspect state values in Drupal

#drush #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.

[2023-05-23]

Dependency injection anti-patterns in Drupal

#drupal #dependency injection

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.

[2023-05-09]

Upgrading my site from CKEditor 4 to CKEditor 5

#drupal #ckeditor

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.

[2023-05-02]

Drupal module semantic versioning for Drupal core support

#drupal

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.