Group pages within their own directory
Add `pages` as it's own content type, and move all page content into the appropriate directory. Any references to `layout` in the YAML front matter has also been removed as it's implied by the content type. Except for `about.md` which does explicity use a different layout.
This commit is contained in:
parent
a9132738af
commit
d97621c42c
18 changed files with 2 additions and 16 deletions
6
source/_pages/404.md
Normal file
6
source/_pages/404.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: Page Not Found
|
||||
permalink: /404.html
|
||||
use: [posts]
|
||||
---
|
||||
Please [contact me](/contact/) and let me know.
|
26
source/_pages/about.md
Normal file
26
source/_pages/about.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
---
|
||||
layout: front
|
||||
title: About Me
|
||||
meta:
|
||||
og:
|
||||
title: 'Oliver Davies - Full Stack Developer, System Administrator, PHP and Drupal specialist'
|
||||
description: 'The personal website and blog of Oliver Davies, a Full Stack Developer and System Administrator from Wales, UK.'
|
||||
type: website
|
||||
permalink: /
|
||||
---
|
||||
<div class="mb-4 w-32"><img src="/images/me-precedent.jpg" alt="Picture of Oliver" class="rounded-full border border-gray"/></div>
|
||||
|
||||
Hi, I'm Oliver Davies (aka [opdavies](https://www.google.com/#q=opdavies)).
|
||||
I’m a {{ site.work.role }} at [{{site.companies[site.work.company].name}}]({{site.companies[site.work.company].url}}) and a part-time freelance Web Developer based in Wales, UK.
|
||||
|
||||
I’ve been a Developer since 2007 and specialise in using Drupal, Symfony and Vue.js, though I also use other technologies including Laravel and Sculpin.
|
||||
I use Ansible for server provisioning and application deployments.
|
||||
|
||||
I’m an [Acquia certified](https://certification.acquia.com/user/1647756) Drupal 8 Grand Master, and Webmaster and Documentation Maintainer on [Drupal.org](https://www.drupal.org).
|
||||
I was previously a Developer for the [{{site.companies.drupal_association.name}}]({{site.companies.drupal_association.url}}).
|
||||
|
||||
I regularly [give talks](/talks) at user groups and conferences,
|
||||
and am an organiser of the [{{site.events.php_south_wales.name}}]({{site.events.php_south_wales.url}}) user group.
|
||||
|
||||
I enjoy contributing to open source, and maintain a variety of different projects.
|
||||
You can see these on my [Drupal.org]({{site.drupalorg.url}}) and [GitHub]({{site.github.url}}) accounts.
|
9
source/_pages/accessibility.md
Normal file
9
source/_pages/accessibility.md
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
title: Accessibility
|
||||
use: [posts]
|
||||
---
|
||||
# Accessibility
|
||||
|
||||
I have made as much effort as possible to make this website accessible to all users.
|
||||
|
||||
If you have any suggestions to improve the site, please [contact me](/contact/).
|
16
source/_pages/company-information.md
Normal file
16
source/_pages/company-information.md
Normal file
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
title: Company Information
|
||||
meta:
|
||||
description: 'Company information for Oliver Davies Ltd.'
|
||||
use: [posts]
|
||||
---
|
||||
# Company Information
|
||||
|
||||
Company name
|
||||
: Oliver Davies Ltd (previously Oliver Davies Web Development Ltd)
|
||||
|
||||
Registered address
|
||||
: 106 Rowan Way, Malpas, Newport, NP20 6JN
|
||||
|
||||
Company number
|
||||
: 8017706
|
6
source/_pages/contact-thanks.md
Normal file
6
source/_pages/contact-thanks.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
title: Thanks!
|
||||
permalink: contact/thanks/
|
||||
use: [posts]
|
||||
---
|
||||
Your email has been sent. You should receive a response within the next working day.
|
42
source/_pages/contact.html.twig
Normal file
42
source/_pages/contact.html.twig
Normal file
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
title: Contact
|
||||
use: [posts]
|
||||
honeypot_field: Qr4W7oB25C
|
||||
---
|
||||
{% block content %}
|
||||
<div class="mt-2 mb-6">
|
||||
<p>To send me an email, complete the form below.</p>
|
||||
</div>
|
||||
|
||||
<form name="contact" method="POST" netlify-honeypot="{{ page.honeypot_field }}" data-netlify="true" class="spaced-y-4">
|
||||
<div class="spaced-y-1">
|
||||
<label for="name" class="block">Name</label>
|
||||
<input type="text" class="w-full p-2 border border--grey" id="name" name="name" required />
|
||||
</div>
|
||||
|
||||
<div class="spaced-y-1">
|
||||
<label for="email" class="block">Email</label>
|
||||
<input type="email" class="w-full p-2 border border--grey" id="email" name="email" required />
|
||||
</div>
|
||||
|
||||
<div class="spaced-y-1">
|
||||
<label for="subject" class="block">Subject</label>
|
||||
<input type="text" class="w-full p-2 border border--grey" id="subject" name="subject" required />
|
||||
</div>
|
||||
|
||||
<div class="spaced-y-1">
|
||||
<label for="message" class="block">Message</label>
|
||||
<textarea id="message" class="w-full p-2 border border--grey" rows="5" name="message" required></textarea>
|
||||
</div>
|
||||
|
||||
<p class="hidden">
|
||||
<label>Don’t fill this out if you're human: <input name="{{ page.honeypot_field }}" /></label>
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<button class="button" type="submit">Send email</button>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="_next" value="{{ site.url }}/contact/thanks" />
|
||||
</form>
|
||||
{% endblock %}
|
22
source/_pages/dev.md
Normal file
22
source/_pages/dev.md
Normal file
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
title: Developing this Website (WIP)
|
||||
---
|
||||
This site is built with [Sculpin][], a static site generator written in PHP, that generates a static HTML website from Markdown files and Twig templates. You can see the [source code on GitHub].
|
||||
|
||||
## Extending Sculpin
|
||||
|
||||
- Custom Twig extensions
|
||||
- https://github.com/opdavies/sculpin-twig-markdown-bundle
|
||||
- https://github.com/opdavies/sculpin-gist-embed-bundle
|
||||
- https://github.com/opdavies/sculpin-content-generator-bundle
|
||||
|
||||
## Front End
|
||||
|
||||
On the front-end, I have used [PostCSS][] rather than Sass or Less, and [Tailwind CSS] for all of the styling, and some [Vue.js][] for the navbar and toggling the navigation menu on mobile. These are compiled with [Webpack Encore][] - a wrapper around Webpack, provided by Symfony.
|
||||
|
||||
[PostCSS]: https://postcss.org
|
||||
[Sculpin]: https://sculpin.io
|
||||
[source code on GitHub]: https://github.com/opdavies/oliverdavies.uk
|
||||
[Tailwind CSS]: https://tailwindcss.com
|
||||
[Vue.js]: https://vuejs.org
|
||||
[Webpack Encore]: https://github.com/symfony/webpack-encore
|
175
source/_pages/experience.html.twig
Normal file
175
source/_pages/experience.html.twig
Normal file
|
@ -0,0 +1,175 @@
|
|||
---
|
||||
title: Experience
|
||||
use: [posts]
|
||||
experiences:
|
||||
- company: horse_country
|
||||
location: Cwmbran, Wales
|
||||
role: Web Developer
|
||||
start: 2010
|
||||
end: 2011
|
||||
description: |
|
||||
Maintaining and adding new features to the Horse & Country TV website (Drupal 6).
|
||||
|
||||
- company: proctors
|
||||
location: Bristol, England
|
||||
role: 'PHP Developer'
|
||||
start: 2011
|
||||
end: 2012
|
||||
description: |
|
||||
Website development, mainly with Drupal and PHP, including the agency’s first Drupal 7 project.
|
||||
|
||||
- company: nomensa
|
||||
location: Bristol, England
|
||||
role: 'Contract Drupal Developer / Application Developer & System Administrator'
|
||||
start: 2012
|
||||
end: 2013
|
||||
description: |
|
||||
Drupal 7 website development and Linux server administration.
|
||||
|
||||
I originally started as a contractor, and later took a staff role.
|
||||
|
||||
- company: precedent
|
||||
location: Cardiff, Wales
|
||||
role: Senior Drupal Developer
|
||||
start: 2013
|
||||
end: 2014
|
||||
description: |
|
||||
Drupal 7 website development, including site building, theming, module development, data migration and server configuration.
|
||||
|
||||
- company: drupal_association
|
||||
role: Drupal.org Developer
|
||||
location: Remote
|
||||
start: 2014
|
||||
end: July 2015
|
||||
description: |
|
||||
Maintaining and improving Drupal.org - the home of the Drupal community.
|
||||
|
||||
Speaking at user groups and DrupalCamps to promote the Drupal Association.
|
||||
|
||||
- company: microserve
|
||||
location: Bristol, England
|
||||
role: Senior Drupal Developer
|
||||
start: July 2015
|
||||
end: November 2015
|
||||
description: |
|
||||
Full-stack Drupal development, focussing on data migration.
|
||||
|
||||
Lead Developer of the [road.cc](http://road.cc) rebuild project onto Drupal 7, including working with non-Drupal PHP applications and utilising of Symfony components, and interacting with Drupal via REST.
|
||||
|
||||
Community and contribution advocate.
|
||||
|
||||
- company: cti
|
||||
role: Lead Drupal Developer
|
||||
location: Remote
|
||||
start: November 2015
|
||||
end: May 2016
|
||||
description: |
|
||||
Working on various Drupal 7 projects for clients including Greater London Authority (http://www.london.gov.uk), British Land and British Council, as well as various retainer contracts.
|
||||
|
||||
Working on internal Drupal 8 learning initiatives, focussing on custom module development and data migration.
|
||||
|
||||
Initial development of a CLI application for generating new and auditing existing codebases to ensure consistency across projects. This uses various Symfony components - mainly the Console and Filesystem components.
|
||||
|
||||
- company: appnovation
|
||||
location: Cardiff, Wales
|
||||
role: Senior Drupal Developer
|
||||
start: May 2016
|
||||
end: March 2017
|
||||
description: |
|
||||
Drupal 7 and 8 site building, custom module development and theming.
|
||||
|
||||
Part of various pre-sales teams, including the company’s first UK Drupal 8 project and first FTSE 100 client.
|
||||
|
||||
- company: develop_me
|
||||
location: Bristol, UK
|
||||
role: Coding Fellowship Mentor
|
||||
start: May 2018
|
||||
end: March 2019
|
||||
|
||||
- company: microserve
|
||||
location: Bristol, England
|
||||
role: Senior Drupal Developer
|
||||
start: March 2017
|
||||
end: May 2019
|
||||
description: |
|
||||
Drupal 8 site building, custom module development, theming, data migrations.
|
||||
|
||||
Drupal 7 site building, custom module development, theming.
|
||||
|
||||
First Acquia certified Drupal 8 Developer and back-end specialist.
|
||||
|
||||
- company: freelance
|
||||
location: Remote
|
||||
role: 'Web Developer & System Administrator'
|
||||
start: 2007
|
||||
end: ~
|
||||
featured: true
|
||||
description: |
|
||||
Working on Drupal and Symfony development, maintenance and support projects in my spare time.
|
||||
|
||||
Administration of Debian, Ubuntu and CentOS servers, and configuration using Puppet, or more recently, Ansible.
|
||||
|
||||
- company: inviqa
|
||||
location: Remote
|
||||
role: Senior Engineer
|
||||
start: May 2019
|
||||
end: ~
|
||||
---
|
||||
{% macro roleText(experience) %}
|
||||
{{- experience.role }}
|
||||
from {{ experience.start }}
|
||||
to {{ experience.end|default('Present') -}}
|
||||
{%- if experience.location %}
|
||||
({{ experience.location }})
|
||||
{%- endif %}.
|
||||
{% endmacro %}
|
||||
|
||||
{% macro companyUrl(site, company) %}
|
||||
{{ company.url ~ '?utm_source=' ~ site.short_url ~ '&utm_medium=experience' }}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro companyLogoUrl(company) %}
|
||||
{{- '/images/experience/' ~ company.logo -}}
|
||||
{% endmacro %}
|
||||
|
||||
{% block content %}
|
||||
{% import _self as helpers %}
|
||||
|
||||
<div class="spaced-y-12">
|
||||
{% for experience in page.experiences|reverse %}
|
||||
{% set company = site.companies[experience.company] %}
|
||||
|
||||
<div>
|
||||
<div class="flex flex-row justify-between">
|
||||
<div>
|
||||
<h2 class="text-lg mb-0">{{ company.name }}</h2>
|
||||
|
||||
<div class="mb-4">
|
||||
{% if company.url -%}
|
||||
<a class="inline-block text-sm mb-1" href="{{ helpers.companyUrl(site, company) }}">
|
||||
{{- company.url -}}
|
||||
</a>
|
||||
{%- endif %}
|
||||
|
||||
<div class="text-sm text-gray-600">
|
||||
{{ helpers.roleText(experience) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if experience.description %}
|
||||
<div class="markup spaced-y-4">
|
||||
{{ experience.description|markdown }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if company.logo %}
|
||||
<div class="flex-none mt-2 mb-4 ml-4 w-16 sm:w-24 lg:w-32">
|
||||
<img src="{{ helpers.companyLogoUrl(company) }}" alt="{{ company.name }} logo">
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
168
source/_pages/opensource.html.twig
Normal file
168
source/_pages/opensource.html.twig
Normal file
|
@ -0,0 +1,168 @@
|
|||
---
|
||||
title: Open Source
|
||||
projects:
|
||||
drupal:
|
||||
- name: Accessibility (a11y) Checklist
|
||||
description: Similar to the SEO Checklist and QA Checklist modules, this module provides a checklist of accessibilty-related modules and tasks to perform on a Drupal site.
|
||||
url: https://www.drupal.org/project/a11y_checklist
|
||||
versions: [7]
|
||||
|
||||
- name: Block ARIA Landmark Roles
|
||||
description: Inspired by Block Class, this module adds additional elements to the block configuration forms that allow users to assign a ARIA landmark role to a block.
|
||||
url: https://www.drupal.org/project/block_aria_landmark_roles
|
||||
versions: [7]
|
||||
|
||||
- name: Breadcrumbs by Path
|
||||
description: A light-weight module which simply builds breadcrumb trails based on a URL alias.
|
||||
url: https://www.drupal.org/project/breadcrumbs_by_path
|
||||
versions: [7]
|
||||
|
||||
- name: Collection class
|
||||
description: Integrates Laravel’s Collection class into Drupal 7.
|
||||
url: https://www.drupal.org/project/collection_class
|
||||
versions: [7]
|
||||
|
||||
- name: Comment Hide Subject
|
||||
description: Hides the comment subject if the "Allow comment title" checkbox is unchecked for that node type.
|
||||
url: https://www.drupal.org/project/comment_hide_subject
|
||||
versions: [7]
|
||||
|
||||
- name: Commerce Cart Empty Paths
|
||||
description: This module allows site administrators to define multiple paths, and when a user visits a non-declared page, their shopping cart is emptied.
|
||||
url: https://www.drupal.org/project/commerce_cart_empty_paths
|
||||
versions: [7]
|
||||
|
||||
- name: Copyright Block
|
||||
description: Creates a block that allows you to configure a copyright message that automatically updates using the current year from the server that your site is hosted on.
|
||||
url: https://www.drupal.org/project/copyright_block
|
||||
versions: [7, 8]
|
||||
|
||||
- name: Image Style Class
|
||||
description: Adds classes onto each rendered image showing the image style name.
|
||||
url: https://www.drupal.org/project/image_style_class
|
||||
versions: [7]
|
||||
|
||||
- name: Mapify
|
||||
description: A module to make the implementation of mapify.js into Drupal 7 relatively simple.
|
||||
url: https://www.drupal.org/project/mapify
|
||||
versions: [7]
|
||||
|
||||
- name: Node Comment Block
|
||||
description: This module moves the comments for a node into a moveable block.
|
||||
url: https://www.drupal.org/project/node_comment_block
|
||||
versions: [7]
|
||||
|
||||
- name: Null User
|
||||
description: Adds a NullUser class for simpler code with less conditions.
|
||||
url: https://www.drupal.org/project/null_user
|
||||
versions: [8]
|
||||
|
||||
- name: Override Node Options
|
||||
description: Allows permissions to be set to each field within the Authoring information and Publishing options field sets on the node form.
|
||||
url: https://www.drupal.org/project/override_node_options
|
||||
versions: [7, 8]
|
||||
|
||||
- name: Pathauto Menu Link
|
||||
description: Forces an update of the Pathauto-generated path when a menu link item has been updated. Useful if you use parent menu links to generate paths.
|
||||
url: https://www.drupal.org/project/pathauto_menu_link
|
||||
versions: [7, 8]
|
||||
|
||||
- name: Private Message Queue
|
||||
description: Adds the ability to queue private messages for sending.
|
||||
url: https://www.drupal.org/project/private_message_queue
|
||||
versions: [8]
|
||||
|
||||
- name: 'Rules Block/Unblock User'
|
||||
description: Adds rules events, as well as some default rules, for when a user account is blocked or unblocked.
|
||||
url: https://www.drupal.org/project/rules_block_user
|
||||
versions: [7]
|
||||
|
||||
- name: SpeakerDeck Field
|
||||
description: Adds a field for embedding content from SpeakerDeck.
|
||||
url: https://www.drupal.org/project/speakerdeck_field
|
||||
versions: [8]
|
||||
|
||||
- name: System User
|
||||
description: Adds the ability to identify and retrieve system users.
|
||||
url: https://www.drupal.org/project/system_user
|
||||
versions: [7, 8]
|
||||
|
||||
- name: Toggle Optional Fields
|
||||
description: Creates a simplified node form by allowing for the hiding and toggling of optional fields.
|
||||
url: https://www.drupal.org/project/toggle_optional_fields
|
||||
versions: [7]
|
||||
|
||||
- name: Webform ARIA
|
||||
description: Adds ARIA support to forms created using the Webform module.
|
||||
url: https://www.drupal.org/project/webform_aria
|
||||
versions: [7]
|
||||
|
||||
- name: WP Blog Migrate
|
||||
description: Convert your existing Drupal blog into the WP Blog module by re-assigning the content type for existing nodes and moving any existing tags into the WP Blog taxonomy vocabulary.
|
||||
url: https://www.drupal.org/project/wp_blog_migrate
|
||||
versions: [7]
|
||||
|
||||
sculpin:
|
||||
- name: oliverdavies.uk
|
||||
description: The source code for this website, which is built with Sculpin.
|
||||
url: https://github.com/opdavies/oliverdavies.uk
|
||||
|
||||
- name: Sculpin Content Generator Bundle
|
||||
description: Provides new Sculpin commands for generating new content.
|
||||
url: https://github.com/opdavies/sculpin-content-generator-bundle
|
||||
|
||||
- name: Sculpin Gist Bundle
|
||||
description: Allows for embedding GitHub Gists into a Sculpin site.
|
||||
url: https://github.com/opdavies/sculpin-gist-embed-bundle
|
||||
|
||||
- name: Sculpin Skeleton
|
||||
description: A skeleton project for the Sculpin static site generator.
|
||||
url: https://github.com/opdavies/sculpin-skeleton
|
||||
|
||||
- name: Sculpin Twig Markdown Bundle
|
||||
description: Enables rendering content from markdown, using Sculpin’s core markdown parser.
|
||||
url: https://github.com/opdavies/sculpin-twig-markdown-bundle
|
||||
|
||||
- name: Sculpin Twig Sort by Field Bundle
|
||||
description: Enables sorting an array by a certain field on each item.
|
||||
url: https://github.com/opdavies/sculpin-twig-sort-by-field-bundle
|
||||
|
||||
php:
|
||||
- name: Drupal Meetups Twitterbot
|
||||
description: A Twitter bot that retweets posts about Drupal meetups.
|
||||
url: https://github.com/opdavies/drupal-meetups-twitterbot
|
||||
|
||||
- name: Drupal VM CLI
|
||||
description: A command line tool for Drupal VM.
|
||||
url: https://github.com/opdavies/drupal-vm-cli
|
||||
active: false
|
||||
|
||||
- name: Gmail Filter Builder
|
||||
description: Allows you to define Gmail filters in PHP using a fluent API, and then generate XML that you can import into Gmail's filter settings.
|
||||
url: https://github.com/opdavies/gmail-filter-builder
|
||||
---
|
||||
<p>I have written, open-sourced, and maintain a number of Drupal modules, Sculpin bundles and PHP projects - as well as the source code for this website! Here is some information about each project and a link to it’s project page.</p>
|
||||
|
||||
<div class="mb-4">
|
||||
<h2>Drupal</h2>
|
||||
|
||||
{% include 'opensource/projects' with {
|
||||
projects: page.projects.drupal
|
||||
} %}
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<h2>Sculpin</h2>
|
||||
|
||||
{% include 'opensource/projects' with {
|
||||
projects: page.projects.sculpin
|
||||
} %}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h2>PHP</h2>
|
||||
|
||||
{% include 'opensource/projects' with {
|
||||
projects: page.projects.php
|
||||
} %}
|
||||
</div>
|
99
source/_pages/podcasts.html.twig
Normal file
99
source/_pages/podcasts.html.twig
Normal file
|
@ -0,0 +1,99 @@
|
|||
---
|
||||
title: Podcasts
|
||||
podcasts:
|
||||
howtocodewell:
|
||||
name: How to Code Well
|
||||
url: https://howtocodewell.fm
|
||||
talking_drupal:
|
||||
name: Talking Drupal
|
||||
url: http://talkingdrupal.com
|
||||
thatpodcast:
|
||||
name: That Podcast
|
||||
url: https://thatpodcast.io
|
||||
episodes:
|
||||
- title: 'Episode #175 - Automated Testing'
|
||||
description: I joined the Talking Drupal team to discuss automated testing.
|
||||
podcast: talking_drupal
|
||||
date: 2018-09-05
|
||||
url: http://talkingdrupal.com/175
|
||||
audio: true
|
||||
|
||||
- title: 'Episode #204 - A Few Things'
|
||||
description: I joined the Talking Drupal team again, where we discussed Drupal updates, conferences and more.
|
||||
podcast: talking_drupal
|
||||
date: 2019-03-25
|
||||
url: http://talkingdrupal.com/204
|
||||
audio: true
|
||||
|
||||
- title: What's new in Drupal 8+
|
||||
description: Talking about Drupal, open source, Drupal 7 vs Drupal 8, module development, testing and more.
|
||||
podcast: howtocodewell
|
||||
date: 2019-04-12
|
||||
url: https://howtocodewell.fm/episode/15-whats-new-in-drupal-8-plus-oliver-davies-interview
|
||||
audio: true
|
||||
video: true
|
||||
|
||||
- title: 'Episode 60 - The One Where We Talk Twig, Drupal, and Sculpin'
|
||||
description: I joined Beau and Dave to talk about various topics including Drupal, the Sculpin static site generator, Twig, Tailwind CSS and Symfony.
|
||||
podcast: thatpodcast
|
||||
date: 2019-07-01
|
||||
url: https://thatpodcast.io/episodes/episode-60-the-one-where-we-talk-twig-drupal-and-sculpin-with-oliver-davies
|
||||
audio: true
|
||||
|
||||
- title: Static Site Generators
|
||||
description: |
|
||||
Talking again with Peter Fisher, this time about static site generators. We talk about what they are, when you should and shouldn’t use them, and how to use them with a content management system like Drupal.
|
||||
podcast: howtocodewell
|
||||
date: 2019-07-19
|
||||
url: https://howtocodewell.fm/episode/29-what-are-static-site-generators-oliver-davies
|
||||
audio: true
|
||||
video: true
|
||||
---
|
||||
{% macro episodeTitle(podcast, episode) -%}
|
||||
{{ podcast.name }}: {{ episode.title }}
|
||||
{%- endmacro %}
|
||||
|
||||
{% import _self as helpers %}
|
||||
|
||||
<header class="markup">
|
||||
<p class="text-lg">As well as <a href="{{ site.menus.main.articles.href }}">writing posts</a> and <a href="{{ site.menus.main.talks.href }}">giving talks</a>, I also enjoy being on podcasts and speaking about interesting topics.</p>
|
||||
<p class="text-lg">Here are the podcasts that I’ve been on, including <a href="{{ page.podcasts.talking_drupal.url }}">{{ page.podcasts.talking_drupal.name }}</a> and <a href="{{ page.podcasts.howtocodewell.url }}">{{ page.podcasts.howtocodewell.name }}</a>.</p>
|
||||
</header>
|
||||
|
||||
<div class="mt-10 spaced-y-10">
|
||||
{% for episode in page.episodes|reverse %}
|
||||
{% set podcast = page.podcasts[episode.podcast] %}
|
||||
|
||||
<article>
|
||||
<h2 class="text-lg">
|
||||
{% if episode.url %}
|
||||
<a href="{{ episode.url }}" class="text-inherit" tabindex="-1">
|
||||
{{ helpers.episodeTitle(podcast, episode) }}
|
||||
</a>
|
||||
{% else %}
|
||||
{{ helpers.episodeTitle(podcast, episode) }}
|
||||
{% endif %}
|
||||
</h2>
|
||||
|
||||
<time class="text-sm text-gray-800 block mt-px mb-2" datetime="{{ episode.date|date('Y-m-d') }}">
|
||||
{{ episode.date|date('jS F Y') }}
|
||||
</time>
|
||||
|
||||
<div class="markup">
|
||||
{{ episode.description|markdown }}
|
||||
</div>
|
||||
|
||||
{% if episode.url %}
|
||||
<a href="{{ episode.url }}" class="inline-block mt-2 text-sm text-gray-600 hover:text-gray-800 focus:text-gray-800">
|
||||
{% if episode.video %}
|
||||
Watch {{ episode.video and episode.audio ? 'or listen to' }}
|
||||
{% elseif episode.audio %}
|
||||
Listen to
|
||||
{% endif %} this
|
||||
<span class="visuallyhidden">{{ podcast.name }}</span>
|
||||
episode →
|
||||
</a>
|
||||
{% endif %}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
57
source/_pages/projects.html.twig
Normal file
57
source/_pages/projects.html.twig
Normal file
|
@ -0,0 +1,57 @@
|
|||
---
|
||||
title: Projects
|
||||
projects:
|
||||
- title: Rebuilding Acquia
|
||||
description: A clone of Acquia’s hosting dashboard, built with Vue.js and Tailwind CSS.
|
||||
url: https://github.com/opdavies/rebuilding-acquia
|
||||
|
||||
- title: Rebuilding Bartik
|
||||
description: A clone of Bartik (Drupal’s default theme), built with Vue.js and Tailwind CSS.
|
||||
url: https://github.com/opdavies/rebuilding-bartik
|
||||
|
||||
- title: Joind.in Winner Picker
|
||||
description: A Symfony 4 application that determines a randomly selected winner from a section of feedback left on Joind.in. Developed on behalf of the PHP South West (PHPSW) user group.
|
||||
url: https://github.com/opdavies/joindin-winner-picker-new
|
||||
|
||||
- title: Drupal.org API library
|
||||
description: A PHP library for interacting with the Drupal.org API.
|
||||
url: https://github.com/opdavies/drupalorg-api-php
|
||||
|
||||
- title: Drupal Meetups Twitterbot
|
||||
description: A Symfony 4 application for retweeting tweets about Drupal meetups.
|
||||
url: https://github.com/opdavies/sculpin-skeleton
|
||||
|
||||
- title: Gmail Filter Builder
|
||||
description: A library for writing Gmail filters in PHP, then exporting them to importable XML.
|
||||
url: https://github.com/opdavies/gmail-filter-builder
|
||||
|
||||
- title: Sculpin Skeleton
|
||||
description: A skeleton project for the Sculpin static site generator.
|
||||
url: https://github.com/opdavies/sculpin-skeleton
|
||||
---
|
||||
<div class="spaced-y-4">
|
||||
<p class="lead">Here are some of the open source projects that I’ve written or currently maintain.</p>
|
||||
<p class="lead">For the full list, see my <a href="{{ site.github.url }}">GitHub</a> and <a href="{{ site.drupalorg.url_new }}">Drupal.org</a> profiles.</p>
|
||||
</div>
|
||||
|
||||
<div class="mt-8 spaced-y-10">
|
||||
{% for project in page.projects %}
|
||||
<article>
|
||||
<h2 class="text-lg">
|
||||
<a class="text-inherit" href="{{ project.url }}" tabindex="-1">
|
||||
{{ project.title }}
|
||||
</a>
|
||||
</h2>
|
||||
|
||||
<p class="mt-1">{{ project.description }}</p>
|
||||
|
||||
<p class="mt-2 text-sm">
|
||||
<a class="text-gray-600 hover:text-black" href="{{ project.url }}">
|
||||
Find out more
|
||||
<span class="visuallyhidden">about {{ project.title }}</span>
|
||||
→
|
||||
</a>
|
||||
</p>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
37
source/_pages/speaker-info.md
Normal file
37
source/_pages/speaker-info.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
---
|
||||
<div class="markup" markdown="1">
|
||||
# Speaker Info
|
||||
|
||||
## Bio
|
||||
|
||||
[Oliver Davies][1] ([@opdavies][2]) has been building websites since 2007, and speaking at meetups and conferences since 2012. He is a Full Stack Developer and an Acquia certified Drupal Grand Master, who also has
|
||||
experience with DevOps and systems administration as well as development with Symfony, Laravel, Sculpin and Vue.js.
|
||||
|
||||
|
||||
He is a {{ site.work.role }} at [{{ site.companies[site.work.company].name }}][3], a Drupal core contributor and mentor, and an open source and contribution advocate.
|
||||
|
||||
He regularly blogs and gives talks about web development and systems administration, maintains and contributes to various open source projects, and co-organises DrupalCamp Bristol as well as the Drupal Bristol, PHP South West and PHP South Wales user groups.
|
||||
|
||||
## Photos
|
||||
|
||||
- <https://www.dropbox.com/s/den3ww3lpve08fa/precedent_thumb.jpg>
|
||||
- <https://www.dropbox.com/s/etrahx3hq2vpqcb/phpnw17.png>
|
||||
|
||||
## Some Events I’ve Spoken At
|
||||
|
||||
- DrupalCamp Brighton 2015
|
||||
- DrupalCamp Bristol 2016
|
||||
- DrupalCamp Dublin 2017
|
||||
- DrupalCamp London (2014, 2015, 2016, 2017, 2019)
|
||||
- DrupalCamp North 2015
|
||||
- Nomad PHP
|
||||
- PHP North West 2017 (10 year anniversary)
|
||||
- PHP South Coast 2016
|
||||
- PHP UK Conference 2018
|
||||
- WordCamp Bristol 2019
|
||||
</div>
|
||||
|
||||
[1]: {{site.url}}
|
||||
[2]: {{site.twitter.url}}
|
||||
[3]: {{site.companies[site.work.company].url}}
|
15
source/_pages/stream.md
Normal file
15
source/_pages/stream.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
---
|
||||
title: Live Streaming
|
||||
---
|
||||
I like try and do some live coding when I can, whether I’m working on a side project, my own website or some open source code. You can find my [stream link on YouTube][0], or view some previous streams below:
|
||||
|
||||
## Stream Playlists
|
||||
|
||||
- [Miscellaneous coding live streams][1]
|
||||
{# - [Building the PHP South Wales website][2] #}
|
||||
{# - [Using PHP to generate Gmail Filter XML with the Gmail Filter Builder][3] #}
|
||||
|
||||
[0]: {{site.youtube.stream.url}}
|
||||
[1]: https://www.youtube.com/playlist?list=PLHn41Ay7w7kcWbjrYaiqXlfrqi_teTJE8
|
||||
[2]: https://www.youtube.com/playlist?list=PLHn41Ay7w7keUxBa-6TNn0_xz27ZfLD5f
|
||||
[3]: https://www.youtube.com/playlist?list=PLHn41Ay7w7keRp47rXEx9his-oA8kk4-v
|
45
source/_pages/talks.html.twig
Normal file
45
source/_pages/talks.html.twig
Normal file
|
@ -0,0 +1,45 @@
|
|||
---
|
||||
title: Talks
|
||||
meta:
|
||||
description: 'Information about previous and upcoming talks that Oliver has presented at conferences and user groups'
|
||||
use: [talks]
|
||||
talks:
|
||||
- title: 'Drupal and the LDAP module'
|
||||
description: A review and demonstration of some of the recent single sign-on work that I did using Drupal’s LDAP module.
|
||||
events:
|
||||
- event: swdug
|
||||
date: 2013-07-10
|
||||
|
||||
- title: 'About the Drupal Association'
|
||||
description: An impromptu talk about what the Drupal Association is, and what work I’ve been doing since I joined the Association staff.
|
||||
events:
|
||||
- event: swdug
|
||||
date: 2014-08-19
|
||||
|
||||
- title: 'Automated testing with Drupal 8 and PHPUnit'
|
||||
description: A workshop that I gave to teach others about automated testing in Drupal 8.
|
||||
type: Workshop
|
||||
events:
|
||||
- event: drupal_bristol
|
||||
date: 2018-06-27
|
||||
---
|
||||
{% block content %}
|
||||
{% set talks = getTalks(page.talks|merge(data.talks)) %}
|
||||
|
||||
<header>
|
||||
<p class="lead">
|
||||
After giving my first talk in September 2012, I have now given {{ talks|pastEvents|length }} presentations at various conferences and meetups,
|
||||
on topics including PHP, Drupal, Git, CSS and systems administration.
|
||||
</p>
|
||||
</header>
|
||||
|
||||
<div class="spaced-y-10 mt-6">
|
||||
{% include 'talks/upcoming' with {
|
||||
talks: talks|upcomingTalks,
|
||||
} %}
|
||||
|
||||
{% include 'talks/past' with {
|
||||
talks: talks|pastTalks,
|
||||
} %}
|
||||
</div>
|
||||
{% endblock %}
|
7
source/_pages/terms.md
Normal file
7
source/_pages/terms.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
---
|
||||
title: Development Terms
|
||||
use: [posts]
|
||||
---
|
||||
# Development Terms
|
||||
|
||||
TODO
|
49
source/_pages/test-driven-drupal.md
Normal file
49
source/_pages/test-driven-drupal.md
Normal file
|
@ -0,0 +1,49 @@
|
|||
---
|
||||
title: 'Test Driven Drupal: The Book'
|
||||
mailchimp_url: 'https://oliverdavi.us18.list-manage.com/subscribe/post?u=b4ac8dd177796d37b93f9c285&id=033c84e0d5'
|
||||
contact_email: 'oliver@testdrivendrupal.com'
|
||||
---
|
||||
{% block content %}
|
||||
<div class="markup spaced-y-4 mb-6" markdown="1">
|
||||
Having [given talks][1] and workshops, been a guest on podcasts and [written articles][0] about automated testing in Drupal, I’m currently in the planning phase of a book and potentially some accompanying screencasts about it, focussing on Drupal 8.
|
||||
|
||||
I’m still thinking about what use-cases to cover and examples to include, but here are some of the things I’m considering:
|
||||
|
||||
- What things to test, and what not to test
|
||||
- The different types of available tests, and when to use each
|
||||
- How to write testable code
|
||||
- What happens when I run a test?
|
||||
- How to run tests in the Drupal UI
|
||||
- How to run tests with the `run-tests.sh` script
|
||||
- How to install, configure and run tests with PHPUnit in Drupal 8
|
||||
- Viewing HTML from run tests
|
||||
- How to write your first test
|
||||
- Debugging tests
|
||||
- How to organise your test files
|
||||
- Selecting the right base class and using test traits
|
||||
- Writing your own base test classes, traits and assertions
|
||||
- Managing dependencies for your tests (fields, configuration)
|
||||
- Creating users, checking access with roles and permissions
|
||||
- Creating pages and blocks with Views and testing the output
|
||||
- Creating pages with routes and controllers and testing the output
|
||||
- Testing custom plugins
|
||||
- Testing queuing items and processing queues
|
||||
- Testing sending emails
|
||||
- Testing custom Twig filters and functions
|
||||
<!-- - Testing data migrations -->
|
||||
<!-- - Building and testing APIs using RESTful web services module -->
|
||||
- Running tests as part of your continuous integration pipeline
|
||||
|
||||
I’ll most likely be publishing it via Leanpub, and will be sending free chapters, early-bird discounts and links to screencasts and blog posts as I write the book to subscribers of the mailing list.
|
||||
|
||||
If you have questions or would like to suggest something for me to include in the book, please <a href="mailto:{{ page.contact_email }}">contact me</a>.
|
||||
|
||||
**Enter your email address to subscribe to the Test Driven Drupal mailing list and be notified of any updates.**
|
||||
</div>
|
||||
|
||||
{% include 'pages/book/signup-form' %}
|
||||
{% endblock %}
|
||||
|
||||
[0]: /articles/tags/testing
|
||||
[1]: /talks/tdd-test-driven-drupal
|
||||
[2]: /contact
|
100
source/_pages/testimonials.html.twig
Normal file
100
source/_pages/testimonials.html.twig
Normal file
|
@ -0,0 +1,100 @@
|
|||
---
|
||||
title: Testimonials
|
||||
use: [posts]
|
||||
testimonials:
|
||||
- name: Ed Welsby
|
||||
image: ed-welsby.png
|
||||
role: Senior Developer at <a class="text-blue-600 inline-block" href="http://www.proctors.co.uk">Proctor & Stevenson</a>
|
||||
text: |
|
||||
Oliver was great to work with, he has a solid knowledge of the various aspects of web development and never minded helping me out with Linux commands!
|
||||
|
||||
- name: Brian Healy
|
||||
image: brian-healy.png
|
||||
role: Director of Business Development at <a class="text-blue-600 inline-block" href="http://tincan.co.uk">Tincan</a>.
|
||||
text: |
|
||||
Oliver was fantastic to work with - pro-active and highly responsive, he worked well remotely and as part of a project team. His understanding of the project requirement(s) and ability to translate it into working code was essential and he delivered.
|
||||
|
||||
- name: Marlon Duncanson
|
||||
role: 'Brand & Web Specialist'
|
||||
text: |
|
||||
Oliver is a great guy and really easy to work with. He really goes the extra mile to make sure the project is done properly. I would recommend him and will not hesitate to use him again in future.
|
||||
|
||||
- name: Brian Hartwell
|
||||
role: Interactive Creative Director
|
||||
text: |
|
||||
Oliver was great to work with. He has expert knowledge with Drupal and delivered exactly what we were looking for on time. He's understanding, friendly and easy to get along with. I would enjoy working with him again in the future.
|
||||
|
||||
- name: Daniel Easterbrook
|
||||
role: Digital Strategy Consultant
|
||||
text: |
|
||||
Oliver is seasoned Drupal and all round highly skilled and experienced web developer. I have worked with Oliver on an important project where he was reliable, prompt and ensured strict client deadline delivery and confidentiality at all times.
|
||||
|
||||
- name: James Chapman
|
||||
role: Director at <a class="text-blue-600 inline-block" href="http://www.developmentdoneright.co.uk">Development Done Right</a>
|
||||
image: james-chapman.png
|
||||
text: |
|
||||
We used Oliver on a number of occasions throughout 2012 and I have to say we've been delighted with his work. His skills working with Drupal are excellent particularly with custom module development and we wouldn’t hesitate to recommend him others.
|
||||
|
||||
- name: Léonie Watson
|
||||
role: >
|
||||
Director of Accessibility at <a class="text-blue-600 inline-block" href="http://www.nomensa.com">Nomensa</a>
|
||||
image: leonie-watson.jpg
|
||||
text: |
|
||||
Oliver is a flexible and hardworking developer, with a terrific knowledge of Drupal. He promotes accessibility best practice within the Drupal community, and is always happy to share his knowledge with other people.
|
||||
|
||||
- name: Holly Ross
|
||||
role: >
|
||||
Executive Director at the <a class="text-blue-600 inline-block" href="https://assoc.drupal.org">Drupal Association</a>
|
||||
image: holly-ross.png
|
||||
text: |
|
||||
Oliver has been an outstanding contributor to the Drupal Association team. He is a talented developer who writes great code and applies his curiosity and love of learning to every project. He is also a fantastic team member, who gives to the team as much as he gets.
|
||||
|
||||
Oliver is the embodiment of everything good about the Drupal community.
|
||||
|
||||
- name: Josh Mitchell
|
||||
role: CTO at the <a class="text-blue-600 inline-block" href="https://assoc.drupal.org">Drupal Association</a>
|
||||
image: josh-mitchell.png
|
||||
text: |
|
||||
Oliver is a skilled Drupal developer with a passion for the Drupal community. As his direct supervisor, I was able to watch Oliver grow with the Drupal Association and contribute an amazing amount of effort and integrity to all of his work.
|
||||
|
||||
Everything we have thrown at Oliver, he has approached with an open and flexible mind that has allowed him to work on a wide range of projects and features for Drupal products.
|
||||
|
||||
- name: Chris Jarvis
|
||||
image: chris-jarvis.jpg
|
||||
role: Developer at <a class="text-blue-600 inline-block" href="https://microserve.io">Microserve</a>
|
||||
text: |
|
||||
Oliver is an amazing colleague, he's professional, full of knowledge and I could not recommend him more.
|
||||
---
|
||||
{% block content %}
|
||||
<div class="spaced-y-12">
|
||||
{% for testimonial in page.testimonials|reverse %}
|
||||
<article class="flex flex-row-reverse items-center">
|
||||
{% if testimonial.image %}
|
||||
<div class="flex-none">
|
||||
<img
|
||||
src="{{ site.url }}/images/testimonials/{{ testimonial.image }}"
|
||||
alt="{{ testimonial.name }}"
|
||||
class="with-border with-padding rounded-full w-16 h-16 ml-4"
|
||||
>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="flex-1">
|
||||
<div class="mb-3">
|
||||
<h2 class="mb-1 leading-none">{{ testimonial.name }}</h2>
|
||||
|
||||
{% if testimonial.role %}
|
||||
<div class="text-gray-600 text-sm">
|
||||
{{ testimonial.role|raw }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="markup">
|
||||
{{ testimonial.text|markdown }}
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
Loading…
Add table
Add a link
Reference in a new issue