refactor: move website files to the root level

This commit is contained in:
Oliver Davies 2023-03-21 20:44:42 +00:00
parent c2887ecbc5
commit 2cbbfd60ff
590 changed files with 0 additions and 4484 deletions

View file

2
fractal/.gitignore vendored
View file

@ -1,2 +0,0 @@
/node_modules/
/public/build/

View file

@ -1,18 +0,0 @@
"About me"
Testimonial
Daily email form
Intro paragraph
Daily email archive
Blog listing
Blog post
Tags
Talk listing
Talk
Description
Video
Slides
Event list
Search form
Input
Search button
"Common searches"

View file

@ -1,8 +0,0 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./src/**/*.njk"],
theme: {
extend: {},
},
plugins: [],
}

View file

@ -1,33 +0,0 @@
'use strict';
const fractal = module.exports = require('@frctl/fractal').create();
const mandelbrot = require("@frctl/mandelbrot");
const path = require("path");
fractal.set('project.title', 'oliverdavies.uk');
fractal.components.set('path', __dirname + '/src/components');
fractal.components.engine(require('@frctl/nunjucks'));
fractal.components.set('ext', '.njk');
fractal.docs.set('path', __dirname + '/src/docs');
fractal.web.set('static.path', path.join(__dirname, 'public'));
fractal.web.theme(
mandelbrot({
information: [
{
label: 'Built on',
value: new Date(),
type: 'time',
format: (value) => {
return value.toLocaleDateString('en');
},
},
],
format: "yaml",
skin: "black",
})
);

View file

@ -1,7 +0,0 @@
{
"dependencies": {
"@frctl/fractal": "^1.5.14",
"@frctl/nunjucks": "^2.0.15",
"tailwindcss": "^3.2.4"
}
}

View file

@ -1,9 +0,0 @@
name: Footer
context:
links:
- About
- Blog
- Talks
- Daily list
- Search

View file

@ -1,5 +0,0 @@
<nav>
{% for link in links %}
<a href="#0">{{ link }}</a>
{% endfor %}
</nav>

View file

@ -1,4 +0,0 @@
name: Logo
context:
siteName: Oliver Davies

View file

@ -1,6 +0,0 @@
<a href="#0">
<svg aria-hidden="true" class="w-16 h-16 fill-current dark:text-blue-400 text-blue-primary md:w-18 md:h-18" viewBox="0 0 706 504" xmlns="http://www.w3.org/2000/svg">
<path d="M456.5 1.1c-12.3 1.5-31 5.5-44.1 9.4-12.7 3.9-63.6 24.6-64.1 26.2-.2.5 1.4 1.7 3.4 2.7 2.1 1 8.9 5.1 15.1 9.2l11.2 7.5 14.5-6c22.9-9.5 37.3-14 57.5-17.8 7.2-1.3 14.7-1.7 31-1.8 18.6 0 23.1.3 33 2.3 22 4.5 46.1 13.9 64.5 25.2 39.3 24.2 69.9 65.3 86.9 116.5 16.3 49.2 13 100.2-9.4 145.3-21.8 43.7-49.2 68.8-101.5 92.9-13.4 6.2-120.1 51.3-121.3 51.3-.5 0-15.7-35.1-33.7-78l-32.8-78 3.1-12.8c4.4-18 5.6-29.5 4.9-48.5-.6-16.8-2-25.7-6.3-38.7-12-35.8-40.8-69.2-74-85.6l-7.2-3.6-4.2-10c-2.4-5.6-3.9-10.3-3.4-10.7.5-.5 9.7-4.5 20.4-9s19.9-8.6 20.4-9.1c1.5-1.5-18.6-10.1-32.3-13.9l-6.8-1.9-20.6 8.7c-11.4 4.8-20.9 8.9-21.2 9.2-.2.3 2 6.3 5 13.3 3 7 5.5 12.8 5.5 12.9 0 .1-7.5.2-16.7.2-11.8.1-19.4.6-25.6 1.8-27.3 5.5-50.5 17.6-70.4 37-21.8 21.2-36.7 49-43 80.2-2.4 12.3-2.4 44 0 57.2 3.6 19.4 11.9 40.4 22.3 56 6.9 10.4 21.1 25.4 31.2 33 29.9 22.5 70.8 33.2 106.2 27.8 18.9-2.8 39.3-10.6 54.1-20.5 13.5-9.1 29.1-23.8 37.6-35.5 1.2-1.7 2.4-2.8 2.7-2.5.3.3 15.6 36.6 34.1 80.5 18.5 44 33.8 80.1 33.9 80.3.8.8 144.9-60.8 162.1-69.3 45.5-22.4 73.4-47.1 95.7-84.7 28-47.4 37.5-99.7 27.8-153.5-6.8-37.6-25-79-48.6-110.3-33.2-44.1-83-74.2-138.4-83.6-11.4-1.9-46.9-2.7-58.5-1.3zM259.2 141.4c42.4 10.9 77.8 50 84.8 93.8 1.6 9.9.8 34.5-1.4 44.8-5.2 24-15.5 43-32.6 60-20.7 20.6-42.8 31.3-67.7 32.7-26.9 1.5-53.2-6.2-74.3-21.7-29.4-21.7-46-56.2-46-95.7 0-45.4 27.2-89.6 66.1-107.2 8.2-3.7 21.7-7.9 29.4-9.1 10.4-1.6 30.8-.4 41.7 2.4z"></path><path d="M201 20.6c-83 11.2-157 71-186.5 150.8-22.3 60.3-18.3 134.9 10.2 192 21.5 43.1 59.6 81.6 102.1 103.4 21.1 10.9 46.3 19 71.2 22.9 16.2 2.5 53.1 2.5 68.5 0 25.9-4.2 45.2-10.5 69-22.2 14.4-7.1 39.7-23.2 41.8-26.7.8-1.2-.2-4.6-4.3-14.5-2.9-7-5.7-13.2-6.1-13.7-.5-.5-4.3 1.7-8.6 5.1C320 447.1 277.6 462 232 462c-59.8 0-115.2-26.3-154.8-73.5-32.2-38.3-48.8-88.7-46.9-142 2-53.7 22.1-99.6 60.7-138.5 28.1-28.3 63-47.2 102.9-55.7 11.9-2.6 14.1-2.8 38.6-2.8 28.3 0 39.4 1.3 59 7 27.9 8.1 58.5 26.1 80.9 47.6l10.9 10.5-14.3 6c-7.8 3.2-14.5 6.4-14.7 7-.2.7 16.5 41.3 37.1 90.4 20.7 49.1 37.6 90.1 37.6 91.1 0 3.4-7.1 24.2-11.6 33.8-2.4 5.1-6.6 13.1-9.4 17.7l-5 8.3 6.6 15.6c5.5 12.9 6.9 15.4 8 14.4 2.8-2.3 19.2-27.8 24.4-37.9l5.3-10.3 8.3 19.8c4.7 10.9 8.7 20.1 8.9 20.3.6.6 60.8-24.6 74.5-31.2 29.7-14.2 52.7-35.8 65.3-61.1 16.9-34 17.6-70.8 2.2-112-17-45.3-45.8-76.7-82.5-90-18.2-6.5-43.1-9.1-63.5-6.5-11.5 1.4-30 5.8-40.3 9.5l-7.3 2.6L402.3 91c-20.3-21.3-37.9-34.3-65.4-48.3-33.4-17.1-63.7-23.8-105.9-23.6-10.7.1-24.2.7-30 1.5zM504.5 122c9.2 2.5 22.1 8.3 29.2 13.1 6.9 4.7 18.7 16.3 24.3 23.9 15.1 20.6 26.3 49 29 74 2.3 20.7-3.1 43-14.5 60.5-8.7 13.3-27.6 29.5-44.5 38-6 3.1-47.3 20.6-47.5 20.2-1.1-1.6-87.5-208-87.3-208.3.2-.2 7.4-3.3 15.8-6.9 22.5-9.5 33.8-13 55-16.9 1.4-.2 9.3-.3 17.5-.1 11.5.2 16.9.8 23 2.5z"></path>
</svg>
<span class="sr-only">{{ siteName }}</span>
</a>

