Add redirects for old daily email paths

This commit is contained in:
Oliver Davies 2025-04-17 00:37:55 +01:00
parent 26dbdaece2
commit ae61e41caa

View file

@ -30,16 +30,373 @@ redir /YK1VH /articles/psr4-autoloading-test-cases-drupal-7 permanent
redir /YilTZ$ https://drupalcamp.london/tickets/training permanent
redir /about / permanent
redir /about/cv /cv permanent
redir /about/speaker-information /speaker-information permanent
redir /about/speaker /speaker permanent
redir /about/speaker-information /speaker-information permanent
redir /acquia-certifications https://certification.acquia.com/registry?fname=Oliver&lname=Davies&city=&state=&country=United+Kingdom&org=&exam=All permanent
redir /acquia-certified https://certification.acquia.com/?fname=Oliver&lname=Davies permanent
redir /ansible-molecule /articles/test-driven-ansible-role-development-molecule permanent
redir /ansible https://galaxy.ansible.com/opdavies permanent
redir /ansible-molecule /articles/test-driven-ansible-role-development-molecule permanent
redir /ansistrano-code https://github.com/opdavies/dransible permanent
redir /ansistrano-demo https://www.youtube.com/watch?v=PLS4ET7FAcU permanent
redir /ansistrano-slides /talks/deploying-php-ansible-ansistrano permanent
redir /archive/2022-08-28/how-started-programming /daily/2022-08-28/how-started-programming permanent
redir /archive/2022/08/20/return-to-offline-meetups-conferences /daily/2022/08/20/return-to-offline-meetups-conferences permanent
redir /archive/2022/08/23/git-gui-command-line /daily/2022/08/23/git-gui-command-line permanent
redir /archive/2022/08/25/why-i-work-in-neovim /daily/2022/08/25/why-i-work-in-neovim permanent
redir /archive/2022/08/26/always-be-learning /daily/2022/08/26/always-be-learning permanent
redir /archive/2022/08/27/giving-back /daily/2022/08/27/giving-back permanent
redir /archive/2022/08/29/why-like-drupal /daily/2022/08/29/why-like-drupal permanent
redir /archive/2022/08/30/why-dont-only-use-drupal /daily/2022/08/30/why-dont-only-use-drupal permanent
redir /archive/2022/08/31/monorepo-or-not /daily/2022/08/31/monorepo-or-not permanent
redir /archive/2022/09/01/conventional-commits-changelogs /daily/2022/09/01/conventional-commits-changelogs permanent
redir /archive/2022/09/02/automating-all-the-things-with-ansible /daily/2022/09/02/automating-all-the-things-with-ansible permanent
redir /archive/2022/09/04/using-ansible-for-server-configuration /daily/2022/09/04/using-ansible-for-server-configuration permanent
redir /archive/2022/09/05/using-ansible-for-local-configuration /daily/2022/09/05/using-ansible-for-local-configuration permanent
redir /archive/2022/09/06/deploying-applications-with-ansible /daily/2022/09/06/deploying-applications-with-ansible permanent
redir /archive/2022/09/07/my-tailwind-css-origin-story /daily/2022/09/07/my-tailwind-css-origin-story permanent
redir /archive/2022/09/08/keeping-secrets-with-ansible-vault /daily/2022/09/08/keeping-secrets-with-ansible-vault permanent
redir /archive/2022/09/09/refactoring-tailwind-component /daily/2022/09/09/refactoring-tailwind-component permanent
redir /archive/2022/09/10/automating-ansible-deployments-ci /daily/2022/09/10/automating-ansible-deployments-ci permanent
redir /archive/2022/09/11/custom-styles-tailwind-css-apply-theme-custom-plugins /daily/2022/09/11/custom-styles-tailwind-css-apply-theme-custom-plugins permanent
redir /archive/2022/09/12/month-/daily-emails daily/2022/09/12/month-daily-emails permanent
redir /archive/2022/09/14/simpletest-drupal-test /daily/2022/09/14/simpletest-drupal-test permanent
redir /archive/2022/09/16/why-mostly-write-functional-and-integration-tests /daily/2022/09/16/why-mostly-write-functional-and-integration-tests permanent
redir /archive/2022/09/17/thoughts-automated-code-formatting /daily/2022/09/17/thoughts-automated-code-formatting permanent
redir /archive/2022/09/19/useful-git-configuration /daily/2022/09/19/useful-git-configuration permanent
redir /archive/2022/09/20/why-like-trunk-based-development /daily/2022/09/20/why-like-trunk-based-development permanent
redir /archive/2022/09/21/being-drupal-contribution-mentor /daily/2022/09/21/being-drupal-contribution-mentor permanent
redir /archive/2022/09/22/releasing-drupal-module-template /daily/2022/09/22/releasing-drupal-module-template permanent
redir /archive/2022/09/23/adrs-technical-design-documents /daily/2022/09/23/adrs-technical-design-documents permanent
redir /archive/2022/09/25/using-component-library-for-front-end-development /daily/2022/09/25/using-component-library-for-front-end-development permanent
redir /archive/2022/09/26/experimenting-with-the-nix-package-manager /daily/2022/09/26/experimenting-with-the-nix-package-manager permanent
redir /archive/2022/09/27/mentoring-with-drupal-career-online /daily/2022/09/27/mentoring-with-drupal-career-online permanent
redir /archive/2022/09/28/mob-programming-php-south-wales /daily/2022/09/28/mob-programming-php-south-wales permanent
redir /archive/2022/09/30/store-wars-vuejs /daily/2022/09/30/store-wars-vuejs permanent
redir /archive/2022/10/12/overcoming-deployment-anxiety /daily/2022/10/12/overcoming-deployment-anxiety permanent
redir /archive/2022/10/17/14-years-drupalorg /daily/2022/10/17/14-years-drupalorg permanent
redir /archive/2022/10/18/pair-mob-programming /daily/2022/10/18/pair-mob-programming permanent
redir /archive/2022/10/20/cherry-picking-commits-is-an-anti-pattern /daily/2022/10/20/cherry-picking-commits-is-an-anti-pattern permanent
redir /archive/2022/10/20/run-vs-task-runners/? /archive/2022/10/19/run-vs-task-runners permanent
redir /archive/2022/10/21/automated-testing-and-test-driven-development-are-not-the-same /daily/2022/10/21/automated-testing-and-test-driven-development-are-not-the-same permanent
redir /archive/2022/10/24/looking-at-localgov-drupal /daily/2022/10/24/looking-at-localgov-drupal permanent
redir /archive/2022/10/25/what-are-drupal-distributions /daily/2022/10/25/what-are-drupal-distributions permanent
redir /archive/2022/10/26/neovim-as-a-personalised-development-environment /daily/2022/10/26/neovim-as-a-personalised-development-environment permanent
redir /archive/2022/10/27/getting-back-into-live-streaming /daily/2022/10/27/getting-back-into-live-streaming permanent
redir /archive/2022/10/28/why-write-framework-agnostic-packages /daily/2022/10/28/why-write-framework-agnostic-packages permanent
redir /archive/2022/10/29/the-open-source-first-development-workflow /daily/2022/10/29/the-open-source-first-development-workflow permanent
redir /archive/2022/10/30/refactoring-one-large-test-into-multiple-smaller-tests /daily/2022/10/30/refactoring-one-large-test-into-multiple-smaller-tests permanent
redir /archive/2022/11/08/are-sprints-incompatible-with-continuous-deployment /daily/2022/11/08/are-sprints-incompatible-with-continuous-deployment permanent
redir /archive/2022/11/09/your-conference-talk-has-been-accepted /daily/2022/11/09/your-conference-talk-has-been-accepted permanent
redir /archive/2022/11/12/building-a-minimum-viable-product-and-managing-technical-debt /daily/2022/11/12/building-a-minimum-viable-product-and-managing-technical-debt permanent
redir /archive/2022/11/12/creating-small-proof-of-concept-application-afternoon /daily/2022/11/12/creating-small-proof-of-concept-application-afternoon permanent
redir /archive/2022/11/13/how-i-manage-multiple-drupal-websites-using-the-same-codebase /daily/2022/11/13/how-i-manage-multiple-drupal-websites-using-the-same-codebase permanent
redir /archive/2022/11/14/camel-case-or-snake-case-for-test-methods /daily/2022/11/14/camel-case-or-snake-case-for-test-methods permanent
redir /archive/2022/11/15/writing-good-automated-test-names /daily/2022/11/15/writing-good-automated-test-names permanent
redir /archive/2022/11/16/why-don't-you-write-automated-tests /daily/2022/11/16/why-don't-you-write-automated-tests permanent
redir /archive/2022/11/17/agnostic-ci-pipelines-with-run-files /daily/2022/11/17/agnostic-ci-pipelines-with-run-files permanent
redir /archive/2022/11/18/one-test-a-day-keeps-bugs-away /daily/2022/11/18/one-test-a-day-keeps-bugs-away permanent
redir /archive/2022/11/19/are-missing-tests-a-blocker-to-refactoring /daily/2022/11/19/are-missing-tests-a-blocker-to-refactoring permanent
redir /archive/2022/11/20/version-controlled-commented-out-code /daily/2022/11/20/version-controlled-commented-out-code permanent
redir /archive/2022/11/21/git-tricks-to-avoid-committing-commented-out-and-other-unneeded-code /daily/2022/11/21/git-tricks-to-avoid-committing-commented-out-and-other-unneeded-code permanent
redir /archive/2022/11/22/tldr /daily/2022/11/22/tldr permanent
redir /archive/2022/11/23/do-you-need-to-branch /daily/2022/11/23/do-you-need-to-branch permanent
redir /archive/2022/11/24/doing-the-simplest-possible-thing /daily/2022/11/24/doing-the-simplest-possible-thing permanent
redir /archive/2022/11/25/plan-then-code /daily/2022/11/25/plan-then-code permanent
redir /archive/2022/11/30/ship-show-or-ask /daily/2022/11/30/ship-show-or-ask permanent
redir /archive/2022/12/01/writing-readable-code /daily/2022/12/01/writing-readable-code permanent
redir /archive/2022/12/02/commit-and-push-something-every-day /daily/2022/12/02/commit-and-push-something-every-day permanent
redir /archive/2022/12/03/what-to-do-with-todo-comments /daily/2022/12/03/what-to-do-with-todo-comments permanent
redir /archive/2022/12/04/writing-why-first-user-stories /daily/2022/12/04/writing-why-first-user-stories permanent
redir /archive/2022/12/05/outcomes-or-output /daily/2022/12/05/outcomes-or-output permanent
redir /archive/2022/12/06/should-you-comment-your-code /daily/2022/12/06/should-you-comment-your-code permanent
redir /archive/2022/12/07/separating-releases-from-deployments-with-feature-flags /daily/2022/12/07/separating-releases-from-deployments-with-feature-flags permanent
redir /archive/2022/12/08/the-decorator-design-pattern /daily/2022/12/08/the-decorator-design-pattern permanent
redir /archive/2022/12/09/how-and-why-i-started-using-postcss /daily/2022/12/09/how-and-why-i-started-using-postcss permanent
redir /archive/2022/12/10/managing-databases-with-neovim-and-docker /daily/2022/12/10/managing-databases-with-neovim-and-docker permanent
redir /archive/2022/12/15/happy-drupal-10-release-day /daily/2022/12/15/happy-drupal-10-release-day permanent
redir /archive/2022/12/20/automating-all-the-things,-including-infrastructure /daily/2022/12/20/automating-all-the-things,-including-infrastructure permanent
redir /archive/2022/12/21/duck-typing /daily/2022/12/21/duck-typing permanent
redir /archive/2022/12/22/the-boy-scout-rule /daily/2022/12/22/the-boy-scout-rule permanent
redir /archive/2022/12/23/speaking-at-php-stoke-and-nordevcon /daily/2022/12/23/speaking-at-php-stoke-and-nordevcon permanent
redir /archive/2022/12/28/debugging-gitignore-rules /daily/2022/12/28/debugging-gitignore-rules permanent
redir /archive/2022/12/29/what-is-the-cost-of-a-bug /daily/2022/12/29/what-is-the-cost-of-a-bug permanent
redir /archive/2022/12/30/tests-are-living-documentation /daily/2022/12/30/tests-are-living-documentation permanent
redir /archive/2022/12/31/just-start-writing /daily/2022/12/31/just-start-writing permanent
redir /archive/2023/01/01/types-and-static-analysis-saved-me-today /daily/2023/01/01/types-and-static-analysis-saved-me-today permanent
redir /archive/2023/01/02/dont-use-arbitrary-values-in-tailwind-css /daily/2023/01/02/dont-use-arbitrary-values-in-tailwind-css permanent
redir /archive/2023/01/03/tailwind-css-extensibility-is-one-of-its-best-features /daily/2023/01/03/tailwind-css-extensibility-is-one-of-its-best-features permanent
redir /archive/2023/01/04/testable-tailwind-css-plugins /daily/2023/01/04/testable-tailwind-css-plugins permanent
redir /archive/2023/01/05/adding-tailwind-to-an-existing-project /daily/2023/01/05/adding-tailwind-to-an-existing-project permanent
redir /archive/2023/01/06/utility-first-or-utility-last /daily/2023/01/06/utility-first-or-utility-last permanent
redir /archive/2023/01/07/reducing-utility-class-duplication /daily/2023/01/07/reducing-utility-class-duplication permanent
redir /archive/2023/01/16/back-after-php-stoke /daily/2023/01/16/back-after-php-stoke permanent
redir /archive/2023/01/17/things-to-know-about-php /daily/2023/01/17/things-to-know-about-php permanent
redir /archive/2023/01/18/drupal-turns-22 /daily/2023/01/18/drupal-turns-22 permanent
redir /archive/2023/01/19/long-term-maintainability-with-utility-classes-and-tailwind-css /daily/2023/01/19/long-term-maintainability-with-utility-classes-and-tailwind-css permanent
redir /archive/2023/01/20/tailwinds-classes-are-your-classes /daily/2023/01/20/tailwinds-classes-are-your-classes permanent
redir /archive/2023/01/21/tailwind-not-just-translating-css-to-utility-classes /daily/2023/01/21/tailwind-not-just-translating-css-to-utility-classes permanent
redir /archive/2023/01/22/building-bootstrap-css-examples-with-tailwind /daily/2023/01/22/building-bootstrap-css-examples-with-tailwind permanent
redir /archive/2023/01/23/debugging-with-git-bisect /daily/2023/01/23/debugging-with-git-bisect permanent
redir /archive/2023/01/24/small-commits-and-good-commit-messges /daily/2023/01/24/small-commits-and-good-commit-messges permanent
redir /archive/2023/01/25/to-squash-or-not-to-squash /daily/2023/01/25/to-squash-or-not-to-squash permanent
redir /archive/2023/02/07/astro-as-a-static-site-generator /daily/2023/02/07/astro-as-a-static-site-generator permanent
redir /archive/2023/02/08/fetching-api-data-with-astro /daily/2023/02/08/fetching-api-data-with-astro permanent
redir /archive/2023/02/09/creating-api-endpoints-with-astro /daily/2023/02/09/creating-api-endpoints-with-astro permanent
redir /archive/2023/02/16/tailwind-css-at-the-bristol-software-development-meetup /daily/2023/02/16/tailwind-css-at-the-bristol-software-development-meetup permanent
redir /archive/2023/02/17/upgrading-my-drupal-example-project-to-drupal-10 /daily/2023/02/17/upgrading-my-drupal-example-project-to-drupal-10 permanent
redir /archive/2023/02/18/drupal-10-version-of-override-node-options /daily/2023/02/18/drupal-10-version-of-override-node-options permanent
redir /archive/2023/02/19/clients-dont-care-which-design-pattern-you-use /daily/2023/02/19/clients-dont-care-which-design-pattern-you-use permanent
redir /archive/2023/02/20/tailwind-why-i-prefer-to-extract-html-components /daily/2023/02/20/tailwind-why-i-prefer-to-extract-html-components permanent
redir /archive/2023/03/01/tailwind-css-at-the-norfolk-developer-conference /daily/2023/03/01/tailwind-css-at-the-norfolk-developer-conference permanent
redir /archive/2023/03/02/busy-working-on-client-projects /daily/2023/03/02/busy-working-on-client-projects permanent
redir /archive/2023/03/03/adding-a-localgov-drupal-example /daily/2023/03/03/adding-a-localgov-drupal-example permanent
redir /archive/2023/03/04/why-i-built-a-tool-to-generate-configuration-files /daily/2023/03/04/why-i-built-a-tool-to-generate-configuration-files permanent
redir /archive/2023/03/05/mentoring-for-school-of-code /daily/2023/03/05/mentoring-for-school-of-code permanent
redir /archive/2023/03/08/automating-infrastructure-with-iac /daily/2023/03/08/automating-infrastructure-with-iac permanent
redir /archive/2023/03/09/in-what-language-should-i-write-my-automation /daily/2023/03/09/in-what-language-should-i-write-my-automation permanent
redir /archive/2023/03/13/what-problem-am-i-trying-to-solve /daily/2023/03/13/what-problem-am-i-trying-to-solve permanent
redir /archive/2023/03/14/automating-all-the-things /daily/2023/03/14/automating-all-the-things permanent
redir /archive/2023/03/15/the-benefits-of-automation /daily/2023/03/15/the-benefits-of-automation permanent
redir /archive/2023/03/21/there-isnt-a-tailwind-looking-site /daily/2023/03/21/there-isnt-a-tailwind-looking-site permanent
redir /archive/2023/03/22/with-utility-styles-your-css-stops-growing /daily/2023/03/22/with-utility-styles-your-css-stops-growing permanent
redir /archive/2023/03/27/software-development-solving-problems-and-adding-value /daily/2023/03/27/software-development-solving-problems-and-adding-value permanent
redir /archive/2023/04/07/speaking-at-php-london /daily/2023/04/07/speaking-at-php-london permanent
redir /archive/2023/04/08/why-i-use-tmux /daily/2023/04/08/why-i-use-tmux permanent
redir /archive/2023/04/09/nix-nixos-home-manager-and-wsl2 /daily/2023/04/09/nix-nixos-home-manager-and-wsl2 permanent
redir /archive/2023/04/10/how-i-use-neovim-for-writing-php /daily/2023/04/10/how-i-use-neovim-for-writing-php permanent
redir /archive/2023/04/11/just-vs-make /daily/2023/04/11/just-vs-make permanent
redir /archive/2023/04/12/cleaner-php-code-with-promoted-constructor-properties /daily/2023/04/12/cleaner-php-code-with-promoted-constructor-properties permanent
redir /archive/2023/04/13/immutable-read-only-properties-in-php-8-1 /daily/2023/04/13/immutable-read-only-properties-in-php-8-1 permanent
redir /archive/2023/04/14/data-transfer-objects-and-value-objects /daily/2023/04/14/data-transfer-objects-and-value-objects permanent
redir /archive/2023/04/15/automatically-running-commands-with-nodemon /daily/2023/04/15/automatically-running-commands-with-nodemon permanent
redir /archive/2023/04/16/refactoring-with-readonly-classes-in-php-8-2 /daily/2023/04/16/refactoring-with-readonly-classes-in-php-8-2 permanent
redir /archive/2023/04/17/introducing-feature-flags-to-build-configs /daily/2023/04/17/introducing-feature-flags-to-build-configs permanent
redir /archive/2023/04/18/consistency-is-key /daily/2023/04/18/consistency-is-key permanent
redir /archive/2023/04/19/camel-case-or-snake-case-for-drupal-code /daily/2023/04/19/camel-case-or-snake-case-for-drupal-code permanent
redir /archive/2023/04/20/micro-refactorings /daily/2023/04/20/micro-refactorings permanent
redir /archive/2023/04/21/making-my-drupal-module-template-drupal-10-compatible /daily/2023/04/21/making-my-drupal-module-template-drupal-10-compatible permanent
redir /archive/2023/04/22/build-configs-as-a-service /daily/2023/04/22/build-configs-as-a-service permanent
redir /archive/2023/04/23/laravel-pipelines /daily/2023/04/23/laravel-pipelines permanent
redir /archive/2023/04/24/ci-pipelines-should-start-locally /daily/2023/04/24/ci-pipelines-should-start-locally permanent
redir /archive/2023/04/25/shortening-the-feedback-loop-even-more /daily/2023/04/25/shortening-the-feedback-loop-even-more permanent
redir /archive/2023/04/26/tdd-structure-a-new-test-by-writing-comments-first /daily/2023/04/26/tdd-structure-a-new-test-by-writing-comments-first permanent
redir /archive/2023/04/27/tdd-write-the-test-backwards /daily/2023/04/27/tdd-write-the-test-backwards permanent
redir /archive/2023/04/30/will-we-see-drupal-7-100 /daily/2023/04/30/will-we-see-drupal-7-100 permanent
redir /archive/2023/05/01/should-drupal-7-support-be-extended-again /daily/2023/05/01/should-drupal-7-support-be-extended-again permanent
redir /archive/2023/05/02/does-it-depend-on-who-you-ask /daily/2023/05/02/does-it-depend-on-who-you-ask permanent
redir /archive/2023/05/03/just-because-core-is-supported /daily/2023/05/03/just-because-core-is-supported permanent
redir /archive/2023/05/04/speaking-at-the-symfony-uk-meetup-london /daily/2023/05/04/speaking-at-the-symfony-uk-meetup-london permanent
redir /archive/2023/05/05/getting-to-green /daily/2023/05/05/getting-to-green permanent
redir /archive/2023/05/06/why-its-important-to-see-the-test-fail /daily/2023/05/06/why-its-important-to-see-the-test-fail permanent
redir /archive/2023/05/07/you-dont-need-to-think-about-what-to-do-next /daily/2023/05/07/you-dont-need-to-think-about-what-to-do-next permanent
redir /archive/2023/05/08/only-write-enough-code-to-get-a-failing-test /daily/2023/05/08/only-write-enough-code-to-get-a-failing-test permanent
redir /archive/2023/05/09/the-single-responsibility-principle /daily/2023/05/09/the-single-responsibility-principle permanent
redir /archive/2023/05/10/tailwind-css-makes-change-easier /daily/2023/05/10/tailwind-css-makes-change-easier permanent
redir /archive/2023/05/11/why-i-like-pair-and-mob-programming /daily/2023/05/11/why-i-like-pair-and-mob-programming permanent
redir /archive/2023/05/12/always-listen-to-the-mob /daily/2023/05/12/always-listen-to-the-mob permanent
redir /archive/2023/05/13/when-you-do-things-right /daily/2023/05/13/when-you-do-things-right permanent
redir /archive/2023/05/14/releasing-small-changes-often-is-less-risky /daily/2023/05/14/releasing-small-changes-often-is-less-risky permanent
redir /archive/2023/05/15/is-the-drupal-release-cycle-too-fast /daily/2023/05/15/is-the-drupal-release-cycle-too-fast permanent
redir /archive/2023/05/16/mastering-your-tools-improves-productivity /daily/2023/05/16/mastering-your-tools-improves-productivity permanent
redir /archive/2023/05/17/what-is-deprecated-code /daily/2023/05/17/what-is-deprecated-code permanent
redir /archive/2023/05/18/why-is-backward-compatibility-important /daily/2023/05/18/why-is-backward-compatibility-important permanent
redir /archive/2023/05/19/semantic-versioning /daily/2023/05/19/semantic-versioning permanent
redir /archive/2023/05/20/a-minor-breaking-change /daily/2023/05/20/a-minor-breaking-change permanent
redir /archive/2023/05/21/drupal-9-almost-end-of-life-already /daily/2023/05/21/drupal-9-almost-end-of-life-already permanent
redir /archive/2023/06/05/how-long-should-a-feature-flag-live /daily/2023/06/05/how-long-should-a-feature-flag-live permanent
redir /archive/2023/06/06/drupal-7-end-of-life-extended /daily/2023/06/06/drupal-7-end-of-life-extended permanent
redir /archive/2023/06/07/what-does-the-drupal-7-eol-extension-mean-to-you /daily/2023/06/07/what-does-the-drupal-7-eol-extension-mean-to-you permanent
redir /archive/2023/06/08/write-less-drupal-code /daily/2023/06/08/write-less-drupal-code permanent
redir /archive/2023/06/09/drupal-is-built-by-people /daily/2023/06/09/drupal-is-built-by-people permanent
redir /archive/2023/06/10/how-do-you-know-when-to-remove-a-feature-flag /daily/2023/06/10/how-do-you-know-when-to-remove-a-feature-flag permanent
redir /archive/2023/06/11/failing-fast /daily/2023/06/11/failing-fast permanent
redir /archive/2023/06/12/feature-flags-in-a-multi-tenancy-application /daily/2023/06/12/feature-flags-in-a-multi-tenancy-application permanent
redir /archive/2023/06/13/should-you-feature-flag-everything /daily/2023/06/13/should-you-feature-flag-everything permanent
redir /archive/2023/06/14/what-if-there-was-no-open-source-software /daily/2023/06/14/what-if-there-was-no-open-source-software permanent
redir /archive/2023/06/15/done-is-better-than-perfect /daily/2023/06/15/done-is-better-than-perfect permanent
redir /archive/2023/06/16/make-the-easy-change /daily/2023/06/16/make-the-easy-change permanent
redir /archive/2023/06/17/avoid-git-merge-hell-with-trunk-based-development /daily/2023/06/17/avoid-git-merge-hell-with-trunk-based-development permanent
redir /archive/2023/06/18/are-you-doing-ci-cd /daily/2023/06/18/are-you-doing-ci-cd permanent
redir /archive/2023/06/19/should-you-upgrade-from-drupal-7-to-drupal-10 /daily/2023/06/19/should-you-upgrade-from-drupal-7-to-drupal-10 permanent
redir /archive/2023/06/20/should-you-deploy-on-a-friday /daily/2023/06/20/should-you-deploy-on-a-friday permanent
redir /archive/2023/06/21/deployments-or-releases /daily/2023/06/21/deployments-or-releases permanent
redir /archive/2023/06/22/fail-to-lear /daily/2023/06/22/fail-to-lear permanent
redir /archive/2023/06/23/why-keep-a-changelog /daily/2023/06/23/why-keep-a-changelog permanent
redir /archive/2023/06/24/credited-on-200-fixed-issues /daily/2023/06/24/credited-on-200-fixed-issues permanent
redir /archive/2023/06/25/do-you-need-permission-test-driven-development /daily/2023/06/25/do-you-need-permission-test-driven-development permanent
redir /archive/2023/06/26/is-any-code-without-tests-legacy /daily/2023/06/26/is-any-code-without-tests-legacy permanent
redir /archive/2023/06/27/ci-pipeline-additional-team-member /daily/2023/06/27/ci-pipeline-additional-team-member permanent
redir /archive/2023/06/28/theres-no-value-in-a-broken-ci-pipeline /daily/2023/06/28/theres-no-value-in-a-broken-ci-pipeline permanent
redir /archive/2023/06/29/tests-wont-tell-you-if-your-code-works /daily/2023/06/29/tests-wont-tell-you-if-your-code-works permanent
redir /archive/2023/06/30/how-did-you-learn-automated-testing /daily/2023/06/30/how-did-you-learn-automated-testing permanent
redir /archive/2023/07/01/once-you-start-writing-tests-you-cant-stop /daily/2023/07/01/once-you-start-writing-tests-you-cant-stop permanent
redir /archive/2023/07/02/docker-or-nix /daily/2023/07/02/docker-or-nix permanent
redir /archive/2023/07/03/why-write-custom-assertions-in-your-tests /daily/2023/07/03/why-write-custom-assertions-in-your-tests permanent
redir /archive/2023/07/04/think-smaller-with-tdd /daily/2023/07/04/think-smaller-with-tdd permanent
redir /archive/2023/07/05/services-vs-actions /daily/2023/07/05/services-vs-actions permanent
redir /archive/2023/07/06/automated-testing-is-more-than-just-unit-testing /daily/2023/07/06/automated-testing-is-more-than-just-unit-testing permanent
redir /archive/2023/07/15/test-driven-development-makes-you-more-productive /daily/2023/07/15/test-driven-development-makes-you-more-productive permanent
redir /archive/2023/07/16/when-writing-a-failing-test-youre-designing-your-code /daily/2023/07/16/when-writing-a-failing-test-youre-designing-your-code permanent
redir /archive/2023/07/17/too-many-choices /daily/2023/07/17/too-many-choices permanent
redir /archive/2023/07/18/tdd-as-a-concept-is-simple-but-tdd-is-difficult /daily/2023/07/18/tdd-as-a-concept-is-simple-but-tdd-is-difficult permanent
redir /archive/2023/07/19/tdd-is-like-clicker-training /daily/2023/07/19/tdd-is-like-clicker-training permanent
redir /archive/2023/07/20/tests-as-communication /daily/2023/07/20/tests-as-communication permanent
redir /archive/2023/07/21/comments-as-communication /daily/2023/07/21/comments-as-communication permanent
redir /archive/2023/07/22/more-code-more-problems /daily/2023/07/22/more-code-more-problems permanent
redir /archive/2023/07/23/tomorrow-is-easier-if-todays-code-is-simpler /daily/2023/07/23/tomorrow-is-easier-if-todays-code-is-simpler permanent
redir /archive/2023/07/24/testing-is-all-about-confidence /daily/2023/07/24/testing-is-all-about-confidence permanent
redir /archive/2023/07/25/working-backwards /daily/2023/07/25/working-backwards permanent
redir /archive/2023/07/26/prove-the-concept /daily/2023/07/26/prove-the-concept permanent
redir /archive/2023/07/27/stick-to-conventions /daily/2023/07/27/stick-to-conventions permanent
redir /archive/2023/07/28/generic-commit-messages /daily/2023/07/28/generic-commit-messages permanent
redir /archive/2023/07/29/should-i-wait-to-upgrade-from-drupal-7 /daily/2023/07/29/should-i-wait-to-upgrade-from-drupal-7 permanent
redir /archive/2023/07/30/commit-often-deploy-often /daily/2023/07/30/commit-often-deploy-often permanent
redir /archive/2023/07/31/upgrading-from-drupal-9-is-easier /daily/2023/07/31/upgrading-from-drupal-9-is-easier permanent
redir /archive/2023/08/01/maintaining-a-module-used-on-35000-drupal-websites /daily/2023/08/01/maintaining-a-module-used-on-35000-drupal-websites permanent
redir /archive/2023/08/02/a-crash-course-into-drupal-testing /daily/2023/08/02/a-crash-course-into-drupal-testing permanent
redir /archive/2023/08/03/what-problem-are-we-trying-to-solve /daily/2023/08/03/what-problem-are-we-trying-to-solve permanent
redir /archive/2023/08/04/laravel-prompts /daily/2023/08/04/laravel-prompts permanent
redir /archive/2023/08/05/use-drupal-to-own-your-content /daily/2023/08/05/use-drupal-to-own-your-content permanent
redir /archive/2023/08/06/yagni /daily/2023/08/06/yagni permanent
redir /archive/2023/08/07/tests-make-upgrades-less-risky /daily/2023/08/07/tests-make-upgrades-less-risky permanent
redir /archive/2023/08/08/8-years-of-dotfiles /daily/2023/08/08/8-years-of-dotfiles permanent
redir /archive/2023/08/09/vim-is-my-lightsaber /daily/2023/08/09/vim-is-my-lightsaber permanent
redir /archive/2023/08/10/testing-fixed-prices-and-bug-free-guarantees /daily/2023/08/10/testing-fixed-prices-and-bug-free-guarantees permanent
redir /archive/2023/08/11/everyone-tests-their-code /daily/2023/08/11/everyone-tests-their-code permanent
redir /archive/2023/08/12/does-not-writing-tests-actually-save-time /daily/2023/08/12/does-not-writing-tests-actually-save-time permanent
redir /archive/2023/08/13/dont-estimate-separately-for-testing /daily/2023/08/13/dont-estimate-separately-for-testing permanent
redir /archive/2023/08/14/why-keep-a-dotfiles-repository /daily/2023/08/14/why-keep-a-dotfiles-repository permanent
redir /archive/2023/08/15/writing-test-and-implementation-code-are-the-same-task /daily/2023/08/15/writing-test-and-implementation-code-are-the-same-task permanent
redir /archive/2023/08/16/writing-tests-in-your-own-time /daily/2023/08/16/writing-tests-in-your-own-time permanent
redir /archive/2023/08/17/writing-custom-assertions-in-your-tests /daily/2023/08/17/writing-custom-assertions-in-your-tests permanent
redir /archive/2023/08/18/types-vs-tests /daily/2023/08/18/types-vs-tests permanent
redir /archive/2023/08/19/asserting-all-the-things /daily/2023/08/19/asserting-all-the-things permanent
redir /archive/2023/08/20/php-types-and-assertions /daily/2023/08/20/php-types-and-assertions permanent
redir /archive/2023/08/21/which-part-of-the-ci-pipeline-has-the-most-value /daily/2023/08/21/which-part-of-the-ci-pipeline-has-the-most-value permanent
redir /archive/2023/08/22/deployments-with-your-ci-pipeline /daily/2023/08/22/deployments-with-your-ci-pipeline permanent
redir /archive/2023/08/23/dont-use-third-party-services-directly /daily/2023/08/23/dont-use-third-party-services-directly permanent
redir /archive/2023/08/24/testing-multiple-implementations-with-contract-tests /daily/2023/08/24/testing-multiple-implementations-with-contract-tests permanent
redir /archive/2023/08/25/start-with-a-vague-test /daily/2023/08/25/start-with-a-vague-test permanent
redir /archive/2023/08/26/work-in-small-chunks /daily/2023/08/26/work-in-small-chunks permanent
redir /archive/2023/08/27/pull-requests-are-great-for-open-source /daily/2023/08/27/pull-requests-are-great-for-open-source permanent
redir /archive/2023/08/28/pair-and-mob-programming-are-continuous-code-review /daily/2023/08/28/pair-and-mob-programming-are-continuous-code-review permanent
redir /archive/2023/08/29/ci-pipelines-are-an-automated-code-review /daily/2023/08/29/ci-pipelines-are-an-automated-code-review permanent
redir /archive/2023/08/30/tdd-and-unexpected-errors /daily/2023/08/30/tdd-and-unexpected-errors permanent
redir /archive/2023/08/31/code-review-discourages-small-refactorings /daily/2023/08/31/code-review-discourages-small-refactorings permanent
redir /archive/2023/09/01/non-blocking-code-reviews /daily/2023/09/01/non-blocking-code-reviews permanent
redir /archive/2023/09/02/planning-first-or-reviewing-last /daily/2023/09/02/planning-first-or-reviewing-last permanent
redir /archive/2023/09/03/including-time-for-tests-in-estimates /daily/2023/09/03/including-time-for-tests-in-estimates permanent
redir /archive/2023/09/04/charging-more-not-to-write-tests /daily/2023/09/04/charging-more-not-to-write-tests permanent
redir /archive/2023/09/05/spring-clean-before-upgrading /daily/2023/09/05/spring-clean-before-upgrading permanent
redir /archive/2023/09/06/verbosity-over-abstraction /daily/2023/09/06/verbosity-over-abstraction permanent
redir /archive/2023/09/07/what-s-the-simplest-test-to-begin-with /daily/2023/09/07/what-s-the-simplest-test-to-begin-with permanent
redir /archive/2023/09/08/do-you-proactively-refactor-your-code /daily/2023/09/08/do-you-proactively-refactor-your-code permanent
redir /archive/2023/09/09/a-lack-of-tests-discourages-refactoring /daily/2023/09/09/a-lack-of-tests-discourages-refactoring permanent
redir /archive/2023/09/10/code-is-read-more-than-it-s-written /daily/2023/09/10/code-is-read-more-than-it-s-written permanent
redir /archive/2023/09/11/dont-use-else /daily/2023/09/11/dont-use-else permanent
redir /archive/2023/09/12/dont-inject-too-many-dependencies /daily/2023/09/12/dont-inject-too-many-dependencies permanent
redir /archive/2023/09/13/which-type-of-test-should-i-use /daily/2023/09/13/which-type-of-test-should-i-use permanent
redir /archive/2023/09/14/outside-in-or-inside-out /daily/2023/09/14/outside-in-or-inside-out permanent
redir /archive/2023/09/15/types-or-no-types /daily/2023/09/15/types-or-no-types permanent
redir /archive/2023/09/16/how-not-to-break-36-000-websites /daily/2023/09/16/how-not-to-break-36-000-websites permanent
redir /archive/2023/09/17/how-much-refactoring-should-i-be-doing /daily/2023/09/17/how-much-refactoring-should-i-be-doing permanent
redir /archive/2023/09/18/increasing-test-coverage-with-regression-tests /daily/2023/09/18/increasing-test-coverage-with-regression-tests permanent
redir /archive/2023/09/19/stop-writing-tests /daily/2023/09/19/stop-writing-tests permanent
redir /archive/2023/09/20/why-i-prefer-types /daily/2023/09/20/why-i-prefer-types permanent
redir /archive/2023/09/21/buggy-software-causes-reputational-damage /daily/2023/09/21/buggy-software-causes-reputational-damage permanent
redir /archive/2023/09/22/documentation-and-comments-get-stale /daily/2023/09/22/documentation-and-comments-get-stale permanent
redir /archive/2023/09/23/not-everyone-writes-automated-tests /daily/2023/09/23/not-everyone-writes-automated-tests permanent
redir /archive/2023/09/24/test-to-save-your-job /daily/2023/09/24/test-to-save-your-job permanent
redir /archive/2023/09/25/should-you-use-a-staging-environment /daily/2023/09/25/should-you-use-a-staging-environment permanent
redir /archive/2023/09/26/which-branch-should-be-in-which-environment /daily/2023/09/26/which-branch-should-be-in-which-environment permanent
redir /archive/2023/09/27/separating-environments-with-feature-flags /daily/2023/09/27/separating-environments-with-feature-flags permanent
redir /archive/2023/09/28/feature-flags-enable-continuous-integration /daily/2023/09/28/feature-flags-enable-continuous-integration permanent
redir /archive/2023/09/29/92-changed-files-with-885-additions-and-156-deletions /daily/2023/09/29/92-changed-files-with-885-additions-and-156-deletions permanent
redir /archive/2023/09/30/automated-testing-offers-repeatability /daily/2023/09/30/automated-testing-offers-repeatability permanent
redir /archive/2023/10/01/tdd--repeat-and-refactor /daily/2023/10/01/tdd--repeat-and-refactor permanent
redir /archive/2023/10/02/only-comment-what-needs-to-be-commented /daily/2023/10/02/only-comment-what-needs-to-be-commented permanent
redir /archive/2023/10/03/there-is-no-perfect-solution /daily/2023/10/03/there-is-no-perfect-solution permanent
redir /archive/2023/10/04/the-best-solution-is-the-one-that-gets-the-tests-to-pass /daily/2023/10/04/the-best-solution-is-the-one-that-gets-the-tests-to-pass permanent
redir /archive/2023/10/05/some-solutions-are-good-enough /daily/2023/10/05/some-solutions-are-good-enough permanent
redir /archive/2023/10/06/software-development-is-like-going-to-the-dentist /daily/2023/10/06/software-development-is-like-going-to-the-dentist permanent
redir /archive/2023/10/07/a-breakdown-of-tests-from-a-current-project /daily/2023/10/07/a-breakdown-of-tests-from-a-current-project permanent
redir /archive/2023/10/08/is-test-driven-development-difficult /daily/2023/10/08/is-test-driven-development-difficult permanent
redir /archive/2023/10/09/spotting-new-things-in-drupal-10-1 /daily/2023/10/09/spotting-new-things-in-drupal-10-1 permanent
redir /archive/2023/10/10/why-use-composer-to-manage-drupal-dependencies /daily/2023/10/10/why-use-composer-to-manage-drupal-dependencies permanent
redir /archive/2023/10/11/do-you-need-that-module /daily/2023/10/11/do-you-need-that-module permanent
redir /archive/2023/10/12/business-logic-in-template-files /daily/2023/10/12/business-logic-in-template-files permanent
redir /archive/2023/10/13/writing-tests-is-an-investment /daily/2023/10/13/writing-tests-is-an-investment permanent
redir /archive/2023/10/14/do-you-need-to-write-tests-for-small-or-short-lived-projects /daily/2023/10/14/do-you-need-to-write-tests-for-small-or-short-lived-projects permanent
redir /archive/2023/10/15/off-to-drupalcon /daily/2023/10/15/off-to-drupalcon permanent
redir /archive/2023/10/23/when-should-run-your-tests /daily/2023/10/23/when-should-run-your-tests permanent
redir /archive/2023/10/24/how-to-test-code-you-didnt-write /daily/2023/10/24/how-to-test-code-you-didnt-write permanent
redir /archive/2023/10/25/automated-tests-prevent-regressions-when-upgrading /daily/2023/10/25/automated-tests-prevent-regressions-when-upgrading permanent
redir /archive/2023/10/26/is-decoupled-drupal-still-a-thing /daily/2023/10/26/is-decoupled-drupal-still-a-thing permanent
redir /archive/2023/10/27/work-with-me-and-support-the-drupal-association /daily/2023/10/27/work-with-me-and-support-the-drupal-association permanent
redir /archive/2023/10/28/can-you-move-faster-without-tests /daily/2023/10/28/can-you-move-faster-without-tests permanent
redir /archive/2023/10/29/i-can-drive-my-car-blindfolded-but-is-it-a-good-idea /daily/2023/10/29/i-can-drive-my-car-blindfolded-but-is-it-a-good-idea permanent
redir /archive/2023/10/30/is-drupal-a-cms-or-a-framework /daily/2023/10/30/is-drupal-a-cms-or-a-framework permanent
redir /archive/2023/10/31/one-official-drupal-development-environment /daily/2023/10/31/one-official-drupal-development-environment permanent
redir /archive/2023/11/01/drupal-9-is-now-end-of-life /daily/2023/11/01/drupal-9-is-now-end-of-life permanent
redir /archive/2023/11/02/is-code-coverage-an-objective-or-guideline /daily/2023/11/02/is-code-coverage-an-objective-or-guideline permanent
redir /archive/2023/11/03/why-your-company-should-contribute-to-open-source-software /daily/2023/11/03/why-your-company-should-contribute-to-open-source-software permanent
redir /archive/2023/11/04/why-you-should-contribute-to-open-source-software /daily/2023/11/04/why-you-should-contribute-to-open-source-software permanent
redir /archive/2023/11/05/i-m-starting-a-podcast /daily/2023/11/05/i-m-starting-a-podcast permanent
redir /archive/2023/11/06/the-first-beyond-blocks-podcast-episode-is-recorded /daily/2023/11/06/the-first-beyond-blocks-podcast-episode-is-recorded permanent
redir /archive/2023/11/07/it-depends /daily/2023/11/07/it-depends permanent
redir /archive/2023/11/08/building-build-configs /daily/2023/11/08/building-build-configs permanent
redir /archive/2023/11/09/readme-driven-development /daily/2023/11/09/readme-driven-development permanent
redir /archive/2023/11/10/retrofit-with-matt-glaman /daily/2023/11/10/retrofit-with-matt-glaman permanent
redir /archive/2023/11/11/work-in-small-batches /daily/2023/11/11/work-in-small-batches permanent
redir /archive/2023/11/12/drupal-gives-you-so-much-out-of-the-box /daily/2023/11/12/drupal-gives-you-so-much-out-of-the-box permanent
redir /archive/2023/11/13/phpunit-does-more-than-unit-testing /daily/2023/11/13/phpunit-does-more-than-unit-testing permanent
redir /archive/2023/11/14/why-i-prefer-integration-tests-to-unit-tests /daily/2023/11/14/why-i-prefer-integration-tests-to-unit-tests permanent
redir /archive/2023/11/15/dont-pre-optimise-and-over-customise /daily/2023/11/15/dont-pre-optimise-and-over-customise permanent
redir /archive/2023/11/16/avoiding-over-mocking /daily/2023/11/16/avoiding-over-mocking permanent
redir /archive/2023/11/17/drupal-s-alternate-realities /daily/2023/11/17/drupal-s-alternate-realities permanent
redir /archive/2023/11/18/writing-good-test-names /daily/2023/11/18/writing-good-test-names permanent
redir /archive/2023/11/19/why-ive-standardised-on-run-scripts /daily/2023/11/19/why-ive-standardised-on-run-scripts permanent
redir /archive/2023/11/20/whatll-be-in-drupal-11 /daily/2023/11/20/whatll-be-in-drupal-11 permanent
redir /archive/2023/11/21/why-i-built-build-configs /daily/2023/11/21/why-i-built-build-configs permanent
redir /archive/2023/11/22/frequency-reduces-difficulty /daily/2023/11/22/frequency-reduces-difficulty permanent
redir /archive/2023/11/23/partial-mocking /daily/2023/11/23/partial-mocking permanent
redir /archive/2023/11/24/are-conventional-commits-worth-it /daily/2023/11/24/are-conventional-commits-worth-it permanent
redir /archive/2023/11/25/community-engagement-for-non-technical-drupal-enthusiasts /daily/2023/11/25/community-engagement-for-non-technical-drupal-enthusiasts permanent
redir /archive/2023/11/26/to-docblock-or-not-to-docblock /daily/2023/11/26/to-docblock-or-not-to-docblock permanent
redir /archive/2023/11/27/finding-the-best-test-base /daily/2023/11/27/finding-the-best-test-base permanent
redir /archive/2023/11/28/which-phpstan-level-should-you-use /daily/2023/11/28/which-phpstan-level-should-you-use permanent
redir /archive/2023/11/29/the-lowest-level-is-better-than-no-level /daily/2023/11/29/the-lowest-level-is-better-than-no-level permanent
redir /archive/2023/11/30/are-bugs-good-for-users /daily/2023/11/30/are-bugs-good-for-users permanent
redir /archive/2023/12/01/the-contribution-first-workflow /daily/2023/12/01/the-contribution-first-workflow permanent
redir /archive/2023/12/04/writing-contrib-modules-as-glue-between-your-custom-code /daily/2023/12/04/writing-contrib-modules-as-glue-between-your-custom-code permanent
redir /archive/2023/12/05/open-source-encourages-open-source /daily/2023/12/05/open-source-encourages-open-source permanent
redir /archive/2023/12/06/open-source-first-doesnt-mean-you-need-to-cover-every-use-case /daily/2023/12/06/open-source-first-doesnt-mean-you-need-to-cover-every-use-case permanent
redir /archive/2023/12/07/a-drupal-case-study-from-oxfam /daily/2023/12/07/a-drupal-case-study-from-oxfam permanent
redir /archive/2023/12/08/dont-just-rewrite /daily/2023/12/08/dont-just-rewrite permanent
redir /archive/2023/12/09/rebuild-or-iterate /daily/2023/12/09/rebuild-or-iterate permanent
redir /archive/2023/12/10/suffixing-names /daily/2023/12/10/suffixing-names permanent
redir /archive/2023/12/11/custom-coding-standards-and-conventions /daily/2023/12/11/custom-coding-standards-and-conventions permanent
redir /archive/2023/12/12/drupalcon-session-survey-results /daily/2023/12/12/drupalcon-session-survey-results permanent
redir /archive/2023/12/13/reviving-an-old-php-project /daily/2023/12/13/reviving-an-old-php-project permanent
redir /archive/2023/12/14/save-time-and-effort-with-drupal-distributions /daily/2023/12/14/save-time-and-effort-with-drupal-distributions permanent
redir /archive/2023/12/15/building-your-own-in-house-drupal-distribution /daily/2023/12/15/building-your-own-in-house-drupal-distribution permanent
redir /archive/2023/12/16/adding-snapshot-tests-to-build-configs /daily/2023/12/16/adding-snapshot-tests-to-build-configs permanent
redir /archive/2023/12/17/fail-fast-fix-fast /daily/2023/12/17/fail-fast-fix-fast permanent
redir /archive/2023/12/18/static-analysis-on-tests /daily/2023/12/18/static-analysis-on-tests permanent
redir /archive/2023/12/19/php-tui-dan-leech /daily/2023/12/19/php-tui-dan-leech permanent
redir /archive/2023/12/20/hover-focus-hocus /daily/2023/12/20/hover-focus-hocus permanent
redir /archive/2023/12/21/new-year-coaching /daily/2023/12/21/new-year-coaching permanent
redir /archive/2023/12/22/best-language-cms-or-framework /daily/2023/12/22/best-language-cms-or-framework permanent
redir /archive/2023/12/23/using-a-whole-framework-or-part-of-it /daily/2023/12/23/using-a-whole-framework-or-part-of-it permanent
redir /archive/2023/12/24/this-should-never-happen /daily/2023/12/24/this-should-never-happen permanent
redir /archive/2023/12/25/zero-to-test /daily/2023/12/25/zero-to-test permanent
redir /archive/2023/12/26/good-code-is-not-about-being-easy-to-write /daily/2023/12/26/good-code-is-not-about-being-easy-to-write permanent
redir /archive/2023/12/27/writing-new-code-is-quick-to-begin-with /daily/2023/12/27/writing-new-code-is-quick-to-begin-with permanent
redir /archive/2023/12/28/pride-and-productivity /daily/2023/12/28/pride-and-productivity permanent
redir /archive/2023/12/29/decide-automate-document /daily/2023/12/29/decide-automate-document permanent
redir /archive/2023/12/30/weve-always-done-it-this-way /daily/2023/12/30/weve-always-done-it-this-way permanent
redir /archive/2023/12/31/just /daily/2023/12/31/just permanent
redir /archive/2024/03/03/centarro-and-drupal-commerce-with-ryan-szrama /daily/2024/03/03/centarro-and-drupal-commerce-with-ryan-szrama permanent
redir /atNOQ https://youtu.be/r41dkD2EOo8 permanent
redir /automatically-updating-talk-created-date https://gist.github.com/opdavies/4e75e1753d8603113f07f8264bb783d6 permanent
redir /blog.xml /rss.xml permanent
@ -215,8 +572,8 @@ redir /blog/publishing-sculpin-sites-(with-)?github-pages /blog/publishing-sculp
redir /blog/queuing-private-messages-in-drupal-8 /blog/queuing-private-messages-drupal-8 permanent
redir /blog/quick-project-switching-in-phpstorm /blog/quick-project-switching-phpstorm permanent
redir /blog/quickly-apply-patches-using-git-and-curl-or-wget /blog/quickly-apply-patches-using-git-curl-or-wget permanent
redir /blog/rebuilding-bartik-with-vuejs-tailwind-css-part-2 /blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2 permanent
redir /blog/rebuilding-bartik-with-vuejs-tailwind-css /blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css permanent
redir /blog/rebuilding-bartik-with-vuejs-tailwind-css-part-2 /blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2 permanent
redir /blog/rebuilding-uis-tailwind-css /blog/uis-ive-rebuilt-tailwind-css permanent
redir /blog/restructuring-my-tailwindjs-config-files /blog/restructuring-my-tailwindjs-configuration-files permanent
redir /blog/retrieving-profile-data-user-using-entity-metadata-wrapper /blog/cleanly-retrieving-user-profile-data-using-entity-metadata-wrapper permanent
@ -267,8 +624,8 @@ redir /do-library https://github.com/opdavies/drupalorg-api-php permanent
redir /do-projects https://github.com/opdavies/drupal-module-drupalorg-projects permanent
redir /docksal-phpunit-phpstorm /articles/running-phpunit-tests-docksal-phpstorm permanent
redir /docksal-posts /articles/tags/docksal permanent
redir /dransible-drupal-9 /blog/upgrading-dransible-project-drupal-9 permanent
redir /dransible https://github.com/opdavies/dransible permanent
redir /dransible-drupal-9 /blog/upgrading-dransible-project-drupal-9 permanent
redir /drupal-bristol-march-19 https://docs.google.com/presentation/d/1pk9LIN-hHX73kvDdo-lzgmKlAeH33_K_uvI0t7A-rvY/edit?usp=sharing permanent
redir /drupal-consultant /drupal-consulting permanent
redir /drupal-consulting / permanent
@ -279,16 +636,16 @@ redir /drupal-forum-post http://www.webmaster-forums.net/webmasters-corner/devel
redir /drupal-marketplace-uk https://www.drupal.org/drupal-services?offices%5B%5D=24460 permanent
redir /drupal-meetups-twitterbot /articles/introducing-the-drupal-meetups-twitterbot permanent
redir /drupal-novice-issues https://www.drupal.org/project/issues/search?text=&projects=&assigned=&submitted=&project_issue_followers=&status%5B%5D=Open&issue_tags_op=%3D&issue_tags=Novice permanent
redir /drupal-php-developer-consultant-uk /drupal-php-developer permanent
redir /drupal-php-developer /drupal-consultant permanent
redir /drupal-php-developer-consultant-uk /drupal-php-developer permanent
redir /drupal-tailwind-demo https://www.youtube.com/watch?v=1eM-Gw6GI4g permanent
redir /drupal-tailwindcss https://www.drupal.org/project/tailwindcss permanent
redir /drupal-vuejs /talks/decoupling-drupal-vuejs/ permanent
redir /drupal7 /drupal-upgrade permanent
redir /drupalcamp-london-2019-tickets /articles/drupalcamp-london-2019-tickets permanent
redir /drupalcamp-nyc-training https://www.youtube.com/watch?v=3M9c4UUzKm0 permanent
redir /drupalorg-project-issues https://www.drupal.org/project/issues/search?projects=Override+Node+Options%2C+Tailwind+CSS+Starter+Kit%2C+Block+ARIA+Landmark+Roles%2C+Copyright+Block+module%2C+System+User%2C+Null+User%2C+Collection+class%2C+Pathauto+Menu+Link%2C+Webform+ARIA&project_issue_followers=&status%5B%5D=1&status%5B%5D=13&status%5B%5D=8&status%5B%5D=14&status%5B%5D=15&issue_tags_op=%3D permanent
redir /drupalorg https://www.drupal.org/u/opdavies permanent
redir /drupalorg-project-issues https://www.drupal.org/project/issues/search?projects=Override+Node+Options%2C+Tailwind+CSS+Starter+Kit%2C+Block+ARIA+Landmark+Roles%2C+Copyright+Block+module%2C+System+User%2C+Null+User%2C+Collection+class%2C+Pathauto+Menu+Link%2C+Webform+ARIA&project_issue_followers=&status%5B%5D=1&status%5B%5D=13&status%5B%5D=8&status%5B%5D=14&status%5B%5D=15&issue_tags_op=%3D permanent
redir /drupalversary https://github.com/opdavies/drupal-module-drupalversary permanent
redir /elewant https://elewant.com/shepherd/admire/opdavies permanent
redir /feed /rss.xml permanent
@ -315,8 +672,8 @@ redir /pair-programming /pair permanent
redir /pair-with-me /pair permanent
redir /pairing /pair permanent
redir /php-ansible /talks/deploying-php-ansible-ansistrano permanent
redir /presentations/building-static-websites-sculpin /presentations/sculpin permanent
redir /presentations/building-presenting-slide-decks-rst2pdf /presentations/rst2pdf permanent
redir /presentations/building-static-websites-sculpin /presentations/sculpin permanent
redir /qSHAl /articles/published-my-first-npm-package/ permanent
redir /qT1Rb https://github.com/opdavies/drupal-meetups-twitterbot permanent
redir /rebuilding-acquia https://rebuilding-acquia.oliverdavies.uk permanent
@ -330,23 +687,23 @@ redir /roadmap /drupal-upgrade permanent
redir /rss /rss.xml permanent
redir /rst2pdf /talks/building-presenting-slide-decks-rst2pdf permanent
redir /s9MjJ https://symfonycasts.com/screencast/symfony permanent
redir /sculpin-encore-versioning https://github.com/opdavies/oliverdavies.uk/commit/d192b04aefa6e7a21bfc1f2e0fe0a16111e0e8a2 permanent
redir /sculpin /talks/building-static-websites-sculpin permanent
redir /sculpin-encore-versioning https://github.com/opdavies/oliverdavies.uk/commit/d192b04aefa6e7a21bfc1f2e0fe0a16111e0e8a2 permanent
redir /sites/default/files/images/social-avatar.jpg /images/social-avatar.jpg permanent
redir /skills https://opdavies-skills-tailwindcss.netlify.com/ permanent
redir /slides-drupal-9 https://slides-upgrading-to-drupal-9.oliverdavies.uk permanent
redir /slides-upgrading-to-drupal-9 https://slides-upgrading-to-drupal-9.oliverdavies.uk permanent
redir /slides-upgrading-to-drupal-9/index.html https://slides-upgrading-to-drupal-9.oliverdavies.uk permanent
redir /slides-working-with-workspace https://slides-working-with-workspace.oliverdavies.uk permanent
redir /speaker /press permanent
redir /speaker-info /speaker permanent
redir /speaker-information /speaker permanent
redir /speaker /press permanent
redir /speaking-videos https://www.youtube.com/playlist?list=PLHn41Ay7w7kfAzczswrANch5oHAPZBlvu permanent
redir /stream https://www.youtube.com/channel/UCkeK0qF9HHUPQH_fvn4ghqQ/live permanent
redir /subscription / permanent
redir /swap-markdown-parser https://github.com/opdavies/sculpin-twig-markdown-bundle-example/tree/swap-markdown-parser permanent
redir /symfony-server /articles/running-drupal-with-symfony-local-server permanent
redir /symfony https://connect.symfony.com/profile/opdavies permanent
redir /symfony-server /articles/running-drupal-with-symfony-local-server permanent
redir /symfonylive /articles/live-blogging-symfonylive-london permanent
redir /symposium https://symposiumapp.com/u/opdavies permanent
redir /tailwind-css-talk /talks/taking-flight-tailwind-css permanent
@ -393,11 +750,11 @@ redir /tdd-blog https://github.com/opdavies/drupal-module-tdd-blog permanent
redir /tdd-test-driven-drupal /talks/tdd-test-driven-drupal/ permanent
redir /team-coaching / permanent
redir /test-driven-drupal-book /test-driven-drupal permanent
redir /testing-drupal-intro https://inviqa.com/blog/drupal-automated-testing-introduction permanent
redir /testing-drupal https://www.oliverdavies.uk/talks/tdd-test-driven-drupal permanent
redir /testing-drupal-intro https://inviqa.com/blog/drupal-automated-testing-introduction permanent
redir /testing-tailwind-plugins /articles/testing-tailwindcss-plugins-with-jest permanent
redir /testing-workshop-code https://github.com/opdavies/workshop-drupal-automated-testing-code permanent
redir /testing-workshop https://github.com/opdavies/workshop-drupal-automated-testing permanent
redir /testing-workshop-code https://github.com/opdavies/workshop-drupal-automated-testing-code permanent
redir /todoist-filters https://gist.github.com/opdavies/6709fbdac5c3babbd94137bcc8b8e3c2 permanent
redir /twitter-tweaks https://github.com/opdavies/chrome-extension-twitter-tweaks permanent
redir /upgrading-to-drupal-9 /talks/upgrading-your-site-drupal-9 permanent
@ -410,8 +767,8 @@ redir /work /drupal-php-developer permanent
redir /working-with-workspace /talks/working-with-workspace permanent
redir /workshop-drupal-testing https://github.com/opdavies/workshop-drupal-automated-testing permanent
redir /workspace-demo https://github.com/opdavies/working-with-workspace-demo permanent
redir /wp-tailwind https://wp-tailwind.oliverdavies.uk permanent
redir /wp-tailwind-repo https://github.com/opdavies/wordcamp-bristol-2019 permanent
redir /wp-tailwind-starter https://github.com/opdavies/wordpress-tailwindcss-startker-kit permanent
redir /wp-tailwind-static https://wp-tailwind.oliverdavies.uk permanent
redir /wp-tailwind https://wp-tailwind.oliverdavies.uk permanent
redir /yXhoS /talks/things-you-should-know-about-php permanent