Re-add old talk content

This commit is contained in:
Oliver Davies 2021-06-30 08:00:00 +01:00
parent 24e4135a83
commit 5d967e338c
27 changed files with 739 additions and 0 deletions

View file

@ -0,0 +1,28 @@
---
title: Building Static Websites with Sculpin
description: A lightning talk on how to use Sculpin to generate static HTML websites.
type: Lightning talk
speakerdeck:
id: 6c9c4be1a1344f1291ff13a391674a66
ratio: '1.37081659973226'
url: https://speakerdeck.com/opdavies/building-static-websites-with-sculpin
code: https://github.com/opdavies/sculpin-demo
tags: [meetups, phpsw, sculpin]
tweets: yes
video:
type: youtube
id: aN53arCKZAU
events:
- event: phpsw
date: 2015-10-14
joindin: https://joind.in/talk/view/15486
---
[Sculpin][0] is a static site generator written in PHP. It converts Markdown files, Twig templates and standard HTML into a static HTML site that can be easily deployed.
This talk will cover a little of the background to Sculpin and what it is, and then will move into some demonstrations of how to build a Sculpin site and what it can do!
You can [view the full slides][1], including the embedded videos.
[0]: http://sculpin.io
[1]: https://opdavies.github.io/slides-phpsw-sculpin

View file

@ -0,0 +1,19 @@
---
title: 'Configuring all the Things (in Drupal 8)'
description: A short notice talk on configuration management in Drupal 8, and things Ive learned working on my current Drupal 8 project.
speakerdeck:
id: 6de3fe8947a34727b79eb9d9dcc66bf2
ratio: '1.37081659973226'
url: https://speakerdeck.com/opdavies/configuring-all-the-things-in-drupal-8
video:
type: ~
id: ~
tags:
- drupal
- drupal-8
events:
- event: drupal_bristol
date: 2018-07-25
---
A short notice talk on configuration management in Drupal 8, and things Ive learned working on my current Drupal 8 project.

View file

@ -0,0 +1,29 @@
---
title: Dancing for Drupal
description: A talk on Drupal, presented alongside others representing Umbraco, Sitecore and Episerver.
speakerdeck:
id: ffa9b6dea6dc4a8eb207b9982ed6e1bd
ratio: '1.33333333333333'
url: https://speakerdeck.com/opdavies/umbristol-dancing-for-drupal
tags: [meetup, umbristol, drupal]
tweets: yes
events:
- event: umbristol
date: 2015-08-25
---
As part of their [CMS Dance-Off][1], I was selected to speak about Drupal alongside other speakers representing Umbraco, Sitecore and Episerver.
The points to cover were:
- How does your CMS store configuration data, 'structure' and content?
- How do you manage source-control, versioning and deployment?
- How do you manage multiple simultaneous editors and/or developers?
- How do you manage upgrades?
- What are the 3 best things about your CMS?
- What are the 3 worst things about your CMS?
- What does the future of your CMS look like?
In each point, tried to cover the differences between Drupal core and developing a project using Drupal, as well as between Drupal 7 and Drupal 8, as things like source control and versioning would be approached differently.
[1]: http://www.meetup.com/umBristol/events/223807592

View file