View file

@ -1,4 +0,0 @@
name: Page title
context:
title: Oliver Davies - Software Developer and Consultant, PHP and Drupal specialist

View file

@ -1 +0,0 @@
<h1>{{ title }}</h1>

View file

@ -1 +0,0 @@
name: Home

View file

@ -1,5 +0,0 @@
<div class="max-w-4xl mx-auto px-4">
{% render "@logo" %}
{% render "@page-title" %}
{% render "@footer" %}
</div>

View file

@ -1,17 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>{{ _target.title }} &middot; {{ _config.project.title }}</title>
<link rel="stylesheet" href="{{ '/build/tailwind.css' | path }}">
</head>
<body>
{{ yield | safe }}
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -1,435 +0,0 @@
map $uri $new_uri {
~^/10-useful-drupal-6-modules-i-use-every-project/?$ /blog/10-useful-drupal-6-modules;
~^/2010/04/05/styling-drupal-6s-taxonomy-lists-with-php-css-and-jquery/?$ /blog/style-drupal-6s-taxonomy-lists-php-css-jquery;
~^/2010/04/28/using-imagecache-and-imagecrop-for-my-portfolio/?$ /blog/using-imagecache-imagecrop-my-portfolio;
~^/2010/05/29/importing-images-using-the-imagefieldimport-module/?$ /blog/quickly-import-multiples-images-using-imagefieldimport-module;
~^/2010/06/23/creating-a-block-of-social-media-icons-using-cck-views-and-nodequeue/?$ /blog/create-block-social-media-icons-using-cck-views-nodequeue;
~^/2010/07/05/thanks/?$ /blog/thanks;
~^/2010/08/17/create-a-better-photo-gallery-in-drupal-part-2/?$ /blog/create-better-photo-gallery-drupal-part-2;
~^/2014/05/21/git-format-patch/?$ /blog/git-format-patch-your-friend;
~^/2PxmyqP/?$ /articles/examples-of-laravel-collections-in-drupal;
~^/39CoG/?$ /articles/drupalcamp-london-testing-workshop;
~^/3eGQr/?$ https://github.com/howToCodeWell/howToCodeWellFM/blob/c927e0b3589f1d7375002f7fd70f0bfc9fc90449/composer.json#L17;
~^/6UhLN/?$ https://github.com/opdavies/sculpin-twig-markdown-bundle/pull/1;
~^/6i3YZ/?$ https://www.youtube.com/watch?v=vUK5sEbd-dk;
~^/9rv0Z/?$ https://www.drupal.org/project/override_node_options/issues/3109852;
~^/BhMZi/?$ https://git.drupalcode.org/search?utf8=%E2%9C%93&snippets=&scope=&repository_ref=8.x-1.x&search=baz&project_id=23203;
~^/NBi5h/?$ https://git.drupalcode.org/search?utf8=%E2%9C%93&search=bar&group_id=&project_id=23203&search_code=true&repository_ref=8.x-1.x&nav_source=navbar;
~^/P5KQ5/?$ https://www.npmjs.com/package/tailwindcss-skip-link;
~^/S8ZDA/?$ /articles/rebuilding-bartik-with-vuejs-tailwind-css-part-2;
~^/Wh48P/?$ https://github.com/opdavies/oliverdavies.uk/blob/master/source/_partials/talk/video.html.twig;
~^/XbzS2/?$ https://github.com/opdavies/gmail-filter-builder;
~^/YK1VH/?$ /articles/psr4-autoloading-test-cases-drupal-7;
~^/YilTZ$ https://drupalcamp.london/tickets/training;
~^/about/?$ /;
~^/about/cv/?$ /cv;
~^/about/speaker-information/?$ /speaker-information;
~^/acquia-certifications/?$ https://certification.acquia.com/registry?fname=Oliver&lname=Davies&city=&state=&country=United+Kingdom&org=&exam=All;
~^/acquia-certified/?$ https://certification.acquia.com/?fname=Oliver&lname=Davies;
~^/ansible-molecule/?$ /articles/test-driven-ansible-role-development-molecule;
~^/ansible/?$ https://galaxy.ansible.com/opdavies;
~^/ansistrano-code/?$ https://github.com/opdavies/dransible;
~^/ansistrano-demo/?$ https://www.youtube.com/watch?v=PLS4ET7FAcU;
~^/ansistrano-slides/?$ /talks/deploying-php-ansible-ansistrano;
~^/archive/2022/10/20/run-vs-task-runners/? /archive/2022/10/19/run-vs-task-runners;
~^/articles/(.*)/?$ /blog/$1;
~^/atNOQ/?$ https://youtu.be/r41dkD2EOo8;
~^/automatically-updating-talk-created-date/?$ https://gist.github.com/opdavies/4e75e1753d8603113f07f8264bb783d6;
~^/blog.xml/?$ /rss.xml;
~^/blog/10-useful-drupal-6-modules/?$ /blog/useful-drupal-6-modules;
~^/blog/10-years-working-full-time-drupal/?$ /blog/10-years-working-full-time-drupal-php;
~^/blog/2010/04/05/style-drupal-6s-taxonomy-lists-php-css-and-jquery/?$ /blog/style-drupal-6s-taxonomy-lists-php-css-and-jquery;
~^/blog/2010/04/05/styling-drupal-6s-taxonomy-lists-with-php-css-and-jquery/?$ /blog/style-drupal-6s-taxonomy-lists-php-css-jquery;
~^/blog/2010/04/28/using-imagecache-and-imagecrop-my-portfolio/?$ /blog/using-imagecache-and-imagecrop-my-portfolio;
~^/blog/2010/05/06/conditional-email-addresses-webform/?$ /blog/conditional-email-addresses-webform;
~^/blog/2010/05/10/quickly-create-zen-subthemes-using-zenophile/?$ /blog/quickly-create-zen-subthemes-using-zenophile;
~^/blog/2010/05/25/create-slideshow-multiple-images-using-fancy-slide/?$ /blog/create-slideshow-multiple-images-using-fancy-slide;
~^/blog/2010/05/29/quickly-import-multiples-images-using-imagefieldimport-module/?$ /blog/quickly-import-multiples-images-using-imagefieldimport-module;
~^/blog/2010/06/02/improve-jpg-quality-imagecache-and-imageapi/?$ /blog/improve-jpg-quality-imagecache-and-imageapi;
~^/blog/2010/06/23/create-block-social-media-icons-using-cck-views-and-nodequeue/?$ /blog/create-block-social-media-icons-using-cck-views-and-nodequeue;
~^/blog/2010/06/25/10-useful-drupal-6-modules/?$ /blog/10-useful-drupal-6-modules;
~^/blog/2010/06/28/create-flickr-photo-gallery-using-feeds-cck-and-views/?$ /blog/create-flickr-photo-gallery-using-feeds-cck-and-views;
~^/blog/2010/07/01/change-content-type-multiple-nodes-using-sql/?$ /blog/change-content-type-multiple-nodes-using-sql;
~^/blog/2010/07/02/create-virtual-hosts-mac-os-x-using-virtualhostx/?$ /blog/create-virtual-hosts-mac-os-x-using-virtualhostx;
~^/blog/2010/07/07/add-taxonomy-term-multiple-nodes-using-sql/?$ /blog/add-taxonomy-term-multiple-nodes-using-sql;
~^/blog/2010/07/07/quickly-adding-taxonomy-term-multiple-nodes-using-sql/?$ /blog/add-taxonomy-term-multiple-nodes-using-sql;
~^/blog/2010/07/12/overview-teleport-module/?$ /blog/review-teleport-module;
~^/blog/2010/07/12/review-teleport-module/?$ /blog/review-teleport-module;
~^/blog/2010/08/10/review-adminhover-module/?$ /blog/review-adminhover-module;
~^/blog/2010/08/11/create-better-photo-gallery-drupal-part-1/?$ /blog/create-better-photo-gallery-drupal-part-1;
~^/blog/2010/08/11/how-create-better-photo-gallery-drupal-part-1/?$ /blog/create-better-photo-gallery-drupal-part-1;
~^/blog/2010/08/17/create-better-photo-gallery-drupal-part-2/?$ /blog/create-better-photo-gallery-drupal-part-2;
~^/blog/2010/08/20/review-image-caption-module/?$ /blog/review-image-caption-module;
~^/blog/2010/09/26/south-wales-drupal-user-group/?$ /blog/south-wales-drupal-user-group;
~^/blog/2010/10/10/create-and-apply-patches/?$ /blog/create-and-apply-patches;
~^/blog/2010/10/13/create-better-photo-gallery-drupal-part-3/?$ /blog/create-better-photo-gallery-drupal-part-3;
~^/blog/2010/10/22/create-better-photo-gallery-drupal-part-21/?$ /blog/create-better-photo-gallery-drupal-part-21;
~^/blog/2010/11/04/use-regular-expressions-search-and-replace-coda-or-textmate/?$ /blog/use-regular-expressions-search-and-replace-coda-or-textmate;
~^/blog/2011/02/14/easily-embed-typekit-fonts-your-drupal-website/?$ /blog/easily-embed-typekit-fonts-your-drupal-website;
~^/blog/2011/03/15/display-number-facebook-fans-php/?$ /blog/display-number-facebook-fans-php;
~^/blog/2011/03/31/proctor-stevenson/?$ /blog/proctor-stevenson;
~^/blog/2011/05/20/proctors-hosting-next-drupal-meetup/?$ /blog/proctors-hosting-next-drupal-meetup;
~^/blog/2011/05/23/imagefield-import-archive/?$ /blog/imagefield-import-archive;
~^/blog/2011/08/28/create-multigroups-drupal-7-using-field-collections/?$ /blog/create-multigroups-drupal-7-using-field-collections;
~^/blog/2011/10/19/install-and-configure-subversion-svn-server-ubuntu/?$ /blog/install-and-configure-subversion-svn-server-ubuntu;
~^/blog/2011/10/install-and-configure-subversion-svn-server-ubuntu/?$ /blog/how-install-configure-subversion-svn-server-ubuntu;
~^/blog/2012/01/04/site-upgraded-drupal-7/?$ /blog/site-upgraded-drupal-7;
~^/blog/2012/02/01/use-authorize-keys-create-passwordless-ssh-connection/?$ /blog/use-authorized-keys-create-passwordless-ssh-connection;
~^/blog/2012/04/16/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush/?$ /blog/create-omega-subtheme-less-css-preprocessor-using-omega-tools-and-drush;
~^/blog/2012/04/17/installing-nagios-centos/?$ /blog/installing-nagios-centos;
~^/blog/2012/04/19/adding-custom-theme-templates-drupal-7/?$ /blog/adding-custom-theme-templates-drupal-7;
~^/blog/2012/04/adding-custom-theme-templates-drupal-7/?$ /blog/adding-custom-theme-templates-drupal-7;
~^/blog/2012/05/23/add-date-popup-calendar-custom-form/?$ /blog/add-date-popup-calendar-custom-form;
~^/blog/2012/05/23/checkout-specific-revision-svn-command-line/?$ /blog/checkout-specific-revision-svn-command-line;
~^/blog/2012/05/23/forward-one-domain-another-using-mod-rewrite-and-htaccess/?$ /blog/forward-one-domain-another-using-mod-rewrite-and-htaccess;
~^/blog/2012/05/23/forward-one-domain-another-using-modrewrite-and-htaccess/?$ /blog/forward-one-domain-another-using-modrewrite-htaccess;
~^/blog/2012/05/23/prevent-apache-displaying-text-files-within-web-browser/?$ /blog/prevent-apache-displaying-text-files-within-web-browser;
~^/blog/2012/05/23/writing-info-file-drupal-7-theme/?$ /blog/writing-info-file-drupal-7-theme;
~^/blog/2012/05/24/dividing-drupals-process-and-preprocess-functions-separate-files/?$ /blog/dividing-drupals-process-and-preprocess-functions-separate-files;
~^/blog/2012/05/forward-one-domain-another-using-modrewrite-and-htaccess/?$ /blog/forward-one-domain-another-using-modrewrite-htaccess;
~^/blog/2012/07/12/my-new-drupal-modules/?$ /blog/my-new-drupal-modules;
~^/blog/2012/07/14/install-nomensa-media-player-drupal/?$ /blog/install-nomensa-media-player-drupal;
~^/blog/2012/07/27/writing-article-linux-journal/?$ /blog/writing-article-linux-journal;
~^/blog/2012/07/install-and-configure-nomensa-accessible-media-player-drupal/?$ /blog/install-configure-nomensa-accessible-media-player-drupal;
~^/blog/2012/07/nomensa-accessible-media-player-drupal/?$ /blog/install-configure-nomensa-accessible-media-player-drupal;
~^/blog/2012/08/18/display-custom-menu-drupal-7-theme-template-file/?$ /blog/display-custom-menu-drupal-7-theme-template-file;
~^/blog/2012/09/06/reflections-speaking-unifieddiff/?$ /blog/reflections-speaking-unifieddiff;
~^/blog/2012/10/25/my-sublime-text-2-settings/?$ /blog/my-sublime-text-2-settings;
~^/blog/2012/11/15/accessible-bristol-site-launched/?$ /blog/accessible-bristol-site-launched;
~^/blog/2012/11/17/open-sublime-text-2-mac-os-x-command-line/?$ /blog/open-sublime-text-2-mac-os-x-command-line;
~^/blog/2012/12/06/use-sass-and-compass-drupal-7-using-sassy/?$ /blog/use-sass-and-compass-drupal-7-using-sassy;
~^/blog/2012/12/use-sass-and-compass-drupal-7-using-sassy/?$ /blog/use-sass-and-compass-drupal-7-using-sassy;
~^/blog/2013/01/09/checking-if-user-logged-drupal-right-way/?$ /blog/checking-if-user-logged-drupal-right-way;
~^/blog/2013/02/16/creating-and-using-custom-tokens-drupal-7/?$ /blog/creating-and-using-custom-tokens-drupal-7;
~^/blog/2013/02/creating-and-using-custom-tokens-drupal-7/?$ /blog/creating-using-custom-tokens-drupal-7;
~^/blog/2013/03/02/quickest-way-install-sublime-text-2-ubuntu/?$ /blog/quickest-way-install-sublime-text-2-ubuntu;
~^/blog/2013/04/20/leaving-nomensa-joining-precedent/?$ /blog/leaving-nomensa-joining-precedent;
~^/blog/2013/04/27/display-git-branch-or-tag-names-your-bash-prompt/?$ /blog/display-git-branch-or-tag-names-your-bash-prompt;
~^/blog/2013/04/display-git-branch-or-tag-names-your-bash-prompt/?$ /blog/display-git-branch-or-tag-names-your-bash-prompt;
~^/blog/2013/06/13/some-useful-links-using-simpletest-drupal/?$ /blog/some-useful-links-using-simpletest-drupal;
~^/blog/2013/07/17/creating-local-and-staging-sites-drupals-domain-module-enabled/?$ /blog/creating-local-and-staging-sites-drupals-domain-module-enabled;
~^/blog/2013/07/26/going-drupalcon/?$ /blog/going-drupalcon;
~^/blog/2013/09/06/create-a-zen-sub-theme-using-drush/?$ /blog/create-a-zen-sub-theme-using-drush;
~^/blog/2013/09/create-zen-sub-theme-using-drush/?$ /blog/create-zen-sub-theme-using-drush;
~^/blog/2013/11/19/dont-bootstrap-drupal-use-drush/?$ /blog/dont-bootstrap-drupal-use-drush;
~^/blog/2013/11/27/useful-vagrant-commands/?$ /blog/useful-vagrant-commands;
~^/blog/2013/11/dont-bootstrap-drupal-use-drush/?$ /blog/dont-bootstrap-drupal-use-drush;
~^/blog/2013/12/24/quickly-apply-patches-using-git-and-curl-or-wget/?$ /blog/quickly-apply-patches-using-git-and-curl-or-wget;
~^/blog/2013/12/31/download-different-versions-drupal-drush/?$ /blog/download-different-versions-drupal-drush;
~^/blog/2013/12/quickly-apply-patches-using-git-and-curl-or-wget /blog/quickly-apply-patches-using-git-curl-or-wget;
~^/blog/2014/01/15/some-useful-git-aliases/?$ /blog/some-useful-git-aliases;
~^/blog/2014/02/09/drupalcamp-london-2014/?$ /blog/drupalcamp-london-2014;
~^/blog/2014/03/03/what-git-flow/?$ /blog/what-git-flow;
~^/blog/2014/05/03/drupal-association/?$ /blog/drupal-association;
~^/blog/2014/05/06/thanks/?$ /blog/thanks;
~^/blog/2014/05/21/git-format-patch/?$ /blog/git-format-patch;
~^/blog/2014/07/02/drush-make-drupalbristol/?$ /blog/drush-make-drupalbristol;
~^/blog/2014/10/06/fix-vagrant-loading-wrong-virtual-machine/?$ /blog/fix-vagrant-loading-wrong-virtual-machine;
~^/blog/2014/10/21/updating-features-and-adding-components-using-drush/?$ /blog/updating-features-and-adding-components-using-drush;
~^/blog/2014/11/18/include-css-fonts-using-sass-each-loop/?$ /blog/include-css-fonts-using-sass-each-loop;
~^/blog/2014/11/20/using-remote-files-when-developing-locally-with-stage-file-proxy-module/?$ /blog/using-remote-files-when-developing-locally-with-stage-file-proxy-module;
~^/blog/2014/11/27/pantheon-settings-files/?$ /blog/pantheon-settings-files;
~^/blog/2014/12/20/include-local-drupal-settings-file-environment-configuration-and-overrides/?$ /blog/include-local-drupal-settings-file-environment-configuration-and-overrides;
~^/blog/2015/04/03/how-to-define-a-minimum-drupal-core-version/?$ /blog/how-to-define-a-minimum-drupal-core-version;
~^/blog/2015/06/18/updating-forked-repositories-on-github/?$ /blog/updating-forked-repositories-on-github;
~^/blog/2015/07/19/sculpin-twig-resources/?$ /blog/sculpin-twig-resources;
~^/blog/2015/07/21/automating-sculpin-jenkins/?$ /blog/automating-sculpin-jenkins;
~^/blog/2015/12/22/programmatically-load-an-entityform-in-drupal-7/?$ /blog/programmatically-load-an-entityform-in-drupal-7;
~^/blog/2016/02/15/announcing-the-drupal-vm-generator/?$ /blog/announcing-the-drupal-vm-generator;
~^/blog/2016/05/03/simplifying-drupal-migrations-with-xautoload/?$ /blog/simplifying-drupal-migrations-with-xautoload;
~^/blog/2016/07/15/building-gmail-filters-with-php/?$ /blog/building-gmail-filters-with-php;
~^/blog/2016/12/30/drupal-vm-generator-291-released/?$ /blog/drupal-vm-generator-291-released;
~^/blog/2017/01/07/easier-sculpin-commands-with-composer-and-npm-scripts/?$ /blog/easier-sculpin-commands-with-composer-and-npm-scripts;
~^/blog/2017/01/31/nginx-redirects-with-query-string-arguments/?$ /blog/nginx-redirects-with-query-string-arguments;
~^/blog/2017/05/05/fixing-drupal-simpletest-docker/?$ /blog/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers;
~^/blog/2017/05/05/fixing-drupal-simpletest-issues-inside-docker-containers/?$ /blog/fixing-drupal-simpletest-issues-inside-docker-containers;
~^/blog/2017/05/20/turning-drupal-module-into-feature/?$ /blog/turning-your-custom-drupal-module-feature;
~^/blog/2017/06/09/introducing-the-drupal-meetups-twitterbot/?$ /blog/introducing-the-drupal-meetups-twitterbot;
~^/blog/2017/07/13/publishing-sculpin-sites-with-github-pages/?$ /blog/publishing-sculpin-sites-github-pages;
~^/blog/2017/11/07/tdd-test-driven-drupal/?$ /blog/tdd-test-driven-drupal;
~^/blog/2017/11/07/writing-drupal-module-test-driven-development-tdd/?$ /blog/2017/11/07/tdd-test-driven-drupal;
~^/blog/2018/01/30/drupalcamp-bristol-2018/?$ /blog/drupalcamp-bristol-2018;
~^/blog/2018/02/05/using-tailwind-css-in-your-drupal-theme/?$ /blog/using-tailwind-css-in-your-drupal-theme;
~^/blog/2018/02/27/looking-forward-to-drupalcamp-london/?$ /blog/looking-forward-to-drupalcamp-london;
~^/blog/2018/02/27/queuing-private-messages-in-drupal-8/?$ /blog/queuing-private-messages-in-drupal-8;
~^/blog/2018/02/28/building-the-new-phpsw-website/?$ /blog/building-the-new-phpsw-website;
~^/blog/2018/03/02/yay-the-mediacurrent-contrib-half-hour-is-back/?$ /blog/yay-the-mediacurrent-contrib-half-hour-is-back;
~^/blog/2018/03/04/tweets-from-drupalcamp-london/?$ /blog/tweets-from-drupalcamp-london;
~^/blog/2018/04/23/back-to-the-future-git-diff-apply/?$ /blog/back-future-gits-diff-apply-commands;
~^/blog/2018/05/06/creating-a-custom-phpunit-command-for-docksal/?$ /blog/creating-a-custom-phpunit-command-for-docksal;
~^/blog/add-date-popup-calendar-custom-form/?$ /blog/how-add-date-popup-calendar-custom-form;
~^/blog/adding-methods-decorating-entity-metadata-wrapper/?$ /blog/decorating-entity-metadata-wrapper-add-refactor-methods;
~^/blog/announcing-drupal-vm-generator/?$ /blog/announcing-the-drupal-vm-generator;
~^/blog/announcing-the-drupal-vm-config-generator/?$ /blog/announcing-the-drupal-vm-generator;
~^/blog/back-to-the-future-git-diff-apply/?$ /blog/back-future-gits-diff-apply-commands;
~^/blog/building-gmail-filters-in-php/?$ /blog/building-gmail-filters-php;
~^/blog/building-new-phpsw-website/?$ /blog/building-the-new-phpsw-website;
~^/blog/building-presentation-slides-reveal-js-tailwind-css/?$ /blog/building-presentation-slides-rst2pdf;
~^/blog/building-speaker-leaderboard-php-south-wales-using-drupal-symfony/?$ /blog/building-speaker-leaderboard-php-south-wales-drupal-symfony;
~^/blog/create-and-apply-patches/?$ /blog/how-create-apply-patches;
~^/blog/create-flickr-photo-gallery-using-feeds-cck-and-views/?$ /blog/create-flickr-photo-gallery-using-feeds-cck-views;
~^/blog/creating-and-using-custom-tokens-drupal-7/?$ /blog/creating-using-custom-tokens-drupal-7;
~^/blog/creating-custom-docksal-commands/?$ /blog/creating-custom-phpunit-command-docksal;
~^/blog/debugging-drupal-commerce-promotions-illiminate-collections/?$ /blog/debugging-drupal-commerce-illuminate-collections;
~^/blog/decorating-entity-metadata-wrapper-add-add-refactor-methods/?$ /blog/decorating-entity-metadata-wrapper-add-refactor-methods;
~^/blog/dev-book-club-refactoring-chapter-1/?$ /blog/dev-book-club-notes-refactoring-chapter-1;
~^/blog/dividing-drupals-process-preprocess-functions-separate-files/?$ /blog/dividing-drupals-process-and-preprocess-functions-separate-files;
~^/blog/drupal-8-commerce-fixing-no-such-customer-error-(on-)?checkout/?$ /blog/drupal-8-commerce-fixing-no-such-customer-error-checkout;
~^/blog/drupal-vm-generator-291-released/?$ /blog/drupal-vm-generator-updates;
~^/blog/drupalcamp-london-2019-tickets/?$ /blog/drupalcamp-london-2019-tickets-available-call-sessions;
~^/blog/drush-make-drupalbristol/?$ /talks/drush-make-drupalbristol;
~^/blog/easier-git-repository-cloning-with-insteadof/?$ /blog/easier-git-repository-cloning-insteadof;
~^/blog/easier-sculpin-commands-with-composer-and-npm-scripts/?$ /blog/easier-sculpin-commands-composer-npm-scripts;
~^/blog/editing-meetup-videos-kdenlive/?$ /blog/editing-meetup-videos-linux-kdenlive;
~^/blog/examples-of-laravel-collections-in-drupal/?$ /blog/using-laravel-collections-drupal;
~^/blog/experimenting-with-events-in-drupal-8/?$ /blog/experimenting-events-drupal-8;
~^/blog/fix-vagrant-loading-wrong-virtual-machine/?$ /blog/how-fix-vagrant-loading-wrong-virtual-machine;
~^/blog/fixing-drupal-simpletest-docker/?$ /blog/fixing-drupal-simpletest-issues-inside-docker-containers;
~^/blog/forward-one-domain-another-using-modrewrite-and-htaccess/?$ /blog/forward-one-domain-another-using-modrewrite-htaccess;
~^/blog/forward-one-domain-another-using-modrewrite-and-htaccess/?$ /blog/forward-one-domain-another-using-modrewrite-htaccess;
~^/blog/git-format-patch/?$ /blog/git-format-patch-your-friend;
~^/blog/how-easily-embed-typekit-fonts-your-drupal-website/?$ /blog/easily-embed-typekit-fonts-your-drupal-website;
~^/blog/how-split-new-drupal-contrib-project-within-another-repository/?$ /blog/splitting-new-drupal-project-from-repo;
~^/blog/how-style-drupal-6s-taxonomy-lists-php-css-and-jquery/?$ /blog/style-drupal-6s-taxonomy-lists-php-css-jquery;
~^/blog/include-local-drupal-settings-file-environment-configuration-overrides/?$ /blog/include-local-drupal-settings-file-environment-configuration-and-overrides;
~^/blog/install-and-configure-subversion-svn-server-ubuntu/?$ /blog/how-install-configure-subversion-svn-server-ubuntu;
~^/blog/live-blogging-symfonylive-london/?$ /blog/live-blogging-symfonylive-london-2019;
~^/blog/minimum-core-version/?$ /blog/how-define-minimum-drupal-core-version;
~^/blog/nginx-redirects-with-query-string-arguments/?$ /blog/nginx-redirects-query-string-arguments;
~^/blog/null-users-and-system-users-in-drupal/?$ /blog/null-users-system-users-drupal;
~^/blog/overridding-phpcs-configuration-drupal-ci/?$ /blog/overriding-phpcs-configuration-drupal-ci;
~^/blog/pantheon-settings-files/?$ /blog/include-environment-specific-settings-files-pantheon;
~^/blog/pdfpc-pdf-presenter-console-notes/?$ /blog/presenting-pdf-slides-using-pdfpc-pdf-presenter-console;
~^/blog/php-apps-subdirectory-nginx/?$ /blog/how-put-your-php-application-subdirectory-another-site-nginx;
~^/blog/presenting-tailwind-css-ansible-cms-philly/?$ /blog/presenting-on-tailwind-css-and-ansible-at-cms-philly;
~^/blog/programmatically-load-(an-)?entityform-(in-)?drupal-7/?$ /blog/entityform;
~^/blog/published-my-first-docker-images-docker-hub/?$ /blog/published-my-first-docker-images-docker-hub-adr-tools-sculpin-rst2pdf;
~^/blog/publishing-sculpin-sites-(with-)?github-pages/?$ /blog/publishing-sculpin-sites-github-pages;
~^/blog/queuing-private-messages-in-drupal-8/?$ /blog/queuing-private-messages-drupal-8;
~^/blog/quick-project-switching-in-phpstorm/?$ /blog/quick-project-switching-phpstorm;
~^/blog/quickly-apply-patches-using-git-and-curl-or-wget/?$ /blog/quickly-apply-patches-using-git-curl-or-wget;
~^/blog/rebuilding-bartik-with-vuejs-tailwind-css-part-2/?$ /blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css-part-2;
~^/blog/rebuilding-bartik-with-vuejs-tailwind-css/?$ /blog/rebuilding-bartik-drupals-default-theme-vuejs-tailwind-css;
~^/blog/rebuilding-uis-tailwind-css/?$ /blog/uis-ive-rebuilt-tailwind-css;
~^/blog/restructuring-my-tailwindjs-config-files/?$ /blog/restructuring-my-tailwindjs-configuration-files;
~^/blog/retrieving-profile-data-user-using-entity-metadata-wrapper/?$ /blog/cleanly-retrieving-user-profile-data-using-entity-metadata-wrapper;
~^/blog/running-drupal-with-symfony-local-server/?$ /blog/running-drupal-88-symfony-local-server;
~^/blog/running-phpunit-tests-docksal-phpstorm/?$ /blog/how-run-drupal-8-phpunit-tests-within-docksal-phpstorm;
~^/blog/simplifying-drupal-migrations-with-xautoload/?$ /blog/simplifying-drupal-migrations-xautoload;
~^/blog/speaking-drupalcon-barcelona-2020/?$ /blog/speaking-drupalcon-europe-2020;
~^/blog/speaking-during-lockdown/?$ /blog/speaking-remotely-during-covid-19;
~^/blog/speaking-remotely-during-lockdown/?$ /blog/speaking-remotely-during-covid-19;
~^/blog/style-drupal-6s-taxonomy-lists-php-css-jquery/?$ /blog/style-drupal-6s-taxonomy-lists-php-css-and-jquery;
~^/blog/survey-results-my-drupalcon-europe-session/?$ /blog/survey-results-my-drupalcon-europe-session-test-driven-drupal;
~^/blog/system-users-null-users/?$ /blog/null-users-and-system-users-in-drupal;
~^/blog/test-driven-drupal-gitstore-leanpub/?$ /blog/test-driven-drupal-on-gitstore-leanpub;
~^/blog/test-driven-drupal-presentation-drupalcon-europe-0/?$ /blog/test-driven-drupal-presentation-drupalcon-europe;
~^/blog/test-driven-drupal-session-drupalcon-europe/?$ /blog/test-driven-drupal-presentation-drupalcon-europe;
~^/blog/test-driven-drupal-session-video-drupalcon-europe/?$ /blog/test-driven-drupal-presentation-drupalcon-europe;
~^/blog/testing-tailwind-css-plugins-with-jest/?$ /blog/testing-tailwind-css-plugins-jest;
~^/blog/testing-tailwindcss-plugins-with-jest/?$ /blog/testing-tailwind-css-plugins-jest;
~^/blog/tweets-from-drupalcamp-london/?$ /blog/tweets-drupalcamp-london;
~^/blog/updating-features-and-adding-components-using-drush/?$ /blog/updating-features-adding-components-using-drush;
~^/blog/updating-forked-repositories-github/?$ /blog/updating-forked-github-repos;
~^/blog/use-regular-expressions-search-and-replace-coda-or-textmate/?$ /blog/use-regular-expressions-search-replace-coda-or-textmate;
~^/blog/using-environment-variables-settings-docksal/?$ /blog/how-use-environment-variables-your-drupal-settings-docksal;
~^/blog/using-psr-4-autoloading-your-drupal-7-test-cases/?$ /blog/psr4-autoloading-test-cases-drupal-7;
~^/blog/using-tailwind-css-in-your-drupal-theme/?$ /blog/using-tailwind-css-your-drupal-theme;
~^/blog/using-the-pcss-extension-postcss-webpack-encore/?$ /blog/using-pcss-extension-postcss-webpack-encore;
~^/blog/weeknotes-june-5th/?$ /blog/weeknotes-2021-06-05;
~^/blog/writing-drupal-module-test-driven-development-tdd/?$ /blog/writing-new-drupal-8-module-using-test-driven-development-tdd;
~^/book/?$ /test-driven-drupal;
~^/calendars?/?$ https://savvycal.com/opdavies;
~^/cms-philly/?$ /articles/presenting-on-tailwind-css-and-ansible-at-cms-philly;
~^/code-enigma-interview/?$ https://blog.codeenigma.com/interview-with-a-drupal-expert-9fcd8e0fad28;
~^/contrib-half-hour/?$ https://www.youtube.com/playlist?list=PLu-MxhbnjI9rHroPvZO5LEUhr58Yl0j_F;
~^/d0P5z/?$ /talks/drupal-8-php-libraries-drupalorg-api;
~^/dcbristol-cfp/?$ https://www.papercall.io/drupalcamp-bristol-2019;
~^/dcbristol17-videos/?$ https://www.youtube.com/playlist?list=PLOwPvExSyLLngtd6R4PUD9MCXa6QL_obA;
~^/dcbristol19-announced/?$ /articles/drupalcamp-bristol-2019-speakers-sessions-announced;
~^/dclondon-sat/?$ https://drupalcamp.london/schedule/saturday;
~^/dclondon-sun/?$ https://drupalcamp.london/schedule/sunday;
~^/dclondon20/?$ /articles/drupalcamp-london-testing-workshop;
~^/ddev-phpunit-command/?$ /blog/creating-custom-phpunit-command-ddev;
~^/deploying-php-ansible/?$ /talks/deploying-php-ansible-ansistrano;
~^/dks7E/?$ https://www.youtube.com/watch?v=PLS4ET7FAcU;
~^/do-library/?$ https://github.com/opdavies/drupalorg-api-php;
~^/do-projects/?$ https://github.com/opdavies/drupal-module-drupalorg-projects;
~^/docksal-phpunit-phpstorm/?$ /articles/running-phpunit-tests-docksal-phpstorm;
~^/docksal-posts/?$ /articles/tags/docksal;
~^/dransible-drupal-9/?$ /blog/upgrading-dransible-project-drupal-9;
~^/dransible/?$ https://github.com/opdavies/dransible;
~^/drupal-bristol-march-19/?$ https://docs.google.com/presentation/d/1pk9LIN-hHX73kvDdo-lzgmKlAeH33_K_uvI0t7A-rvY/edit?usp=sharing;
~^/drupal-consultant/?$ /drupal-consulting;
~^/drupal-core-live-stream/?$ https://www.youtube.com/watch?v=OK4FWwh1gQU;
~^/drupal-core-testing-gate/?$ https://www.drupal.org/core/gates#testing;
~^/drupal-first-time-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;
~^/drupal-forum-post/?$ http://www.webmaster-forums.net/webmasters-corner/developing-my-website-using-php-and-mysql#comment-1231537;
~^/drupal-marketplace-uk/?$ https://www.drupal.org/drupal-services?offices%5B%5D=24460;
~^/drupal-meetups-twitterbot/?$ /articles/introducing-the-drupal-meetups-twitterbot;
~^/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;
~^/drupal-php-developer-consultant-uk/?$ /drupal-php-developer;
~^/drupal-php-developer/?$ /drupal-consultant;
~^/drupal-tailwind-demo/?$ https://www.youtube.com/watch?v=1eM-Gw6GI4g;
~^/drupal-tailwindcss/?$ https://www.drupal.org/project/tailwindcss;
~^/drupal-vuejs/?$ /talks/decoupling-drupal-vuejs/;
~^/drupalcamp-london-2019-tickets/?$ /articles/drupalcamp-london-2019-tickets;
~^/drupalcamp-nyc-training/?$ https://www.youtube.com/watch?v=3M9c4UUzKm0;
~^/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;
~^/drupalorg/?$ https://www.drupal.org/u/opdavies;
~^/drupalversary/?$ https://github.com/opdavies/drupal-module-drupalversary;
~^/elewant/?$ https://elewant.com/shepherd/admire/opdavies;
~^/feed/?$ /rss.xml;
~^/first-drupal-core-issue/?$ https://www.drupal.org/project/drupal/issues/753898;
~^/first-npm-package/?$ https://www.npmjs.com/package/tailwindcss-vuejs;
~^/freeagent/?$ https://opdavies.freeagent.com;
~^/git-flow/?$ /talks/git-flow;
~^/gitlab/?$ https://gitlab.com/opdavies;
~^/gitstore/?$ https://enjoy.gitstore.app/maintainers/opdavies;
~^/gmail-filters/?$ https://gitlab.com/opdavies/gmail-filters;
~^/images/me-precedent.jpg/?$ /sites/default/files/images/social-avatar.jpg;
~^/inviqa-tailwind-demo/?$ https://play.tailwindcss.com/Yfmw8O5UNN;
~^/inviqa-tailwind-notes/?$ https://gist.github.com/opdavies/e6f0f4938506a6859acf1aca8b4e1a74;
~^/join-php-south-wales-slack/?$ https://join.slack.com/t/phpsouthwales/shared_invite/zt-4vuetc43-AvtEK1WqNzp5k1w4yWKOJA;
~^/jy6rW/?$ https://www.meetup.com/PHP-South-Wales/events/264731393;
~^/kB6Jd/?$ /articles/running-drupal-with-symfony-local-server/;
~^/kmDRA/?$ https://www.bbc.co.uk/news/uk-46561779;
~^/leeds-php-drupal-9/?$ https://www.meetup.com/leedsphp/events/272504993;
~^/npm/?$ https://www.npmjs.com/~opdavies;
~^/oFlkS/?$ /articles/test-driven-drupal-on-gitstore-leanpub;
~^/oliver-davies-uk-based-drupal-symfony-developer/?$ /oliver-davies-uk-based-drupal-php-developer;
~^/pair-programming/?$ /pair;
~^/pair-with-me/?$ /pair;
~^/pairing/?$ /pair;
~^/php-ansible/?$ /talks/deploying-php-ansible-ansistrano;
~^/qSHAl/?$ /articles/published-my-first-npm-package/;
~^/qT1Rb/?$ https://github.com/opdavies/drupal-meetups-twitterbot;
~^/rebuilding-acquia/?$ https://rebuilding-acquia.oliverdavies.uk;
~^/rebuilding-bartik/?$ /articles/rebuilding-bartik-with-vuejs-tailwind-css;
~^/rebuilding-bristol-js/?$ https://github.com/opdavies/rebuilding-bristol-js;
~^/rebuilding-pantheon/?$ https://play.tailwindcss.com/LND98XihGI?layout=horizontal;
~^/rebuilding-platformsh/?$ https://rebuilding-platformsh.oliverdavies.uk;
~^/rebuilding-symfony/?$ https://github.com/opdavies/rebuilding-symfony;
~^/rk29B/?$ https://www.meetup.com/PHP-South-Wales/events/268422525;
~^/rss/?$ /rss.xml;
~^/s9MjJ/?$ https://symfonycasts.com/screencast/symfony;
~^/sculpin-encore-versioning/?$ https://github.com/opdavies/oliverdavies.uk/commit/d192b04aefa6e7a21bfc1f2e0fe0a16111e0e8a2;
~^/sites/default/files/images/social-avatar.jpg /images/social-avatar.jpg;
~^/skills/?$ https://opdavies-skills-tailwindcss.netlify.com/;
~^/slides-drupal-9/?$ https://slides-upgrading-to-drupal-9.oliverdavies.uk;
~^/slides-upgrading-to-drupal-9/?$ https://slides-upgrading-to-drupal-9.oliverdavies.uk;
~^/slides-upgrading-to-drupal-9/index.html/?$ https://slides-upgrading-to-drupal-9.oliverdavies.uk;
~^/slides-working-with-workspace/?$ https://slides-working-with-workspace.oliverdavies.uk;
~^/speaker-info/?$ /about/speaker-information;
~^/speaking-videos/?$ https://www.youtube.com/playlist?list=PLHn41Ay7w7kfAzczswrANch5oHAPZBlvu;
~^/stream/?$ https://www.youtube.com/channel/UCkeK0qF9HHUPQH_fvn4ghqQ/live;
~^/swap-markdown-parser/?$ https://github.com/opdavies/sculpin-twig-markdown-bundle-example/tree/swap-markdown-parser;
~^/symfony-server/?$ /articles/running-drupal-with-symfony-local-server;
~^/symfony/?$ https://connect.symfony.com/profile/opdavies;
~^/symfonylive/?$ /articles/live-blogging-symfonylive-london;
~^/symposium/?$ https://symposiumapp.com/u/opdavies;
~^/tailwind-css-talk/?$ /talks/taking-flight-tailwind-css;
~^/tailwind-repos/?$ https://github.com/opdavies?utf8=%E2%9C%93&tab=repositories&q=tailwindcss;
~^/tailwind-talk/?$ /talks/taking-flight-with-tailwind-css;
~^/tailwindcss-demo/?$ http://tailwindcss-demo.oliverdavies.uk/;
~^/talks-offer-tweet/?$ https://twitter.com/opdavies/status/1250870367712935938;
~^/talks/2012/09/05/what-is-this-drupal-thing-unified-diff/?$ /talks/what-is-this-drupal-thing;
~^/talks/2013/07/10/drupal-ldap-swdug/?$ /talks/drupal-ldap;
~^/talks/2014/03/01/git-flow-drupalcamp-london-2014/?$ /talks/git-flow;
~^/talks/2014/07/02/drush-make-drupalbristol-drupal-bristol/?$ /talks/drush-make-drupalbristol;
~^/talks/2014/08/19/drupal-association-swdug/?$ /talks/drupal-association;
~^/talks/2015/01/18/drupalorg-2015-drupalcamp-brighton-2015/?$ /talks/drupalorg-in-2015-whats-coming-next;
~^/talks/2015/02/28/drupalorg-2015-drupalcamp-london-2015/?$ /talks/drupalorg-in-2015-whats-coming-next;
~^/talks/2015/04/08/drupal-8-phpsw/?$ /talks/drupal-8;
~^/talks/2015/07/25/test-drive-twig-with-sculpin-drupalcamp-north-2015/?$ /talks/test-drive-twig-with-sculpin;
~^/talks/2015/08/25/dancing-for-drupal-umbristol/?$ /talks/dancing-for-drupal;
~^/talks/2015/10/14/sculpin-phpsw/?$ /talks/sculpin;
~^/talks/2016/03/05/drupal-8-module-development-drupalcamp-london-2016/?$ /talks/getting-started-with-drupal-8-module-development;
~^/talks/2016/03/09/drupal-vm-generator-nwdug/?$ /talks/drupal-vm-generator;
~^/talks/2016/04/02/drupal-vm-generator-drupal-bristol/?$ /talks/drupal-vm-generator;
~^/talks/2016/06/11/drupal-8-rejoining-the-herd-php-south-coast-2016/?$ /talks/drupal-8-rejoining-the-herd;
~^/talks/2016/07/23/drupal-vm-meet-symfony-console-drupalcamp-bristol-2016/?$ /talks/drupal-vm-meet-symfony-console;
~^/talks/2016/11/09/drupal-development-with-composer-phpsw/?$ /talks/drupal-development-with-composer;
~^/talks/2016/11/17/goodbye-drush-make-hello-composer-drupal-bristol/?$ /talks/goodbye-drush-make-hello-composer;
~^/talks/2017/01/18/getting-your-data-into-drupal-8-drupal-bristol/?$ /talks/getting-your-data-into-drupal-8;
~^/talks/2017/03/04/getting-your-data-into-drupal-8-drupalcamp-london-2017/?$ /talks/getting-your-data-into-drupal-8;
~^/talks/ansible-ansistrano/?$ https://www.oliverdavies.uk/talks/deploying-php-ansible-ansistrano;
~^/talks/archive/?$ /talks;
~^/talks/deploying-php-applications-fabric/?$ /talks/deploying-php-fabric;
~^/talks/deploying-php-applications-with-fabric/?$ /talks/deploying-php-fabric;
~^/talks/drupal-vm-generator-2/?$ /talks/drupal-vm-generator;
~^/talks/drupalorg-2015-2/?$ /talks/drupalorg-2015;
~^/talks/drupalorg-in-2015-whats-coming-next/?$ /talks/drupalorg-2015;
~^/talks/getting-started-with-drupal-8-module-development/?$ /drupal-8-module-development;
~^/talks/having-fun-drupal-8-php-libraries-drupalorg-api/?$ /talks/drupal-8-php-libraries-drupalorg-api;
~^/talks/never-commit-master-introduction-git-flow/?$ /talks/git-flow;
~^/talks/sculpin/?$ /talks/building-static-websites-sculpin;
~^/talks/tailwind/?$ /talks/taking-flight-with-tailwind-css/;
~^/talks/taking-flight-tailwind-css/?$ /talks/taking-flight-with-tailwind-css;
~^/talks/using-laravel-collections-outside-laravel/?$ /talks/using-illuminate-collections-outside-laravel;
~^/talks/working-workspace/?$ /talks/working-with-workspace;
~^/tdd-blog/?$ https://github.com/opdavies/drupal-module-tdd-blog;
~^/tdd-test-driven-drupal/?$ /talks/tdd-test-driven-drupal/;
~^/test-driven-drupal-book/?$ /test-driven-drupal;
~^/testing-drupal-intro/?$ https://inviqa.com/blog/drupal-automated-testing-introduction;
~^/testing-drupal/?$ https://www.oliverdavies.uk/talks/tdd-test-driven-drupal;
~^/testing-tailwind-plugins/?$ /articles/testing-tailwindcss-plugins-with-jest;
~^/testing-workshop-code/?$ https://github.com/opdavies/workshop-drupal-automated-testing-code;
~^/testing-workshop/?$ https://github.com/opdavies/workshop-drupal-automated-testing;
~^/todoist-filters/?$ https://gist.github.com/opdavies/6709fbdac5c3babbd94137bcc8b8e3c2;
~^/twitter-tweaks/?$ https://github.com/opdavies/chrome-extension-twitter-tweaks;
~^/upgrading-to-drupal-9/?$ /talks/upgrading-your-site-drupal-9;
~^/uxbjV/?$ https://www.drupal.org/project/copyright_block;
~^/vyTEF/?$ https://www.npmjs.com/package/tailwindcss-vuejs;
~^/webpack-encore-pcss-regex/?$ https://regexr.com/51iaf;
~^/wordcamp-bristol-tailwindcss/?$ https://2019.bristol.wordcamp.org/session/taking-flight-with-tailwind-css;
~^/wordpress-tailwind/?$ https://github.com/opdavies/wordcamp-bristol-2019;
~^/work/?$ /drupal-php-developer;
~^/working-with-workspace/?$ /talks/working-with-workspace;
~^/workshop-drupal-testing/?$ https://github.com/opdavies/workshop-drupal-automated-testing;
~^/workspace-demo/?$ https://github.com/opdavies/working-with-workspace-demo;
~^/wp-tailwind-repo/?$ https://github.com/opdavies/wordcamp-bristol-2019;
~^/wp-tailwind-starter/?$ https://github.com/opdavies/wordpress-tailwindcss-startker-kit;
~^/wp-tailwind-static/?$ https://wp-tailwind.oliverdavies.uk;
~^/wp-tailwind/?$ https://wp-tailwind.oliverdavies.uk;
~^/yXhoS/?$ /talks/things-you-should-know-about-php;
}
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name oliverdavies.uk;
ssl_certificate /home/opdavies/.acme.sh/www.oliverdavies.uk/www.oliverdavies.uk.cer;
ssl_certificate_key /home/opdavies/.acme.sh/www.oliverdavies.uk/www.oliverdavies.uk.key;
return 301 $scheme://www.oliverdavies.uk$request_uri;
}
server {
listen 443 ssl;
server_name www.oliverdavies.uk;
root /srv/oliverdavies.uk;
index index.html;
error_page 404 /404.html;
ssl_certificate /home/opdavies/.acme.sh/www.oliverdavies.uk/www.oliverdavies.uk.cer;
ssl_certificate_key /home/opdavies/.acme.sh/www.oliverdavies.uk/www.oliverdavies.uk.key;
location / {
try_files $uri $uri.html $uri/index.html =404;
}
rewrite ^/(.*)/$ /$1 permanent;
if ($new_uri) {
return 301 $new_uri;
}
}

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 873 B

After

Width:  |  Height:  |  Size: 873 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 530 KiB

After

Width:  |  Height:  |  Size: 530 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 811 KiB

After

Width:  |  Height:  |  Size: 811 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 854 KiB

After

Width:  |  Height:  |  Size: 854 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 257 KiB

After

Width:  |  Height:  |  Size: 257 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 285 KiB

After

Width:  |  Height:  |  Size: 285 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 106 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 884 KiB

After

Width:  |  Height:  |  Size: 884 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 275 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 249 KiB

After

Width:  |  Height:  |  Size: 249 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 323 KiB

After

Width:  |  Height:  |  Size: 323 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 281 KiB

After

Width:  |  Height:  |  Size: 281 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 236 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 392 KiB

After

Width:  |  Height:  |  Size: 392 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 176 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 250 KiB

After

Width:  |  Height:  |  Size: 250 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 482 KiB

After

Width:  |  Height:  |  Size: 482 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 539 KiB

After

Width:  |  Height:  |  Size: 539 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 165 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 652 KiB

After

Width:  |  Height:  |  Size: 652 KiB

Before After
Before After

Some files were not shown because too many files have changed in this diff Show more