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

View file

Before

Width:  |  Height:  |  Size: 873 B

After

Width:  |  Height:  |  Size: 873 B

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View file

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View file

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View file

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View file

Before

Width:  |  Height:  |  Size: 530 KiB

After

Width:  |  Height:  |  Size: 530 KiB

View file

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

View file

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View file

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View file

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View file

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 141 KiB

View file

Before

Width:  |  Height:  |  Size: 811 KiB

After

Width:  |  Height:  |  Size: 811 KiB

View file

Before

Width:  |  Height:  |  Size: 854 KiB

After

Width:  |  Height:  |  Size: 854 KiB

View file

Before

Width:  |  Height:  |  Size: 257 KiB

After

Width:  |  Height:  |  Size: 257 KiB

View file

Before

Width:  |  Height:  |  Size: 285 KiB

After

Width:  |  Height:  |  Size: 285 KiB

View file

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

View file

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View file

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 106 KiB

View file

Before

Width:  |  Height:  |  Size: 884 KiB

After

Width:  |  Height:  |  Size: 884 KiB

View file

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 275 KiB

View file

Before

Width:  |  Height:  |  Size: 249 KiB

After

Width:  |  Height:  |  Size: 249 KiB

View file

Before

Width:  |  Height:  |  Size: 323 KiB

After

Width:  |  Height:  |  Size: 323 KiB

View file

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View file

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View file

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View file

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View file

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View file

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View file

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View file

Before

Width:  |  Height:  |  Size: 281 KiB

After

Width:  |  Height:  |  Size: 281 KiB

View file

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 236 KiB

View file

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View file

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View file

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View file

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View file

Before

Width:  |  Height:  |  Size: 392 KiB

After

Width:  |  Height:  |  Size: 392 KiB

View file

Before

Width:  |  Height:  |  Size: 160 KiB

After

Width:  |  Height:  |  Size: 160 KiB

View file

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View file

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

View file

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 94 KiB

View file

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 176 KiB

View file

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View file

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View file

Before

Width:  |  Height:  |  Size: 250 KiB

After

Width:  |  Height:  |  Size: 250 KiB

View file

Before

Width:  |  Height:  |  Size: 482 KiB

After

Width:  |  Height:  |  Size: 482 KiB

View file

Before

Width:  |  Height:  |  Size: 539 KiB

After

Width:  |  Height:  |  Size: 539 KiB

View file

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 165 KiB

View file

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View file

Before

Width:  |  Height:  |  Size: 652 KiB

After

Width:  |  Height:  |  Size: 652 KiB

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