@ -0,0 +1,18 @@
---
title: Decoupling Drupal with Vue.js
description: Decoupling Drupal with Vue.js.
code: https://github.com/opdavies/blue-conf-2019
speakerdeck:
id: 60c8b7abdf194946b7a78a1bb74a0982
ratio: '1.77777777777778'
url: https://speakerdeck.com/opdavies/decoupling-drupal-with-vue-dot-js
events:
- event: blue_conf_19
date: 2019-06-07
---
Decoupled or headless Drupal has been a trend for a number of years, with modules like RESTful Web Services available for Drupal 7 to expose data, and Drupal 8 becoming more API-first with JSON:API module now included as part of core. This makes it easier for third party systems or alternative front-end applications to consume and work with the data provided by Drupal.
In this talk, well look at how to build progressively and fully decoupled applications - passing data from a Drupal 8 back-end to a Vue.js front-end.
The demo code used in the talk is [available on GitHub](https://github.com/opdavies/blue-conf-2019 'View the demo code for this talk on GitHub.').

View file

@ -0,0 +1,29 @@
---
title: 'Deploying Drupal with Fabric'
description: How to use Fabric, a Python command line based library, to deploy your Drupal applications.
speakerdeck:
id: 40d1eca4bd484afc86295924fff5dd41
ratio: '1.77777777777778'
url: 'https://speakerdeck.com/opdavies/deploying-drupal-and-anything-else-with-fabric'
embed: '<script async class="speakerdeck-embed" data-id="" data-ratio="" src="//speakerdeck.com/assets/embed.js"></script>'
tags: [meetup, conference, php, fabric, drupal]
meta:
og:
title: Deploying Drupal with Fabric
description: "You've built your Drupal site, now learn how to deploy it with Fabric."
type: website
events:
- event: drupalcamp_dublin_17
date: 2017-10-20
time: '15:00 - 15:40'
- event: drupal_somerset
date: 2017-10-26
---
Youve built your website, and now you just need to deploy it. There are various ways that this could be done - from (S)FTP, to SCP and rsync, to running commands like “git pull” and “composer install” directly on the server (not recommended).
My favourite deployment tool of late is [Fabric][1] - a Python based command line tool for running commands locally as well as on remote servers. Its language and framework agnostic, and unopinionated so you define the steps and workflow that you need - from a basic few-step deployment to a full Capistrano style zero-downtime deployment.
This talk will cover some introduction to Fabric and how to write your own fabfiles, to then covering some examples and demos of different use case deployments for your Drupal project.
[1]: http://www.fabfile.org

View file

@ -0,0 +1,38 @@
---
title: Deploying PHP applications with Ansible, Ansible Vault and Ansistrano
description: How to use Ansible and Ansistrano to perform robust, secure deployments of your PHP applications.
speakerdeck:
id: c11fe635ed8f4741b35bf3ebe53e8323
ratio: '1.77777777777778'
url: https://speakerdeck.com/opdavies/deploying-php-applications-with-ansible-ansible-vault-and-ansistrano
video:
type: youtube
id: TmS0FIVwKQg
tags: [meetup, php, ansible, ansistrano]
events:
- event: drupal_bristol
date: 2019-01-23
- event: php_south_wales
date: 2019-07-23
- event: drupalcon_eu_19
date: 2019-10-30
- event: bristol_devops
date: 2020-01-30
url: https://www.meetup.com/Bristol-Cloud-Native-DevOps/events/266609627
- event: drupal_edinburgh
date: 2020-03-12
remote: true
url: https://www.meetup.com/Drupal-Edinburgh/events/267905594
- event: cms_philly_20
date: 2020-05-01
remote: true
- event: drupal_yorkshire
date: 2020-05-21
remote: true
---
Great! Youve built your website, and now you just need to deploy it. There are various ways that this could be done - from (S)FTP, to SCP and rsync, to running commands like `git pull` and `composer install` directly on the server which is not ideal.
As well provisioning and maintaining your server configuration and running commands, you can also use [Ansible](https://www.ansible.com) to deploy your PHP application - leveraging relevant Ansible modules such as Git and Composer, custom Ansible roles, [Ansible Vault](https://docs.ansible.com/ansible/latest/user_guide/vault.html) for managing secrets, and features such as idempotency out of the box to build a simple deployment playbook. We can then extend that and make it more robust by adding [Ansistrano](https://ansistrano.com) - a port of [Capistrano](https://capistranorb.com) - which adds extra features such as storing multiple builds for each project and the ability to roll-back if needed, customising your build steps using built-in hooks, multi-stage environments and more.
I've been using Ansible and Ansistrano to deploy a variety of PHP projects - including Drupal 7 & 8, Symfony, Laravel and Sculpin, as well as basic HTML websites, and found it to be very flexible and easy to install and use, and by the end of this talk we will have a fully working deployment playbook, deploying real code onto a real server.

View file

@ -0,0 +1,39 @@
---
title: Deploying PHP Applications with Fabric
description: How to use Fabric, a Python command line based library, to deploy your PHP applications.
speakerdeck:
id: c147618ce07546ca92f92983c52d6a41
ratio: '1.77777777777778'
url: https://speakerdeck.com/opdavies/deploying-php-applications-with-fabric
tags: [meetup, conference, php, fabric]
meta:
og:
title: Deploying PHP Applcations with Fabric
description: "You've built your PHP application, now learn how to deploy it with Fabric."
type: website
image:
url: /images/talks/deploying-php-fabric.png
width: 2560
height: 1440
type: image/png
events:
- event: nomad_php
date: 2017-04-20
time: '19:00 (CET)'
type: 'Lightning talk'
- event: phpsw
date: 2017-09-13
joindin: https://joind.in/talk/a5ff3
- event: phpnw_17
date: 2017-10-01
time: '09:00 - 09:45'
joindin: https://joind.in/talk/4e35d
---
Youve built your application, and now you just need to deploy it. There are various ways that this could be done from (S)FTP, to SCP and rsync, to running commands like “git pull” and “composer install” directly on the server (not recommended).
My favourite deployment tool of late is [Fabric][1] a Python based command line tool for running commands locally as well as on remote servers. Its language and framework agnostic, and unopinionated so you define the steps and workflow that you need from a basic few-step deployment to a full Capistrano style zero-downtime deployment.
This talk will cover some introduction to Fabric and how to write your own fabfiles, and then look at some examples of different use case deployments for your PHP project.
[1]: http://www.fabfile.org

View file

@ -0,0 +1,40 @@
---
title: Getting Started with Drupal 8 Module Development
description: How to build your first module for Drupal 8.
tags: [conference, php, drupal, drupalcamp, drupal-8]
tweets: yes
code: https://github.com/opdavies/dclondon16-d8-module
speakerdeck:
id: 0041804e52664d12a8e31cd118264813
ratio: '1.77777777777778'
url: https://speakerdeck.com/opdavies/getting-started-with-drupal-8-module-development
video:
type: youtube
id: qO_Wh5WE3VA
meta:
og:
title: Getting Started with Drupal 8 Module Development
image:
url: /images/talks/dclondon16.png
type: 'image/png'
height: 540
width: 960
events:
- event: drupalcamp_london_16
date: 2016-03-05
---
New to object-orientated PHP, Symfony or YAML, and want to get started building modules in Drupal 8? This is the session for you!
In this session, well cover:
- Where Drupal 8 modules are located, and how they are structured.
- How to build a simple module, including our own permissions and routes.
- How to add your own controller and service classes.
- What is the service/dependency injection container, and how do we use it?
- How we can use tools such as PhpStorm and Drupal Console to speed up the process.
What we wont be covering:
- Automated testing in PHPUnit or Simpletest.
- Adding third party libraries and external dependencies via Composer.

View file

@ -0,0 +1,55 @@
---
title: Having Fun with Drupal 8, PHP libraries and the Drupal.org API
description: A crash course in developing PHP packages and Drupal 8 modules, based on the Drupal.org API.
speakerdeck:
id: 6e42ae9620bb4e91b3955f8c30d66934
ratio: '1.77777777777778'
image:
url: /images/talks/having-fun-drupalorg-api.png
width: 2000
height: 1125
type: image/png
tags:
- drupal
- drupal-8
- drupalorg
- php
video:
type: youtube
id: JyDjC7gGDpU
events:
- event: drupal_bristol
date: 2018-04-18
joindin: https://joind.in/talk/14851
- event: drupalcamp_london_19
date: 2019-03-03
time: '12:05 - 12:50'
---
A overview and demo of some of the open source projects that Ive been working on lately that are based on information from the Drupal.org API, including a PHP library for the API itself as well as some Drupal 8 modules that use it.
This session will cover various topics including:
- Why would you want to separate your code into reusable packages
- An overview of how to structure a PHP package (e.g. an API for interacting with Drupal.org)
- How to add a PHP package as a dependency for a Drupal module using Composer
- How to create routes and services, and use dependency injection in Drupal 8
- How to use Drupal to configure the packages
- How to increase performance and reliability by using Drupal's cache system to store API results
## Links
- [Drupal.org API library][2]
- [Drupal.org API documentation][3]
- [Laravel Collections][4]
- Example module: [Drupal.org project statistics][5]
- Example module: [Drupalversary][6]
- Talk: [Using Laravel Collections outside Laravel][7]
[0]: https://www.drupalbristol.org.uk
[2]: https://github.com/opdavies/drupalorg-api-php
[3]: https://www.drupal.org/drupalorg/docs/api
[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/

View file

@ -0,0 +1,19 @@
---
title: 'Drupal 8: Rejoining the Herd'
description: A talk highlighting some of the recent technical and non-technical changes in Drupal 8.
tags: [conference, php, drupal, drupal-8]
speakerdeck:
id: 440fd6592f474741bc606c96bc32c104
ratio: '1.37081659973226'
url: https://speakerdeck.com/opdavies/drupal-rejoining-the-herd
events:
- event: php_south_coast_16
date: 2016-06-11
joindin: https://joind.in/talk/41d0f
---
[Drupal 8][0] was (finally) released on November 19th 2015, after almost 4 years of work and code commits by over 3,200 different contributors. Whilst its pretty much the same as the Drupal that we know and, hopefully, love, a lot has changed behind the scenes and under the hood!
In this talk, I'll highlight some of the new features and improvements in Drupal 8, and discuss some of the benefits to Drupal site builders, themers, and module developers. I'll also talk about some of the non-technical changes and the cultural shift from "not invented here" to "proudly found elsewhere", and how we are rejoining the PHP herd.
[0]: https://www.drupal.org/8

25
source/_talks/drupal-8.md Normal file
View file

@ -0,0 +1,25 @@
---
title: Drupal 8
description:
A lightning talk presented to the PHPSW user group, highlighting some of the
relevant changes in Drupal 8.
speakerdeck:
url: https://speakerdeck.com/opdavies/drupal-8
id: 46ba4ba577d94a32b7abdade610ceb69
ratio: '1.29456384323641'
video:
type: youtube
id: 36zCxPrOOzM
tags: [meetup, phpsw, drupal, drupal-8]
tweets: yes
events:
- event: phpsw
date: 2015-04-08
---
This was a ten minute lightning talk, designed to highlight the major changes
coming in Drupal 8.
I categorised the technical changes into groups for site builders, developers
and themers, and also highlighted the cultural shift from "not invented here" to
"proudly found elsewhere" and the benefits that brings.

View file

@ -0,0 +1,23 @@
---
title: Drupal VM Generator
description: Announcing the Drupal VM Generator CLI tool.
type: Lightning talk
code: https://github.com/opdavies/drupal-vm-generator
tags: [drupal-vm, drupal-vm-generator, meetup, symfony]
speakerdeck:
id: a27ee1d2bfed4a209dc395fa455acb41
ratio: '1.37081659973226'
url: https://speakerdeck.com/opdavies/bristol-dug-drupal-vm-generator
video:
type: youtube
id: U1pbKAAO2Wo
events:
- event: nwdug
date: 2016-03-08
- event: drupal_bristol
date: 2016-04-02
---
An short talk about the [Drupal VM Generator][1] project.
[1]: https://github.com/opdavies/drupal-vm-generator

View file

@ -0,0 +1,24 @@
---
title: Drupal VM, Meet Symfony Console
description: How to develop command line applications using Symfony Console, using the Drupal VM CLI as an example.
tags: [conference, php, drupal-vm, symfony]
speakerdeck:
id: 56c79770f73f4e47a542a30243437c49
ratio: '1.37081659973226'
url: https://speakerdeck.com/opdavies/drupal-vm-meet-symfony-console
image: drupal-vm-meet-symfony-console.png
events:
- event: drupalcamp_bristol_16
date: 2016-07-23
---
_TL;DR - Come and learn about Symfony Console, with examples from a real-world
project._
The [Drupal VM Generator][2] is a CLI application, built on [Symfony Console][0], that generates configuration files for [Drupal VM][1] based on personal settings and user interaction.
After an introduction to Drupal VM itself and the Drupal VM Generator, well jump into the code and see how Symfony Console applications are structured, how to write new commands, and how to integrate additional libraries like Guzzle, Twig and other Symfony components - whilst referencing code from the Drupal VM Generator project.
[0]: http://symfony.com/doc/current/components/console/introduction.html
[1]: https://www.drupalvm.com
[2]: https://www.drupalvmgenerator.com

View file

@ -0,0 +1,16 @@
---
title: "Drupal.org in 2015: What's Coming Next"
description: A retrospective of the Drupal Associations work in 2014 and a look forward to what well be working on in 2015.
tags: [conference, drupalcamp, drupalcamp-london, drupal-association]
speakerdeck:
id: 0cf8d7b647c94ae289e9db2b46a9e8f2
ratio: '1.77777777777778'
url: https://speakerdeck.com/opdavies/drupal-dot-org-in-15
events:
- event: drupalcamp_brighton_15
date: 2015-01-18
- event: drupalcamp_london_15
date: 2015-02-28
---
A retrospective of the Drupal Associations work in 2014 and a look forward to what well be working on in 2015.

View file

@ -0,0 +1,14 @@
---
title: drush make drupalbristol
description: How to Drush Make to build your Drupal websites.
speakerdeck:
id: 42605700f102013198de5a5f6f23ab67
ratio: '1.29456384323641'
url: https://speakerdeck.com/opdavies/drush-make-drupalbristol
tags: [meetup, drupal, drupal_bristol, drush, drush-make]
events:
- event: drupal_bristol
date: 2014-08-19
---
An introduction to Drush Make and how to use it to build reusable custom installation profiles or entire websites.

View file

@ -0,0 +1,35 @@
---
title: Getting (Your Data) Into Drupal 8
description: An overview of Drupals Migrate functionality, and a look at how to write your own migrations.
speakerdeck:
id: 63e5dfce996e46699e304d50e896477b
ratio: '1.77777777777778'
url: 'https://speakerdeck.com/opdavies/getting-your-data-into-drupal-8-drupal_bristol'
video:
type: youtube
id: jtmARTuYhp8
tags: [drupalcamp, migration, drupal-8]
meta:
og:
title: Getting (Your Data) into Drupal 8
description: 'How I migrated the Drupal Bristol website onto Drupal 8.'
type: website
image:
url: /images/talks/getting-your-data-into-drupal-8.png
width: 2560
height: 1440
type: image/png
use: [talks]
events:
- event: drupal_bristol
date: 2017-01-18
- event: drupalcamp_london_17
date: 2017-03-04
time: '12:05 - 12:50'
---
If youve moved a site from Drupal 6 to 7, the chances are that youve either used the upgrade path to update your old site in-place, or you built a new site from scratch and used the Migrate module from contrib to migrate your data from the old database.
In Drupal 8, things have changed as theres no upgrade path from Drupal 7 and the Migrate module has been moved into core, though there are still migration related modules available in contrib.
This talk will look at the core Migrate module and how it implements Drupal 8 features such as YAML and the plugin and configuration systems, and how to write your own migrations to get your data into Drupal 8.

18
source/_talks/git-flow.md Normal file
View file

@ -0,0 +1,18 @@
---
title: Never Commit to Master - An Introduction to Git Flow
description: An introduction to and demonstration of the Git Flow branching model.
speakerdeck:
id: 201559e0f103013198dd5a5f6f23ab67
ratio: '1.29456384323641'
url: https://speakerdeck.com/opdavies/never-commit-to-master-an-introduction-to-git-flow
video:
type: youtube
id: T-miCpHxfds
tags: [conference, drupalcamp, drupalcamp-london, git, git-flow]
tweets: yes
events:
- event: drupalcamp_london_14
date: 2014-03-01
---
An introduction to the Git Flow branching model and the git-flow plugin, and how Ive used them to manage a Drupal development project.

View file

@ -0,0 +1,27 @@
---
title: Goodbye Drush Make. Hello Composer!
description: How to use Composer to manage your Drupal applications.
tags: ['meetup', 'drupal', 'composer']
speakerdeck:
id: 1c1e0e129ab34816bd4c4edb5f6642c2
ratio: '1.37081659973226'
url: https://speakerdeck.com/opdavies/goodbye-drush-make-hello-composer
video:
type: youtube
id: ZL2FtRTX9Y8
events:
- event: drupal_bristol
date: 2016-11-17
- event: php_uk_18
date: 2018-02-16
time: '14:40 - 15:40'
joindin: https://joind.in/talk/650ab
---
One of the main outcomes of Drupal 8 was “getting off the island” with third-party code included in core and adopting modern best practices from the wider PHP ecosystem - including [Composer][1], PHPs dependency manager.
Included to manage cores dependencies, it has also gained traction in the contrib space with the creation of the Drupal Composer project, and the Drupal Packagist and now native endpoints on Drupal.org exposing contrib project metadata.
In this session, I'll show how to fully manage a Drupal 7 or Drupal 8 website including contributed modules and themes and external libraries with Composer.
[1]: https://getcomposer.org

View file

@ -0,0 +1,18 @@
---
title: It All Started With A Patch
description: A lightning talk on how and why to get involved with open source.
type: Lightning talk
tags: [meetup, phpsw, open-source]
speakerdeck:
id: 5862bdecb7a24cfaa5fc844696fafa0c
ratio: '1.37081659973226'
url: https://speakerdeck.com/opdavies/it-all-started-with-a-patch-phpsw
video:
type: youtube
id: 5FYMRR61sdo
events:
- event: phpsw
date: 2017-02-08
---
A crash course of why and how to get involved with open source.

View file

@ -0,0 +1,22 @@
---
title: Modern Drupal Development with Composer
description: A lightning talk on how to use Composer to manage your Drupal projects.
type: Lightning talk
tags: ['meetups', 'phpsw', 'drupal', 'composer']
speakerdeck:
id: 7a1358502526425a9cfd288f85fb32f3
ratio: '1.37081659973226'
url: https://speakerdeck.com/opdavies/modern-drupal-development-with-composer
video:
type: youtube
id: Yi_FPI3xHwc
events:
- event: phpsw
date: 2016-11-09
---
Building a Drupal application? You no longer need to download archives to add new modules or update core, or deal with Drupal specific tools to manage your codebase.
With Drupal "getting off the island" there has been an increase in the adoption of common PHP tools within the Drupal ecosystem.
In this lightning talk, Ill show how to build a Drupal application using Composer for dependency management.

View file

@ -0,0 +1,27 @@
---
title: Out of the Box Initiative Update
description: An update on Drupals "out of the box" initiative, and cores new Umami installation profile.
speakerdeck:
id: 3f66c48653f44ed4867fc3cc05c1db06
ratio: '1.77777777777778'
url: https://speakerdeck.com/opdavies/out-of-the-box-initiative-update
video:
type: youtube
id: ~
tags: [meetup, drupal]
events:
- event: drupal_bristol
date: 2019-03-27
---
From the [DrupalCamp London website](https://drupalcamp.london/session/out-box-initiative-update):
> Since the last DrupalCamp London, the Umami Demo install profile is now one of the options shown to anyone installing Drupal. But this doesn't mean we've finished.
> There are many existing Drupal features that we want to showcase, and new features stabilising with each minor release. Join the Out of the Box initiative leads Keith Jay (kjay) and Gareth Goodwin (smaz) for this session, where we'll talk about:
> - Where we are, and how we got here
- Our targets for inclusion in Drupal 8.7.0
- How you can help!
- Plans for the more distant future

View file

@ -0,0 +1,13 @@
---
title: So, what is this Drupal thing?
description: My first talk, where I talk about Drupal, what it is and what it can do.
video:
type: vimeo
id: 49827006
tags: [meetup, drupal, unified-diff]
events:
- event: unified_diff
date: 2012-09-05
---
My very first talk, where I talk about Drupal, what it is and what it can do.

View file

@ -0,0 +1,53 @@
---
title: Taking Flight with Tailwind CSS
description: An introduction to the utility-first approach to writing CSS with a focus on the Tailwind CSS framework.
speakerdeck:
id: 10ca51f23560443d83b898a92929b4b3
ratio: '1.77777777777778'
url: https://speakerdeck.com/opdavies/taking-flight-with-tailwind-css
video:
type: youtube
id: A-EUdvSAi_I
tags: [css, tailwind, meetup]
events:
- event: drupal_bristol
date: 2018-01-17
- event: php_south_wales
date: 2018-07-31
- event: wpchelt
date: 2019-04-17
- event: wordcamp_bristol_2019
date: 2019-05-18
- event: blue_conf_19
date: 2019-06-07
- event: cms_philly_20
date: 2020-05-01
remote: true
meta:
og:
title: Taking Flight with Tailwind CSS
description: An introduction to utility CSS and Tailwind.
type: website
image:
url: '/images/talks/taking-flight-tailwind.jpg'
width: 2560
height: 1440
type: 'image/png'
---
An introduction to utility class and component based styling, and how to soar with [Tailwind CSS][1].
Things well cover:
- Advantages and disadvantages to utility based styling and Tailwind.
- How to install Tailwind and add it to your build process using tools such as Symfony Encore and Laravel Mix.
- How to configure and customise Tailwind for your project.
- How to promote repeating classes into re-usable components for better maintainability.
- Strategies to control the file size, and using external tools like PurgeCSS.
Also, if time allows:
- How to extend Tailwind and add extra classes with community written plugins.
- How to write and test your own custom plugins.
[1]: https://tailwindcss.com

View file

@ -0,0 +1,45 @@
---
title: TDD - Test Driven Drupal
description: How to write automated tests for Drupal, and how to create a new Drupal module using test driven development.
speakerdeck:
id: 088cb18033064f5cb18d1079795294a1
ratio: '1.77777777777778'
url: 'https://speakerdeck.com/opdavies/tdd-test-driven-drupal'
video:
type: youtube
id: 3AUhpkxZ7DQ
image:
url: /images/talks/test-driven-drupal-development.png
width: 2560
height: 1440
type: image/png
use: [talks]
events:
- event: drupalcamp_london_17
date: 2017-03-04
time: '16:15 - 17:00'
- event: drupalcamp_dublin_17
date: 2017-10-21
time: '12:00 - 12:40'
- event: drupal_bristol
date: 2017-11-22
- event: drupal_somerset
date: 2018-06-14
- event: drupal_dev_days_18
date: 2018-07-05
time: '12:15 - 13:00'
- event: drupalcamp_london_19
date: 2019-03-02
time: '14:00 - 14:45'
- event: nwdug
date: 2020-05-12
remote: true
---
{% block content %}
Testing is important. Why? It allows developers to add new features and edit and refactor existing code without the worry of adding regressions, reduces the reliance on manual testing to discover bugs, and by taking a test driven approach, your implementation code is leaner as you only write what is needed for your tests to pass.
Drupal 7 includes the SimpleTest module for unit and functional testing, whilst Drupal 8 also includes and supports PHPUnit - the defacto PHP testing framework, used by other PHP projects including Symfony and Laravel - making it easier for people to test their code. And with testing being one of the Drupal core gates with tests needing to be included with every new feature or bug fix, and cores 100% pass rate policy, testing has become an essential skill when contributing to core, or when working on your own projects. In this talk, well cover the methodology and terminology involved with automated testing, and then take a test driven approach to creating a new Drupal module.
{% endblock %}

View file

@ -0,0 +1,23 @@
---
title: Test Drive Twig with Sculpin
description: With Drupal 8 just around the corner, see how you can develop your Twig skills with Sculpin - a static site generator based on Symfony components and Twig.
speakerdeck:
id: 54589d2e50a3476a9a75aed809e9edf1
ratio: '1.77777777777778'
url: https://speakerdeck.com/opdavies/test-drive-twig-with-sculpin
code: https://github.com/opdavies/sculpin-demo
tags: [conference, drupalcamp, drupalcamp-north, sculpin, twig]
tweets: yes
events:
- event: drupalcamp_north_15
date: 2015-07-25
---
[Sculpin][1] is a static site generator written in PHP, and based on [Symfony components][2]. It uses [YAML][3] and [Twig][4], which makes it very appealing to Drupal people wanting to learn these in preparation for Drupal 8.
This session covered how to install Sculpin itself, as well as how to use it to build a static site from Markdown, HTML and Twig templates. We also covered Sculpin concepts such as content types, themes and partials, and Twig layouts, blocks and inheritance, as well as some tips and tricks that I've found whilst developing with Sculpin.
[1]: https://sculpin.io
[2]: http://symfony.com/doc/current/components/index.html
[3]: http://yaml.org
[4]: http://twig.sensiolabs.org

View file

@ -0,0 +1,19 @@
---
title: Things you should know about PHP
description: An introduction to PHP, presented to the Swansea Software Development Community (SSDC) meetup.
speakerdeck:
id: fe360f1030f34bdb9eb14cdab907bb3c
ratio: '1.37081659973226'
tags:
- meetup
- php
meta:
og:
image:
url: /images/talks/things-you-should-know-about-php.png
events:
- event: ssdc
date: 2019-01-28
---
An introduction to PHP, presented to the Swansea Software Development Community (SSDC) meetup.

View file

@ -0,0 +1,23 @@
---
title: Using Illuminate Collections... Outside Laravel
description: How to include and use Laravels Illuminate Collections in your non-Laravel PHP projects.
speakerdeck:
id: 76f1718a75a74940b0b028aac8b9f78b
ratio: '1.77777777777778'
url: https://speakerdeck.com/opdavies/using-laravel-collections-dot-dot-dot-outside-laravel-php-south-wales-august-2018
video:
type: youtube
id: 1l0kO-iaN_o
tags: [nomad-php, lightning-talk, laravel, collections]
type: Lightning talk
events:
- event: nomad_php
date: 2017-12-21
time: 19:00 CET
- event: php_south_wales
date: 2018-08-28
---
Laravel's Illuminate Collections are a powerful object-orientated way of interacting with PHP arrays, but did you know that they can be used outside of Laravel, in any PHP project?
This short talk shows how we can use Composer to include Illuminate Collections within a non-Laravel project and put them to use within your own code.