Blog
- Don't just rewrite. Re-invent. - 8th December 2023
- A Drupal case study from Oxfam - 7th December 2023
- Open-source first doesn't mean you need to cover every use case - 6th December 2023
- Open-source encourages more open-source - 5th December 2023
- Writing contrib modules as glue between your custom code - 4th December 2023
- The contribution-first workflow - 1st December 2023
- Are bugs good for users? - 30th November 2023
- The lowest level is better than no level - 29th November 2023
- Which PHPStan level should you use? - 28th November 2023
- Finding the best test base - 27th November 2023
- To docblock or not to docblock - 26th November 2023
- Community engagement for non-technical Drupal enthusiasts - 25th November 2023
- Are conventional commits worth it? - 24th November 2023
- Partial mocking - 23rd November 2023
- Frequency reduces difficulty - 22nd November 2023
- Why I built "Build Configs" - 21st November 2023
- What'll be in Drupal 11? - 20th November 2023
- Why I've standardised on 'run' scripts - 19th November 2023
- Writing good test names - 18th November 2023
- Drupal's Alternate Realities - 17th November 2023
- Avoiding over-mocking - 16th November 2023
- Don't pre-optimise and over-customise - 15th November 2023
- Why I prefer integration tests to unit tests - 14th November 2023
- PHPUnit does more than unit testing - 13th November 2023
- Drupal gives you so much out-of-the-box - 12th November 2023
- Work in small batches - 11th November 2023
- Retrofit with Matt Glaman - 10th November 2023
- README-driven development - 9th November 2023
- "Building Build Configs" at PHP South West - 8th November 2023
- It depends - 7th November 2023