Change /talks to /presentations
This commit is contained in:
parent
8158c679fd
commit
37603296f0
|
@ -8,13 +8,13 @@ sculpin_content_types:
|
|||
permalink: /podcast/:basename/
|
||||
posts:
|
||||
permalink: /blog/:basename/
|
||||
talks:
|
||||
permalink: /talks/:basename/
|
||||
presentations:
|
||||
permalink: /presentations/:basename/
|
||||
|
||||
services:
|
||||
Modules\Experience\TwigExtension\ExperienceTwigExtension:
|
||||
tags:
|
||||
- {name: twig.extension}
|
||||
Modules\Talk\TwigExtension\TalkTwigExtension:
|
||||
Modules\Presentations\TwigExtension\PresentationTwigExtension:
|
||||
tags:
|
||||
- {name: twig.extension}
|
||||
|
|
|
@ -35,8 +35,8 @@ menu_links:
|
|||
url: /press
|
||||
- title: Services
|
||||
url: /pricing
|
||||
- title: Talks and Workshops
|
||||
url: /talks
|
||||
- title: Presentations
|
||||
url: /presentations
|
||||
- title: Podcast
|
||||
url: /podcast
|
||||
- title: Daily list
|
||||
|
|
|
@ -1,52 +1,52 @@
|
|||
<?php
|
||||
|
||||
namespace Modules\Talk\Tests\TwigExtension;
|
||||
namespace Modules\Presentations\Tests\TwigExtension;
|
||||
|
||||
use Dflydev\DotAccessConfiguration\Configuration;
|
||||
use Modules\Talk\TwigExtension\TalkTwigExtension;
|
||||
use Modules\Presentations\TwigExtension\PresentationTwigExtension;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Sculpin\Contrib\ProxySourceCollection\ProxySourceItem;
|
||||
|
||||
class TalkTwigExtensionTest extends TestCase
|
||||
class PresentationTwigExtensionTest extends TestCase
|
||||
{
|
||||
private TalkTwigExtension $extension;
|
||||
private PresentationTwigExtension $extension;
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->extension = new TalkTwigExtension();
|
||||
$this->extension = new PresentationTwigExtension();
|
||||
}
|
||||
|
||||
public function testNoPastEvents(): void
|
||||
{
|
||||
$talk = $this->createTalk(
|
||||
$presentation = $this->createPresentation(
|
||||
events: [
|
||||
['date' => (new \DateTime('+1 days'))->getTimestamp()],
|
||||
],
|
||||
);
|
||||
|
||||
$this->assertTalkCount(expectedCount: 0, talks: [$talk]);
|
||||
$this->assertPresentationCount(expectedCount: 0, presentations: [$presentation]);
|
||||
}
|
||||
|
||||
public function testSinglePastEvent(): void
|
||||
{
|
||||
$talkA = $this->createTalk(
|
||||
$presentationA = $this->createPresentation(
|
||||
events: [
|
||||
['date' => (new \DateTime('+1 days'))->getTimestamp()],
|
||||
],
|
||||
);
|
||||
|
||||
$talkB = $this->createTalk(
|
||||
$presentationB = $this->createPresentation(
|
||||
events: [
|
||||
['date' => (new \DateTime('-3 days'))->getTimestamp()],
|
||||
],
|
||||
);
|
||||
|
||||
$this->assertTalkCount(expectedCount: 1, talks: [$talkA, $talkB]);
|
||||
$this->assertPresentationCount(expectedCount: 1, presentations: [$presentationA, $presentationB]);
|
||||
}
|
||||
|
||||
public function testSingleTalkWithMultiplePastEvents(): void
|
||||
public function testSinglePresentationWithMultiplePastEvents(): void
|
||||
{
|
||||
$talk = $this->createTalk(
|
||||
$presentation = $this->createPresentation(
|
||||
events: [
|
||||
['date' => (new \DateTime('-1 days'))->getTimestamp()],
|
||||
['date' => (new \DateTime('-1 week'))->getTimestamp()],
|
||||
|
@ -54,12 +54,12 @@ class TalkTwigExtensionTest extends TestCase
|
|||
],
|
||||
);
|
||||
|
||||
$this->assertTalkCount(expectedCount: 3, talks: [$talk]);
|
||||
$this->assertPresentationCount(expectedCount: 3, presentations: [$presentation]);
|
||||
}
|
||||
|
||||
public function testSingleTalkWithMultiplePastAndFutureEvents(): void
|
||||
public function testSinglePresentationWithMultiplePastAndFutureEvents(): void
|
||||
{
|
||||
$talk = $this->createTalk(
|
||||
$presentation = $this->createPresentation(
|
||||
events: [
|
||||
['date' => (new \DateTime('+1 day'))->getTimestamp()],
|
||||
['date' => (new \DateTime('-1 day'))->getTimestamp()],
|
||||
|
@ -69,73 +69,73 @@ class TalkTwigExtensionTest extends TestCase
|
|||
],
|
||||
);
|
||||
|
||||
$this->assertTalkCount(expectedCount: 3, talks: [$talk]);
|
||||
$this->assertPresentationCount(expectedCount: 3, presentations: [$presentation]);
|
||||
}
|
||||
|
||||
public function testMultiplePastEvents(): void
|
||||
{
|
||||
$talkA = $this->createTalk(
|
||||
$presentationA = $this->createPresentation(
|
||||
events: [
|
||||
['date' => (new \DateTime('-1 days'))->getTimestamp()],
|
||||
['date' => (new \DateTime('+1 days'))->getTimestamp()],
|
||||
],
|
||||
);
|
||||
|
||||
$talkB = $this->createTalk(
|
||||
$presentationB = $this->createPresentation(
|
||||
events: [
|
||||
['date' => (new \DateTime('-3 days'))->getTimestamp()],
|
||||
],
|
||||
);
|
||||
|
||||
$this->assertTalkCount(expectedCount: 2, talks: [$talkA, $talkB]);
|
||||
$this->assertPresentationCount(expectedCount: 2, presentations: [$presentationA, $presentationB]);
|
||||
}
|
||||
|
||||
public function testTheCurrentDayIsNotCounted(): void
|
||||
{
|
||||
$talkA = $this->createTalk(
|
||||
$presentationA = $this->createPresentation(
|
||||
events: [
|
||||
['date' => (new \DateTime('yesterday'))->getTimestamp()],
|
||||
['date' => (new \DateTime('today'))->getTimestamp()],
|
||||
],
|
||||
);
|
||||
|
||||
$talkB = $this->createTalk(
|
||||
$presentationB = $this->createPresentation(
|
||||
events: [
|
||||
['date' => (new \DateTime('today'))->getTimestamp()],
|
||||
],
|
||||
);
|
||||
|
||||
$talkC = $this->createTalk(
|
||||
$presentationC = $this->createPresentation(
|
||||
events: [
|
||||
['date' => (new \DateTime('yesterday'))->getTimestamp()],
|
||||
],
|
||||
);
|
||||
|
||||
$this->assertTalkCount(expectedCount: 2, talks: [$talkA, $talkB, $talkC]);
|
||||
$this->assertPresentationCount(expectedCount: 2, presentations: [$presentationA, $presentationB, $presentationC]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert the extension uses the correct number of talks.
|
||||
* Assert the extension uses the correct number of presentations.
|
||||
*/
|
||||
private function assertTalkCount(int $expectedCount, array $talks): void
|
||||
private function assertPresentationCount(int $expectedCount, array $presentations): void
|
||||
{
|
||||
self::assertSame(
|
||||
actual: $this->extension->getPastTalkCount($talks),
|
||||
actual: $this->extension->getPresentationCount($presentations),
|
||||
expected: $expectedCount,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a mock talk with a list of events.
|
||||
* Create a mock presentation with a list of events.
|
||||
*/
|
||||
private function createTalk(array $events): ProxySourceItem
|
||||
private function createPresentation(array $events): ProxySourceItem
|
||||
{
|
||||
$configuration = $this->createMock(Configuration::class);
|
||||
$configuration->method('get')->with($this->identicalTo('events'))->willReturn($events);
|
||||
|
||||
$talk = $this->createMock(ProxySourceItem::class);
|
||||
$talk->method('data')->willReturn($configuration);
|
||||
$presentation = $this->createMock(ProxySourceItem::class);
|
||||
$presentation->method('data')->willReturn($configuration);
|
||||
|
||||
return $talk;
|
||||
return $presentation;
|
||||
}
|
||||
}
|
|
@ -1,31 +1,31 @@
|
|||
<?php
|
||||
|
||||
namespace Modules\Talk\TwigExtension;
|
||||
namespace Modules\Presentations\TwigExtension;
|
||||
|
||||
use Sculpin\Contrib\ProxySourceCollection\ProxySourceItem;
|
||||
use Twig\Extension\AbstractExtension;
|
||||
use Twig\TwigFunction;
|
||||
|
||||
class TalkTwigExtension extends AbstractExtension
|
||||
class PresentationTwigExtension extends AbstractExtension
|
||||
{
|
||||
public function getFunctions(): array
|
||||
{
|
||||
return [
|
||||
new TwigFunction('get_past_talk_count', [$this, 'getPastTalkCount']),
|
||||
new TwigFunction('get_presentation_count', [$this, 'getPresentationCount']),
|
||||
];
|
||||
}
|
||||
|
||||
public function getName(): string
|
||||
{
|
||||
return 'modules.talk';
|
||||
return 'modules.presentations';
|
||||
}
|
||||
|
||||
public function getPastTalkCount(array $talks): int
|
||||
public function getPresentationCount(array $presentations): int
|
||||
{
|
||||
$today = (new \DateTime('today'))->getTimestamp();
|
||||
|
||||
return collect($talks)
|
||||
->flatMap(fn (ProxySourceItem $talk) => $talk->data()->get('events'))
|
||||
return collect($presentations)
|
||||
->flatMap(fn (ProxySourceItem $presentation) => $presentation->data()->get('events'))
|
||||
->filter(
|
||||
function (array $event) use ($today): bool {
|
||||
assert(array_key_exists(array: $event, key: 'date'));
|
112
source/.htaccess
112
source/.htaccess
|
@ -21,11 +21,6 @@ RewriteRule ^(.*)index\.html$ /$1 [L,R=301]
|
|||
|
||||
ErrorDocument 404 /404/index.html
|
||||
|
||||
# RewriteCond %{REQUEST_URI} !^/archive/?$
|
||||
# RewriteRule ^archive/(.*)$ /daily/$1 [L,R=301]
|
||||
|
||||
RewriteRule ^articles/(.*) /blog/$1 [L,R=301]
|
||||
|
||||
Redirect 301 /daily/2024/08/15/docblocks-or-annotations /daily/2024/08/15/docblocks-or-attributes
|
||||
Redirect 301 /10-useful-drupal-6-modules-i-use-every-project /blog/10-useful-drupal-6-modules
|
||||
Redirect 301 /2010/04/05/styling-drupal-6s-taxonomy-lists-with-php-css-and-jquery /blog/style-drupal-6s-taxonomy-lists-php-css-jquery
|
||||
|
@ -59,7 +54,7 @@ Redirect 301 /ansible https://galaxy.ansible.com/opdavies
|
|||
Redirect 301 /ansible-molecule /articles/test-driven-ansible-role-development-molecule
|
||||
Redirect 301 /ansistrano-code https://github.com/opdavies/dransible
|
||||
Redirect 301 /ansistrano-demo https://www.youtube.com/watch?v=PLS4ET7FAcU
|
||||
Redirect 301 /ansistrano-slides /talks/deploying-php-ansible-ansistrano
|
||||
Redirect 301 /ansistrano-slides /presentations/deploying-php-ansible-ansistrano
|
||||
Redirect 301 /archive/2022/10/20/run-vs-task-runner /archive/2022/10/19/run-vs-task-runners
|
||||
Redirect 301 /atNOQ https://youtu.be/r41dkD2EOo8
|
||||
Redirect 301 /automatically-updating-talk-created-date https://gist.github.com/opdavies/4e75e1753d8603113f07f8264bb783d6
|
||||
|
@ -206,7 +201,7 @@ Redirect 301 /blog/drupal-8-commerce-fixing-no-such-customer-error-checkout /blo
|
|||
Redirect 301 /blog/drupal-8-commerce-fixing-no-such-customer-error-on-checkout /blog/drupal-8-commerce-fixing-no-such-customer-error-checkou
|
||||
Redirect 301 /blog/drupal-vm-generator-291-released /blog/drupal-vm-generator-updates
|
||||
Redirect 301 /blog/drupalcamp-london-2019-tickets /blog/drupalcamp-london-2019-tickets-available-call-sessions
|
||||
Redirect 301 /blog/drush-make-drupalbristol /talks/drush-make-drupalbristol
|
||||
Redirect 301 /blog/drush-make-drupalbristol /presentations/drush-make-drupalbristol
|
||||
Redirect 301 /blog/easier-git-repository-cloning-with-insteadof /blog/easier-git-repository-cloning-insteadof
|
||||
Redirect 301 /blog/easier-sculpin-commands-with-composer-and-npm-scripts /blog/easier-sculpin-commands-composer-npm-scripts
|
||||
Redirect 301 /blog/editing-meetup-videos-kdenlive /blog/editing-meetup-videos-linux-kdenlive
|
||||
|
@ -275,7 +270,7 @@ Redirect 301 /code-enigma-interview https://blog.codeenigma.com/interview-with-a
|
|||
Redirect 301 /consulting /
|
||||
Redirect 301 /contrib-half-hour https://www.youtube.com/playlist?list=PLu-MxhbnjI9rHroPvZO5LEUhr58Yl0j_F
|
||||
Redirect 301 /cv /cv.txt
|
||||
Redirect 301 /d0P5z /talks/drupal-8-php-libraries-drupalorg-api
|
||||
Redirect 301 /d0P5z /presentations/drupal-8-php-libraries-drupalorg-api
|
||||
Redirect 301 /d7 /drupal7
|
||||
Redirect 301 /dcbristol-cfp https://www.papercall.io/drupalcamp-bristol-2019
|
||||
Redirect 301 /dcbristol17-videos https://www.youtube.com/playlist?list=PLOwPvExSyLLngtd6R4PUD9MCXa6QL_obA
|
||||
|
@ -284,7 +279,7 @@ Redirect 301 /dclondon-sat https://drupalcamp.london/schedule/saturday
|
|||
Redirect 301 /dclondon-sun https://drupalcamp.london/schedule/sunday
|
||||
Redirect 301 /dclondon20 /articles/drupalcamp-london-testing-workshop
|
||||
Redirect 301 /ddev-phpunit-command /blog/creating-custom-phpunit-command-ddev
|
||||
Redirect 301 /deploying-php-ansible /talks/deploying-php-ansible-ansistrano
|
||||
Redirect 301 /deploying-php-ansible /presentations/deploying-php-ansible-ansistrano
|
||||
Redirect 301 /dks7E https://www.youtube.com/watch?v=PLS4ET7FAcU
|
||||
Redirect 301 /do-library https://github.com/opdavies/drupalorg-api-php
|
||||
Redirect 301 /do-projects https://github.com/opdavies/drupal-module-drupalorg-projects
|
||||
|
@ -306,7 +301,7 @@ Redirect 301 /drupal-php-developer /drupal-consultant
|
|||
Redirect 301 /drupal-php-developer-consultant-uk /drupal-php-developer
|
||||
Redirect 301 /drupal-tailwind-demo https://www.youtube.com/watch?v=1eM-Gw6GI4g
|
||||
Redirect 301 /drupal-tailwindcss https://www.drupal.org/project/tailwindcss
|
||||
Redirect 301 /drupal-vuejs /talks/decoupling-drupal-vuejs/
|
||||
Redirect 301 /drupal-vuejs /presentations/decoupling-drupal-vuejs
|
||||
Redirect 301 /drupal7 /drupal-upgrade
|
||||
Redirect 301 /drupalcamp-london-2019-tickets /articles/drupalcamp-london-2019-tickets
|
||||
Redirect 301 /drupalcamp-nyc-training https://www.youtube.com/watch?v=3M9c4UUzKm0
|
||||
|
@ -318,7 +313,7 @@ Redirect 301 /feed /rss.xml
|
|||
Redirect 301 /first-drupal-core-issue https://www.drupal.org/project/drupal/issues/753898
|
||||
Redirect 301 /first-npm-package https://www.npmjs.com/package/tailwindcss-vuejs
|
||||
Redirect 301 /freeagent https://opdavies.freeagent.com
|
||||
Redirect 301 /git-flow /talks/git-flow
|
||||
Redirect 301 /git-flow /presentations/git-flow
|
||||
Redirect 301 /github-sculpin https://github.com/opdavies?tab=repositories&q=sculpin
|
||||
Redirect 301 /gitlab https://gitlab.com/opdavies
|
||||
Redirect 301 /gitstore https://enjoy.gitstore.app/maintainers/opdavies
|
||||
|
@ -338,7 +333,7 @@ Redirect 301 /oliver-davies-uk-based-drupal-symfony-developer /oliver-davies-uk-
|
|||
Redirect 301 /pair-programming /pair
|
||||
Redirect 301 /pair-with-me /pair
|
||||
Redirect 301 /pairing /pair
|
||||
Redirect 301 /php-ansible /talks/deploying-php-ansible-ansistrano
|
||||
Redirect 301 /php-ansible /presentations/deploying-php-ansible-ansistrano
|
||||
Redirect 301 /qSHAl /articles/published-my-first-npm-package/
|
||||
Redirect 301 /qT1Rb https://github.com/opdavies/drupal-meetups-twitterbot
|
||||
Redirect 301 /rebuilding-acquia https://rebuilding-acquia.oliverdavies.uk
|
||||
|
@ -350,9 +345,9 @@ Redirect 301 /rebuilding-symfony https://github.com/opdavies/rebuilding-symfony
|
|||
Redirect 301 /rk29B https://www.meetup.com/PHP-South-Wales/events/268422525
|
||||
Redirect 301 /roadmap /drupal-upgrade
|
||||
# Redirect 301 /rss /rss.xml
|
||||
Redirect 301 /rst2pdf /talks/building-presenting-slide-decks-rst2pdf
|
||||
Redirect 301 /rst2pdf /presentations/building-presenting-slide-decks-rst2pdf
|
||||
Redirect 301 /s9MjJ https://symfonycasts.com/screencast/symfony
|
||||
Redirect 301 /sculpin /talks/building-static-websites-sculpin
|
||||
Redirect 301 /sculpin /presentations/building-static-websites-sculpin
|
||||
Redirect 301 /sculpin-encore-versioning https://github.com/opdavies/oliverdavies.uk/commit/d192b04aefa6e7a21bfc1f2e0fe0a16111e0e8a2
|
||||
Redirect 301 /sites/default/files/images/social-avatar. /images/social-avatar.jpg
|
||||
Redirect 301 /skills https://opdavies-skills-tailwindcss.netlify.com/
|
||||
|
@ -371,69 +366,76 @@ Redirect 301 /symfony https://connect.symfony.com/profile/opdavies
|
|||
Redirect 301 /symfony-server /articles/running-drupal-with-symfony-local-server
|
||||
Redirect 301 /symfonylive /articles/live-blogging-symfonylive-london
|
||||
Redirect 301 /symposium https://symposiumapp.com/u/opdavies
|
||||
Redirect 301 /tailwind-css-talk /talks/taking-flight-tailwind-css
|
||||
Redirect 301 /tailwind-css-talk /presentations/taking-flight-tailwind-css
|
||||
Redirect 301 /tailwind-repos https://github.com/opdavies?utf8=%E2%9C%93&tab=repositories&q=tailwindcss
|
||||
Redirect 301 /tailwind-talk /talks/taking-flight-with-tailwind-css
|
||||
Redirect 301 /tailwind-talk /presentations/taking-flight-with-tailwind-css
|
||||
Redirect 301 /tailwindcss-demo http://tailwindcss-demo.oliverdavies.uk/
|
||||
Redirect 301 /talks /presentations
|
||||
Redirect 301 /talks-offer-tweet https://twitter.com/opdavies/status/1250870367712935938
|
||||
Redirect 301 /talks/2012/09/05/what-is-this-drupal-thing-unified-diff /talks/what-is-this-drupal-thing
|
||||
Redirect 301 /talks/2013/07/10/drupal-ldap-swdug /talks/drupal-ldap
|
||||
Redirect 301 /talks/2014/03/01/git-flow-drupalcamp-london-2014 /talks/git-flow
|
||||
Redirect 301 /talks/2014/07/02/drush-make-drupalbristol-drupal-bristol /talks/drush-make-drupalbristol
|
||||
Redirect 301 /talks/2014/08/19/drupal-association-swdug /talks/drupal-association
|
||||
Redirect 301 /talks/2015/01/18/drupalorg-2015-drupalcamp-brighton-2015 /talks/drupalorg-in-2015-whats-coming-next
|
||||
Redirect 301 /talks/2015/02/28/drupalorg-2015-drupalcamp-london-2015 /talks/drupalorg-in-2015-whats-coming-next
|
||||
Redirect 301 /talks/2015/04/08/drupal-8-phpsw /talks/drupal-8
|
||||
Redirect 301 /talks/2015/07/25/test-drive-twig-with-sculpin-drupalcamp-north-2015 /talks/test-drive-twig-with-sculpin
|
||||
Redirect 301 /talks/2015/08/25/dancing-for-drupal-umbristol /talks/dancing-for-drupal
|
||||
Redirect 301 /talks/2015/10/14/sculpin-phpsw /talks/sculpin
|
||||
Redirect 301 /talks/2016/03/05/drupal-8-module-development-drupalcamp-london-2016 /talks/getting-started-with-drupal-8-module-development
|
||||
Redirect 301 /talks/2016/03/09/drupal-vm-generator-nwdug /talks/drupal-vm-generator
|
||||
Redirect 301 /talks/2016/04/02/drupal-vm-generator-drupal-bristol /talks/drupal-vm-generator
|
||||
Redirect 301 /talks/2016/06/11/drupal-8-rejoining-the-herd-php-south-coast-2016 /talks/drupal-8-rejoining-the-herd
|
||||
Redirect 301 /talks/2016/07/23/drupal-vm-meet-symfony-console-drupalcamp-bristol-2016 /talks/drupal-vm-meet-symfony-console
|
||||
Redirect 301 /talks/2016/11/09/drupal-development-with-composer-phpsw /talks/drupal-development-with-composer
|
||||
Redirect 301 /talks/2016/11/17/goodbye-drush-make-hello-composer-drupal-bristol /talks/goodbye-drush-make-hello-composer
|
||||
Redirect 301 /talks/2017/01/18/getting-your-data-into-drupal-8-drupal-bristol /talks/getting-your-data-into-drupal-8
|
||||
Redirect 301 /talks/2017/03/04/getting-your-data-into-drupal-8-drupalcamp-london-2017 /talks/getting-your-data-into-drupal-8
|
||||
Redirect 301 /talks/ansible-ansistrano https://www.oliverdavies.uk/talks/deploying-php-ansible-ansistrano
|
||||
Redirect 301 /talks/archive /talks
|
||||
Redirect 301 /talks/deploying-php-applications-fabric /talks/deploying-php-fabric
|
||||
Redirect 301 /talks/deploying-php-applications-with-fabric /talks/deploying-php-fabric
|
||||
Redirect 301 /talks/drupal-vm-generator-2 /talks/drupal-vm-generator
|
||||
Redirect 301 /talks/drupalorg-2015-2 /talks/drupalorg-2015
|
||||
Redirect 301 /talks/drupalorg-in-2015-whats-coming-next /talks/drupalorg-2015
|
||||
Redirect 301 /talks/2012/09/05/what-is-this-drupal-thing-unified-diff /presentations/what-is-this-drupal-thing
|
||||
Redirect 301 /talks/2013/07/10/drupal-ldap-swdug /presentations/drupal-ldap
|
||||
Redirect 301 /talks/2014/03/01/git-flow-drupalcamp-london-2014 /presentations/git-flow
|
||||
Redirect 301 /talks/2014/07/02/drush-make-drupalbristol-drupal-bristol /presentations/drush-make-drupalbristol
|
||||
Redirect 301 /talks/2014/08/19/drupal-association-swdug /presentations/drupal-association
|
||||
Redirect 301 /talks/2015/01/18/drupalorg-2015-drupalcamp-brighton-2015 /presentations/drupalorg-in-2015-whats-coming-next
|
||||
Redirect 301 /talks/2015/02/28/drupalorg-2015-drupalcamp-london-2015 /presentations/drupalorg-in-2015-whats-coming-next
|
||||
Redirect 301 /talks/2015/04/08/drupal-8-phpsw /presentations/drupal-8
|
||||
Redirect 301 /talks/2015/07/25/test-drive-twig-with-sculpin-drupalcamp-north-2015 /presentations/test-drive-twig-with-sculpin
|
||||
Redirect 301 /talks/2015/08/25/dancing-for-drupal-umbristol /presentations/dancing-for-drupal
|
||||
Redirect 301 /talks/2015/10/14/sculpin-phpsw /presentations/sculpin
|
||||
Redirect 301 /talks/2016/03/05/drupal-8-module-development-drupalcamp-london-2016 /presentations/getting-started-with-drupal-8-module-development
|
||||
Redirect 301 /talks/2016/03/09/drupal-vm-generator-nwdug /presentations/drupal-vm-generator
|
||||
Redirect 301 /talks/2016/04/02/drupal-vm-generator-drupal-bristol /presentations/drupal-vm-generator
|
||||
Redirect 301 /talks/2016/06/11/drupal-8-rejoining-the-herd-php-south-coast-2016 /presentations/drupal-8-rejoining-the-herd
|
||||
Redirect 301 /talks/2016/07/23/drupal-vm-meet-symfony-console-drupalcamp-bristol-2016 /presentations/drupal-vm-meet-symfony-console
|
||||
Redirect 301 /talks/2016/11/09/drupal-development-with-composer-phpsw /presentations/drupal-development-with-composer
|
||||
Redirect 301 /talks/2016/11/17/goodbye-drush-make-hello-composer-drupal-bristol /presentations/goodbye-drush-make-hello-composer
|
||||
Redirect 301 /talks/2017/01/18/getting-your-data-into-drupal-8-drupal-bristol /presentations/getting-your-data-into-drupal-8
|
||||
Redirect 301 /talks/2017/03/04/getting-your-data-into-drupal-8-drupalcamp-london-2017 /presentations/getting-your-data-into-drupal-8
|
||||
Redirect 301 /talks/ansible-ansistrano https://www.oliverdavies.uk/presentations/deploying-php-ansible-ansistrano
|
||||
Redirect 301 /talks/archive /presentations
|
||||
Redirect 301 /talks/deploying-php-applications-fabric /presentations/deploying-php-fabric
|
||||
Redirect 301 /talks/deploying-php-applications-with-fabric /presentations/deploying-php-fabric
|
||||
Redirect 301 /talks/drupal-vm-generator-2 /presentations/drupal-vm-generator
|
||||
Redirect 301 /talks/drupalorg-2015-2 /presentations/drupalorg-2015
|
||||
Redirect 301 /talks/drupalorg-in-2015-whats-coming-next /presentations/drupalorg-2015
|
||||
Redirect 301 /talks/getting-started-with-drupal-8-module-development /drupal-8-module-development
|
||||
Redirect 301 /talks/having-fun-drupal-8-php-libraries-drupalorg-api /talks/drupal-8-php-libraries-drupalorg-api
|
||||
Redirect 301 /talks/never-commit-master-introduction-git-flow /talks/git-flow
|
||||
Redirect 301 /talks/sculpin /talks/building-static-websites-sculpin
|
||||
Redirect 301 /talks/tailwind /talks/taking-flight-with-tailwind-css/
|
||||
Redirect 301 /talks/taking-flight-tailwind-css /talks/taking-flight-with-tailwind-css
|
||||
Redirect 301 /talks/using-laravel-collections-outside-laravel /talks/using-illuminate-collections-outside-laravel
|
||||
Redirect 301 /talks/working-workspace /talks/working-with-workspace
|
||||
Redirect 301 /talks/having-fun-drupal-8-php-libraries-drupalorg-api /presentations/drupal-8-php-libraries-drupalorg-api
|
||||
Redirect 301 /talks/never-commit-master-introduction-git-flow /presentations/git-flow
|
||||
Redirect 301 /talks/sculpin /presentations/building-static-websites-sculpin
|
||||
Redirect 301 /talks/tailwind /presentations/taking-flight-with-tailwind-css/
|
||||
Redirect 301 /talks/taking-flight-tailwind-css /presentations/taking-flight-with-tailwind-css
|
||||
Redirect 301 /talks/using-laravel-collections-outside-laravel /presentations/using-illuminate-collections-outside-laravel
|
||||
Redirect 301 /talks/working-workspace /presentations/working-with-workspace
|
||||
Redirect 301 /tdd-blog https://github.com/opdavies/drupal-module-tdd-blog
|
||||
Redirect 301 /tdd-test-driven-drupal /talks/tdd-test-driven-drupal/
|
||||
Redirect 301 /tdd-test-driven-drupal /presentations/tdd-test-driven-drupal/
|
||||
Redirect 301 /team-coaching /
|
||||
Redirect 301 /test-driven-drupal-book /test-driven-drupal
|
||||
Redirect 301 /testing-drupal https://www.oliverdavies.uk/talks/tdd-test-driven-drupal
|
||||
Redirect 301 /testing-drupal /presentations/tdd-test-driven-drupal
|
||||
Redirect 301 /testing-drupal-intro https://inviqa.com/blog/drupal-automated-testing-introduction
|
||||
Redirect 301 /testing-tailwind-plugins /articles/testing-tailwindcss-plugins-with-jest
|
||||
Redirect 301 /testing-workshop https://github.com/opdavies/workshop-drupal-automated-testing
|
||||
Redirect 301 /testing-workshop-code https://github.com/opdavies/workshop-drupal-automated-testing-code
|
||||
Redirect 301 /todoist-filters https://gist.github.com/opdavies/6709fbdac5c3babbd94137bcc8b8e3c2
|
||||
Redirect 301 /twitter-tweaks https://github.com/opdavies/chrome-extension-twitter-tweaks
|
||||
Redirect 301 /upgrading-to-drupal-9 /talks/upgrading-your-site-drupal-9
|
||||
Redirect 301 /upgrading-to-drupal-9 /presentations/upgrading-your-site-drupal-9
|
||||
Redirect 301 /uxbjV https://www.drupal.org/project/copyright_block
|
||||
Redirect 301 /vyTEF https://www.npmjs.com/package/tailwindcss-vuejs
|
||||
Redirect 301 /webpack-encore-pcss-regex https://regexr.com/51iaf
|
||||
Redirect 301 /wordcamp-bristol-tailwindcss https://2019.bristol.wordcamp.org/session/taking-flight-with-tailwind-css
|
||||
Redirect 301 /wordpress-tailwind https://github.com/opdavies/wordcamp-bristol-2019
|
||||
Redirect 301 /work /drupal-php-developer
|
||||
Redirect 301 /working-with-workspace /talks/working-with-workspace
|
||||
Redirect 301 /working-with-workspace /presentations/working-with-workspace
|
||||
Redirect 301 /workshop-drupal-testing https://github.com/opdavies/workshop-drupal-automated-testing
|
||||
Redirect 301 /workspace-demo https://github.com/opdavies/working-with-workspace-demo
|
||||
Redirect 301 /wp-tailwind https://wp-tailwind.oliverdavies.uk
|
||||
Redirect 301 /wp-tailwind-repo https://github.com/opdavies/wordcamp-bristol-2019
|
||||
Redirect 301 /wp-tailwind-starter https://github.com/opdavies/wordpress-tailwindcss-startker-kit
|
||||
Redirect 301 /wp-tailwind-static https://wp-tailwind.oliverdavies.uk
|
||||
Redirect 301 /yXhoS /talks/things-you-should-know-about-php
|
||||
Redirect 301 /yXhoS /presentations/things-you-should-know-about-php
|
||||
|
||||
# RewriteCond %{REQUEST_URI} !^/archive/?$
|
||||
# RewriteRule ^archive/(.*)$ /daily/$1 [L,R=301]
|
||||
|
||||
RewriteRule ^articles/(.*) /blog/$1 [L,R=301]
|
||||
RewriteRule ^talks/(.*) /presentations/$1 [L,R=301]
|
||||
|
|
|
@ -33,4 +33,4 @@ I also worked on an event booking and management website, where we had code resp
|
|||
|
||||
The great thing about testing is that it gives you confidence that everything still works how you expect - not only when you wrote the code, but also in the future.
|
||||
|
||||
I've talked about this, and how to get started with automated testing in Drupal, in a presentation called [TDD - Test-Driven Drupal]({{site.url}}/talks/tdd-test-driven-drupal). If you want to find out more, the slides and a video recording are embedded there.
|
||||
I've talked about this, and how to get started with automated testing in Drupal, in a presentation called [TDD - Test-Driven Drupal]({{site.url}}/presentations/tdd-test-driven-drupal). If you want to find out more, the slides and a video recording are embedded there.
|
||||
|
|
|
@ -35,7 +35,7 @@ Makefiles work well, but I don't use the full functionality that they offer, suc
|
|||
|
||||
In the example, to pass arguments to the `drush` command, I'd have to type `ARGS="cache:rebuild" make drush` for them to get added and the command to work as expected.
|
||||
|
||||
An agency that I worked for created and open-sourced their own Makefile-like tool, written in PHP and built on Symfony Console. I gave a talk on it called [Working with Workspace]({{site.url}}/talks/working-with-workspace) and used it on some of my own personal and client projects.
|
||||
An agency that I worked for created and open-sourced their own Makefile-like tool, written in PHP and built on Symfony Console. I gave a talk on it called [Working with Workspace]({{site.url}}/presentations/working-with-workspace) and used it on some of my own personal and client projects.
|
||||
|
||||
## What I'm using now
|
||||
|
||||
|
|
|
@ -21,4 +21,4 @@ There may be other constraints like budgets or deadlines to consider - maybe som
|
|||
|
||||
There are situations though where a tool may be the best choice even though it's not the ideal fit based purely on the technical requirements. Maybe the client is already familiar with publishing content in Drupal, or an in-house development team is used to working with a certain tool or language. In that case, those things should be considered too.
|
||||
|
||||
Also, for me, having a chance to evaluate other technologies and explore what's happening outside of the Drupal ecosystem is a good opportunity. A lot of what I've learned about automated testing, for example, is from the wider PHP and JavaScript communities, as well as tools like [Tailwind CSS]({{site.url}}/talks/taking-flight-with-tailwind-css) and [Illuminate Collections]({{site.url}}//talks/using-illuminate-collections-outside-laravel) that I've been able to bring back into my other Drupal projects.
|
||||
Also, for me, having a chance to evaluate other technologies and explore what's happening outside of the Drupal ecosystem is a good opportunity. A lot of what I've learned about automated testing, for example, is from the wider PHP and JavaScript communities, as well as tools like [Tailwind CSS]({{site.url}}/presentations/taking-flight-with-tailwind-css) and [Illuminate Collections]({{site.url}}//presentations/using-illuminate-collections-outside-laravel) that I've been able to bring back into my other Drupal projects.
|
||||
|
|
|
@ -23,7 +23,7 @@ I started to use Tachyons on some personal and client projects as a layer on oth
|
|||
|
||||
I was working in this way on a project when I released that I could use Tailwind for all of the styling instead of just adding small sprinklings of utilities here and there. I refactored everything and removed the other framework that I'd been using - leaving just Tailwind CSS.
|
||||
|
||||
With the exception of some legacy projects, now I use Tailwind CSS exclusively and have used it for a number of projects. I've given lunch and learn sessions to teams that I've worked on, [presented a Tailwind CSS talk]({{site.url}}/talks/taking-flight-tailwind-css) at a number of PHP, Drupal, WordPress, and JavaScript events, and maintain [a starter-kit theme](https://www.drupal.org/project/tailwindcss) for using Tailwind in custom Drupal themes.
|
||||
With the exception of some legacy projects, now I use Tailwind CSS exclusively and have used it for a number of projects. I've given lunch and learn sessions to teams that I've worked on, [presented a Tailwind CSS talk]({{site.url}}/presentations/taking-flight-tailwind-css) at a number of PHP, Drupal, WordPress, and JavaScript events, and maintain [a starter-kit theme](https://www.drupal.org/project/tailwindcss) for using Tailwind in custom Drupal themes.
|
||||
|
||||
I've also rebuilt a [number of existing sites]({{site.url}}/blog/uis-ive-rebuilt-tailwind-css) as examples and written some [Tailwind CSS related blog posts]({{site.url}}/blog/tags/tailwind-css).
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ You can use it within a playbook, and you'll be prompted to re-enter the passwor
|
|||
|
||||
Rather than a single string, you could have a file of variables that you want to encrypt. You can do this by running `ansible-vault encrypt vault.yml` and include it as before. Again, you'll be prompted by Ansible so that it can decrypt and use the values.
|
||||
|
||||
For an example of how I'm using Ansible Vault, see [the Dransible repository](https://github.com/opdavies/dransible/tree/986ba5097d62ff4cd0e637d40181bab2c4417f2e/tools/ansible) on GitHub or my [ Deploying PHP applications with Ansible, Ansible Vault and Ansistrano]({{site.url}}/talks/deploying-php-ansible-ansistrano) talk.
|
||||
For an example of how I'm using Ansible Vault, see [the Dransible repository](https://github.com/opdavies/dransible/tree/986ba5097d62ff4cd0e637d40181bab2c4417f2e/tools/ansible) on GitHub or my [ Deploying PHP applications with Ansible, Ansible Vault and Ansistrano]({{site.url}}/presentations/deploying-php-ansible-ansistrano) talk.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
@ -64,4 +64,4 @@ public function the_admin_page_is_accessible_by_admin_users() {
|
|||
}
|
||||
```
|
||||
|
||||
Hopefully, this shows how quickly you can get tests running for a Drupal module. If you'd like to see more, the slides and video recording of my [Test-Driven Drupal talk]({{site.url}}/talks/tdd-test-driven-drupal) are online.
|
||||
Hopefully, this shows how quickly you can get tests running for a Drupal module. If you'd like to see more, the slides and video recording of my [Test-Driven Drupal talk]({{site.url}}/presentations/tdd-test-driven-drupal) are online.
|
||||
|
|
|
@ -23,6 +23,6 @@ There are other advantages too - clients or product owners are generally happier
|
|||
|
||||
If you're familiar with the DevOps Research and Assessment (DORA) team, three of their key metrics are deployment frequency, lead time for changes, and time to restore service. All of these are improved by small and frequent releases.
|
||||
|
||||
In my [Deployments with Ansible and Ansistrano talk](https://www.oliverdavies.uk/talks/deploying-php-ansible-ansistrano), I mention that there is a separate rollback role, but I don't think that I've ever used it.
|
||||
In my [Deployments with Ansible and Ansistrano talk](https://www.oliverdavies.uk/presentations/deploying-php-ansible-ansistrano), I mention that there is a separate rollback role, but I don't think that I've ever used it.
|
||||
|
||||
Because I'm deploying small changes often, it's usually much easier to fix forward than it is to rollback, and knowing this makes me a lot less anxious when deploying changes.
|
||||
|
|
|
@ -8,7 +8,7 @@ permalink: >-
|
|||
|
||||
I’m happy to have had a conference talk proposal accepted for what will be my first in-person conference since DrupalCamp London in February 2020.
|
||||
|
||||
I’ll be giving my "[Taking Flight with Tailwind CSS](https://www.oliverdavies.uk/talks/taking-flight-with-tailwind-css)" talk for the first time since February 2021, and in front of an in-person audience since June 2019.
|
||||
I’ll be giving my "[Taking Flight with Tailwind CSS](https://www.oliverdavies.uk/presentations/taking-flight-with-tailwind-css)" talk for the first time since February 2021, and in front of an in-person audience since June 2019.
|
||||
|
||||
The talk itself will need some updating. The last time I gave it, Tailwind CSS was on version 2.0.3. It’s now on version 3.2.2 and includes features like the just-in-time engine, arbitrary values and variants, container queries, and a load of new utility classes.
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ After reading this, my question is, "Should you, or do you need to, create branc
|
|||
|
||||
These days, I use trunk-based development as much as possible, so I hardly ever create new branches, whether working on a project myself or with a team.
|
||||
|
||||
[I used to use Git Flow](https://www.oliverdavies.uk/talks/git-flow) and create branches for every new feature and bug fix, but I remember, whilst demonstrating two work-in-progress features to a client, switching between the different branches caused my local site to break. Whilst it wasn’t a major issue, it wouldn't have seemed professional.
|
||||
[I used to use Git Flow](https://www.oliverdavies.uk/presentations/git-flow) and create branches for every new feature and bug fix, but I remember, whilst demonstrating two work-in-progress features to a client, switching between the different branches caused my local site to break. Whilst it wasn’t a major issue, it wouldn't have seemed professional.
|
||||
|
||||
In a team environment, feature branches are intended to keep different changes and different people's work separate.
|
||||
|
||||
|
|
|
@ -12,12 +12,12 @@ I had some early presents this month and have been accepted to present talks at
|
|||
|
||||
## PHP Stoke
|
||||
|
||||
The first PHP Stoke meetup will be held at Genr8 Smithfield Works on the 12th of January. I'll be presenting "[Things you should know about PHP](https://www.oliverdavies.uk/talks/things-you-should-know-about-php)". It'll be great to be the first speaker at this new meetup.
|
||||
The first PHP Stoke meetup will be held at Genr8 Smithfield Works on the 12th of January. I'll be presenting "[Things you should know about PHP](https://www.oliverdavies.uk/presentations/things-you-should-know-about-php)". It'll be great to be the first speaker at this new meetup.
|
||||
|
||||
## nor(DEV):con
|
||||
|
||||
The Norfolk Developers conference is in Norwich on the 23rd and 24th of February.
|
||||
|
||||
I'll be presenting "[Taking Flight about Tailwind CSS](https://www.oliverdavies.uk/talks/taking-flight-with-tailwind-css)". It's been a while since I last gave this talk so I'm looking forward to updating it with the latest changes and new features in Tailwind CSS.
|
||||
I'll be presenting "[Taking Flight about Tailwind CSS](https://www.oliverdavies.uk/presentations/taking-flight-with-tailwind-css)". It's been a while since I last gave this talk so I'm looking forward to updating it with the latest changes and new features in Tailwind CSS.
|
||||
|
||||
It'll be great to be speaking at these events and hopefully others in 2023.
|
||||
|
|
|
@ -13,8 +13,8 @@ I took a bit of time off from these emails whilst I was preparing for the first
|
|||
|
||||
It was a great event with around 35 attendees and two other speakers as well as myself.
|
||||
|
||||
The [latest version of my slides are online](https://www.oliverdavies.uk/talks/things-you-should-know-about-php) as well [some updated resources](https://www.oliverdavies.uk/things-about-php).
|
||||
The [latest version of my slides are online](https://www.oliverdavies.uk/presentations/things-you-should-know-about-php) as well [some updated resources](https://www.oliverdavies.uk/things-about-php).
|
||||
|
||||
My next talk will be at the Norfolk Developers conference next month where I'll be presenting an updated version of [Taking Flight with Tailwind CSS](https://www.oliverdavies.uk/talks/taking-flight-with-tailwind-css).
|
||||
My next talk will be at the Norfolk Developers conference next month where I'll be presenting an updated version of [Taking Flight with Tailwind CSS](https://www.oliverdavies.uk/presentations/taking-flight-with-tailwind-css).
|
||||
|
||||
If you have a topic idea for a talk or would like me to speak at your meetup or conference, please get in touch.
|
||||
|
|
|
@ -8,7 +8,7 @@ tags:
|
|||
- php
|
||||
---
|
||||
|
||||
The talk that I gave last week at PHP Stoke was [Things to know about PHP](https://www.oliverdavies.uk/talks/things-you-should-know-about-php) - a talk that I was originally asked to give at the Swansea Software Development Meetup (SSDC) in January 2019, and this was the second time that I've been asked to give this talk at a PHP meetup.
|
||||
The talk that I gave last week at PHP Stoke was [Things to know about PHP](https://www.oliverdavies.uk/presentations/things-you-should-know-about-php) - a talk that I was originally asked to give at the Swansea Software Development Meetup (SSDC) in January 2019, and this was the second time that I've been asked to give this talk at a PHP meetup.
|
||||
|
||||
Originally to give a group of various Software Developers an introduction to PHP, I didn't want the talk to be focused just on the language itself and be a walkthough the PHP manual.
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Last month, I started my first Drupal 10 project for a client.
|
|||
|
||||
I'm proud that over a year of that time was spent working for the Drupal Association where I improved the Drupal.org websites and resolved issues that would have blocked the Drupal 8 release in 2015.
|
||||
|
||||
I'm also happy to have [presented talks and workshops](https://www.oliverdavies.uk/talks) at events like DrupalCamps, Drupal Developer Days and twice at DrupalCon. I've also organised Drupal events such as the Drupal Bristol meetup and DrupalCamp Bristol conference.
|
||||
I'm also happy to have [presented talks and workshops](https://www.oliverdavies.uk/presentations) at events like DrupalCamps, Drupal Developer Days and twice at DrupalCon. I've also organised Drupal events such as the Drupal Bristol meetup and DrupalCamp Bristol conference.
|
||||
|
||||
I've had opportunities to contribute to open-source by having patches committed to Drupal core and maintaining modules and themes like [Override Node Options](https://www.drupal.org/project/override_node_options) and the [Tailwind CSS starter kit](https://www.drupal.org/project/tailwindcss). I've also mentored and helped others to get their first commits to Drupal core and open-source.
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ tags:
|
|||
- tailwind-css
|
||||
---
|
||||
|
||||
Previously when I gave my [Taking Flight with Tailwind CSS](https://www.oliverdavies.uk/talks/taking-flight-with-tailwind-css) talk, I created examples that relate to the event such as something related to that technology or event.
|
||||
Previously when I gave my [Taking Flight with Tailwind CSS](https://www.oliverdavies.uk/presentations/taking-flight-with-tailwind-css) talk, I created examples that relate to the event such as something related to that technology or event.
|
||||
|
||||
The nor(DEV):con website already uses Tailwind CSS so I've been looking for other examples and have started to build some of the [Bootstrap CSS components](https://getbootstrap.com/docs/4.0/examples) with Tailwind CSS.
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ I'm always working on various personal and client projects, and they contain a l
|
|||
|
||||
The majority of those files are the same with some slight configuration for each project - such as whether it uses `web` or `docroot`, or which paths are checked with static analysis or for coding standards issues.
|
||||
|
||||
I've given a talk called [Working with Workspace](https://www.oliverdavies.uk/talks/working-with-workspace) - a tool that we used at an agency I worked at. It had two functions - to execute project tasks and to generate configuration files from templates.
|
||||
I've given a talk called [Working with Workspace](https://www.oliverdavies.uk/presentations/working-with-workspace) - a tool that we used at an agency I worked at. It had two functions - to execute project tasks and to generate configuration files from templates.
|
||||
|
||||
I use a `justfile` to execute tasks and commands but needed to write my own tool to generate the configuration files.
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ tags:
|
|||
- open-source
|
||||
---
|
||||
|
||||
Note: The numbers within this post are taken from my [Test-Driven Drupal talk](https://www.oliverdavies.uk/talks/tdd-test-driven-drupal), in which I also talk about this.
|
||||
Note: The numbers within this post are taken from my [Test-Driven Drupal talk](https://www.oliverdavies.uk/presentations/tdd-test-driven-drupal), in which I also talk about this.
|
||||
|
||||
My first commit to the 7.x-1.x branch of the Override Node Options module was in March 2012. According to Drupal.org, the module was used on 9,212 websites then.
|
||||
|
||||
|
|
|
@ -24,5 +24,5 @@ If you have any questions, hit reply and let me know!
|
|||
|
||||
[commerce_example]: https://github.com/opdavies/docker-example-drupal-commerce-kickstart
|
||||
[example]: https://github.com/opdavies/docker-example-drupal
|
||||
[slides]: https://www.oliverdavies.uk/talks/building-build-configs
|
||||
[slides]: https://www.oliverdavies.uk/presentations/building-build-configs
|
||||
[video]: https://www.oliverdavies.uk/build-configs
|
||||
|
|
|
@ -48,5 +48,5 @@ It's quicker to create and onboard projects using existing configurations instea
|
|||
If you want to see an example, [watch this video][video] where I set up a new Drupal 10 project from nothing to running website in less than a minute.
|
||||
|
||||
[build configs]: https://www.oliverdavies.uk/build-configs
|
||||
[talk]: https://www.oliverdavies.uk/talks/building-build-configs
|
||||
[talk]: https://www.oliverdavies.uk/presentations/building-build-configs
|
||||
[video]: https://www.youtube.com/watch?v=LkhsdmxReUc
|
||||
|
|
|
@ -30,4 +30,4 @@ Register now to find out when the email course is live, or [read the first lesso
|
|||
|
||||
[atdc]: {{site.url}}/atdc
|
||||
[first lesson]: {{site.url}}/archive/2023/12/25/zero-to-test
|
||||
[working without workspace talk]: {{site.url}}/talks/working-without-workspace
|
||||
[working without workspace talk]: {{site.url}}/presentations/working-without-workspace
|
||||
|
|
|
@ -28,4 +28,4 @@ If you use it and don't like it, don't continue and return to what you did befor
|
|||
|
||||
Whether you keep it or not, you better understand what you're evaluating and not dismiss it out of hand.
|
||||
|
||||
[talk]: {{site.url}}/talks/taking-flight-with-tailwind-css
|
||||
[talk]: {{site.url}}/presentations/taking-flight-with-tailwind-css
|
||||
|
|
|
@ -15,7 +15,7 @@ Here is some code from my website:
|
|||
|
||||
![A screenshot of the code that calculates the number of talks I've given.]({{site.url}}/assets/images/talk-count-code.png)
|
||||
|
||||
If you want, you can also [view it on GitHub](https://raw.githubusercontent.com/opdavies/oliverdavies.uk/main/source/_pages/talks.md).
|
||||
If you want, you can also [view it on GitHub](https://raw.githubusercontent.com/opdavies/oliverdavies.uk/main/source/_pages/presentations.md).
|
||||
|
||||
It is business logic responsible for counting the number of talks I've given at different events so I can display it on my Talks page.
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ It's one of my most popular talks and, during COVID lockdowns, I also gave a wor
|
|||
If this helps anyone on their Tailwind CSS learning journey, please reply and let me know!
|
||||
|
||||
[recording]: https://www.youtube.com/watch?v=phFDKF-9j0Y
|
||||
[talk]: {{site.url}}/talks/taking-flight-with-tailwind-css
|
||||
[talk]: {{site.url}}/presentations/taking-flight-with-tailwind-css
|
||||
{% endblock %}
|
||||
|
||||
{% block cta %}
|
||||
|
|
|
@ -20,5 +20,5 @@ If you'd like a sneak peek of the demo site I'm building, [it's on GitHub][repo]
|
|||
|
||||
[event]: https://www.meetup.com/php-sw/events/298880313
|
||||
[repo]: https://github.com/opdavies/phpsw-sculpin-demo
|
||||
[talk]: {{site.url}}/talks/test-drive-twig-with-sculpin
|
||||
[talk]: {{site.url}}/presentations/test-drive-twig-with-sculpin
|
||||
[tweet]: https://twitter.com/opdavies/status/1754629305575874738
|
||||
|
|
|
@ -42,4 +42,4 @@ I don't need to think about whether this branch is a feature or a hotfix, and I'
|
|||
|
||||
Do what works best for you and your team, but don't adopt something because it's the "standard" approach.
|
||||
|
||||
[talk]: {{site.url}}/talks/git-flow
|
||||
[talk]: {{site.url}}/presentations/git-flow
|
||||
|
|
|
@ -26,5 +26,5 @@ You can [watch the full stream][video] on YouTube now. I'll split it into sectio
|
|||
I won't post a link to every video here, so please subscribe to my YouTube channel to be notified when I go live next.
|
||||
|
||||
[build configs]: {{site.url}}/build-configs
|
||||
[talk]: {{site.url}}/talks/building-build-configs
|
||||
[talk]: {{site.url}}/presentations/building-build-configs
|
||||
[video]: https://www.youtube.com/watch?v=Wlkcf1PLWN8
|
||||
|
|
|
@ -18,5 +18,5 @@ In the talk, I explain what Sculpin is and how it works before a live demo where
|
|||
|
||||
If you have any feedback or questions, reply to this email and let me know.
|
||||
|
||||
[talk]: {{site.url}}/talks/building-static-websites-sculpin
|
||||
[talk]: {{site.url}}/presentations/building-static-websites-sculpin
|
||||
[video]: https://youtu.be/axy6ltc9meA?si=FtR4DZ5BVi_Se60J
|
||||
|
|
|
@ -28,4 +28,4 @@ Ansible is a great tool for this type of task and, just because it's a tool I ha
|
|||
It's still in my toolkit, just in case I need it.
|
||||
|
||||
[commit]: https://github.com/opdavies/oliverdavies.uk/commit/cd6575c6fcc091a0b7c98b6985b3a92b85e279e3
|
||||
[talk]: {{site.url}}/talks/deploying-php-ansible-ansistrano
|
||||
[talk]: {{site.url}}/presentations/deploying-php-ansible-ansistrano
|
||||
|
|
|
@ -19,5 +19,5 @@ We discussed his experience with coding bootcamps, getting into the software ind
|
|||
|
||||
It will be released soon on [the Beyond Blocks podcast page][1].
|
||||
|
||||
[0]: {{site.url}}/talks/communities-contribution
|
||||
[0]: {{site.url}}/presentations/communities-contribution
|
||||
[1]: {{site.url}}/podcast
|
||||
|
|
|
@ -60,4 +60,4 @@ If I tried searching for `.sidebar-wrapper` or `.sidebar-wrapper a:hover`, they
|
|||
It's taken me a while to get back into this way of working with CSS, but it does remind me [why I prefer to use utility styles][talk] for my own projects.
|
||||
|
||||
[nesting]: {{site.url}}/daily/2024/07/08/back-to-sass-and-traditional-css
|
||||
[talk]: {{site.url}}/talks/taking-flight-with-tailwind-css
|
||||
[talk]: {{site.url}}/presentations/taking-flight-with-tailwind-css
|
||||
|
|
|
@ -46,6 +46,6 @@ Similar to feature flags, this is temporary code that will later be removed when
|
|||
|
||||
In the future, I can refactor the internal logic to use a different approach and when I'm ready, eventually remove the compatibility layer and tag a new major version with the breaking changes.
|
||||
|
||||
[0]: {{site.url}}/talks/building-build-configs
|
||||
[1]: {{site.url}}/talks/working-with-workspace
|
||||
[0]: {{site.url}}/presentations/building-build-configs
|
||||
[1]: {{site.url}}/presentations/working-with-workspace
|
||||
[2]: https://github.com/ALT-F4-LLC/build-configs
|
||||
|
|
|
@ -32,7 +32,7 @@ Similar to [why I use Linux][4], I believe in owning your own content rather tha
|
|||
|
||||
And I learned something new about Git at the same time.
|
||||
|
||||
[0]: {{site.url}}/talks/test-drive-twig-with-sculpin
|
||||
[0]: {{site.url}}/presentations/test-drive-twig-with-sculpin
|
||||
[1]: https://git-scm.com/docs/git-merge#Documentation/git-merge.txt---allow-unrelated-histories
|
||||
[3]: https://github.com/opdavies/oliverdavies.uk
|
||||
[4]: {{site.url}}/daily/2024/07/31/why-i-use-linux
|
||||
|
|
|
@ -24,4 +24,4 @@ There is no styling yet, as I wanted to focus on deploying the MVP version, but
|
|||
At the moment, I'm focusing on writing as often as possible for this email list and in my new Zettelkasten.
|
||||
|
||||
[0]: https://zet.oliverdavies.uk
|
||||
[1]: {{site.url}}/talks/building-static-websites-sculpin
|
||||
[1]: {{site.url}}/presentations/building-static-websites-sculpin
|
||||
|
|
|
@ -22,7 +22,7 @@ I have some things I want to make sure I mention, so expect a note in my Zettlek
|
|||
|
||||
If you're interested, [here's the demo website][2] I did for PHP South West, [along with the code on GitHub][3].
|
||||
|
||||
[0]: {{site.url}}/talks/building-static-websites-sculpin
|
||||
[0]: {{site.url}}/presentations/building-static-websites-sculpin
|
||||
[1]: https://zet.oliverdavies.uk
|
||||
[2]: https://phpsw-sculpin-demo.oliverdavies.uk
|
||||
[3]: https://github.com/opdavies/phpsw-sculpin-demo
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
</div>
|
||||
|
||||
<div class="{{ site.prose_classes }}">
|
||||
<p>I'm an Acquia-certified Drupal Triple Expert with {{ get_years_of_experience() }} years of experience, an open-source software maintainer and Drupal core contributor, <a href="/talks">public speaker</a>, <a href="{{ site.youtube.channel.url }}/streams">live streamer</a>, and host of the <a href="/podcast">Beyond Blocks podcast</a>.</p>
|
||||
<p>I'm an Acquia-certified Drupal Triple Expert with {{ get_years_of_experience() }} years of experience, an open-source software maintainer and Drupal core contributor, <a href="/presentations">public speaker</a>, <a href="{{ site.youtube.channel.url }}/streams">live streamer</a>, and host of the <a href="/podcast">Beyond Blocks podcast</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -3,15 +3,15 @@
|
|||
{% block content_wrapper %}
|
||||
{{ parent() }}
|
||||
|
||||
{% include 'talk/slides' with {
|
||||
{% include 'presentation/slides' with {
|
||||
speakerdeck: page.speakerdeck,
|
||||
} %}
|
||||
|
||||
{% include 'talk/video' with {
|
||||
{% include 'presentation/video' with {
|
||||
video: page.video,
|
||||
} %}
|
||||
|
||||
{% include 'talk/events' with {
|
||||
{% include 'presentation/events' with {
|
||||
events: page.events,
|
||||
} %}
|
||||
{% endblock %}
|
|
@ -6,7 +6,7 @@ title: Page not found
|
|||
Perhaps you were looking for one of these pages:
|
||||
|
||||
- [Products and services](/pricing)
|
||||
- [Public speaking and workshops](/talks)
|
||||
- [Public speaking and workshops](/presentations)
|
||||
- [My daily email list](/daily)
|
||||
- [The Beyond Blocks podcast](/podcast)
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 646df70626c07503d7ab7e90c8d257c63fb1e5b7
|
||||
Subproject commit f31e5c4364890b2a31b3acd961f78565ad822de9
|
|
@ -9,7 +9,7 @@ title: Hi, PHP Oxford!
|
|||
{% block content %}
|
||||
Thanks for attending my talk on [Build Configs](/build-configs).
|
||||
|
||||
[These are the slides](/talks/building-build-configs) I presented and the example video:
|
||||
[These are the slides](/presentations/building-build-configs) I presented and the example video:
|
||||
|
||||
{% include 'youtube-video' with { id: 'LkhsdmxReUc'} %}
|
||||
|
||||
|
@ -21,7 +21,7 @@ If you have any further questions, let me know.
|
|||
|
||||
[Get in touch](/contact) if you're interested in using Build Configs-based managed configuration files in your projects (I offer one-off implementations or ongoing updates via a subscription), you need an in-house tool built for your team, or if we can [work together another way](/pricing).
|
||||
|
||||
If you liked the talk, or [any of my others](/talks), I can also present talks and run workshops for companies.
|
||||
If you liked the talk, or [any of my others](/presentations), I can also present talks and run workshops for companies.
|
||||
|
||||
## While you're here
|
||||
|
||||
|
|
|
@ -28,8 +28,8 @@ All emails are sent from my personal email address, so you can press reply and c
|
|||
[consulting]: /consulting
|
||||
[course]: /atdc
|
||||
[email list]: /daily
|
||||
[tailwind css]: /talks/taking-flight-with-tailwind-css
|
||||
[test driven drupal]: /talks/tdd-test-driven-drupal
|
||||
[tailwind css]: /presentations/taking-flight-with-tailwind-css
|
||||
[test driven drupal]: /presentations/tdd-test-driven-drupal
|
||||
[workshop]: /archive/2024/01/22/tailwind-css-workshop-recording
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
@ -9,7 +9,7 @@ title: PHP Berkshire
|
|||
{% block content %}
|
||||
Thank you for attending my Sculpin talk at PHP Berkshire.
|
||||
|
||||
[The slides and a previous recording](/talks/building-static-websites-sculpin) are on the talk page.
|
||||
[The slides and a previous recording](/presentations/building-static-websites-sculpin) are on the talk page.
|
||||
|
||||
To see an example of a Sculpin project, you can see [the source code for this website](https://github.com/opdavies/oliverdavies.uk), [my Zettlekasten](https://github.com/opdavies/zet.oliverdavies.uk) or [my demo for PHP South West](https://github.com/opdavies/phpsw-sculpin-demo).
|
||||
|
||||
|
|
18
source/_pages/presentations.md
Normal file
18
source/_pages/presentations.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
title: Presentations
|
||||
use: [presentations]
|
||||
---
|
||||
|
||||
Since September 2012, I have given {{ get_presentation_count(data.presentations) }} public talks and workshops at various conferences and meetups, in-person and remotely, on topics including PHP, Drupal, automated testing, Git, CSS, and systems administration.
|
||||
|
||||
{% for talk in data.presentations|sort((a, b) => a.events|last.date|date('U') > b.events|last.date|date('U') ? -1 : 1) %}
|
||||
<article>
|
||||
<div class="not-prose">
|
||||
<h2 class="text-xl font-bold">
|
||||
<a class="font-bold text-blue-primary dark:text-blue-400" href="{{ talk.url|trim('/', 'right') }}">{{ talk.title }}</a>
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<p>{{ talk.description }}</p>
|
||||
</article>
|
||||
{% endfor %}
|
|
@ -1,18 +0,0 @@
|
|||
---
|
||||
title: Talks and Workshops
|
||||
use: [talks]
|
||||
---
|
||||
|
||||
Since September 2012, I have given {{ get_past_talk_count(data.talks) }} public presentations and workshops at various conferences and meetups, in-person and remotely, on topics including PHP, Drupal, automated testing, Git, CSS, and systems administration.
|
||||
|
||||
{% for talk in data.talks|sort((a, b) => a.events|last.date|date('U') > b.events|last.date|date('U') ? -1 : 1) %}
|
||||
<article>
|
||||
<div class="not-prose">
|
||||
<h2 class="text-xl font-bold">
|
||||
<a class="font-bold text-blue-primary dark:text-blue-400" href="{{ talk.url|trim('/', 'right') }}">{{ talk.title }}</a>
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<p>{{ talk.description }}</p>
|
||||
</article>
|
||||
{% endfor %}
|
|
@ -70,7 +70,7 @@ that we’ve written on my work project over the last few months.
|
|||
I didn’t record this workshop, but I have exported the slides and embedded them
|
||||
below:
|
||||
|
||||
{% include 'talk/slides' with {
|
||||
{% include 'presentation/slides' with {
|
||||
speakerdeck: {
|
||||
id: '2679401cb2ad421789d372cb8d38e368',
|
||||
ratio: '1.77777777777778',
|
||||
|
|
|
@ -13,7 +13,7 @@ tweets: true
|
|||
Here are my slides from my "What is Git Flow?" session at
|
||||
[DrupalCamp London](http://2014.drupalcamplondon.co.uk).
|
||||
|
||||
{% include 'talk/slides' with { speakerdeck: {
|
||||
{% include 'presentation/slides' with { speakerdeck: {
|
||||
data_id: '201559e0f103013198dd5a5f6f23ab67' }
|
||||
} only %}
|
||||
|
||||
|
|
|
@ -52,4 +52,4 @@ This session will cover various topics including:
|
|||
[4]: https://laravel.com/docs/collections
|
||||
[5]: https://github.com/opdavies/drupal-module-drupalorg-project-statistics
|
||||
[6]: https://github.com/opdavies/drupal-module-drupalversary
|
||||
[7]: /talks/using-laravel-collections-outside-laravel/
|
||||
[7]: /presentations/using-laravel-collections-outside-laravel/
|
Loading…
Reference in a new issue