diff --git a/source/_partials/availability.html.twig b/source/_partials/availability.html.twig new file mode 100644 index 00000000..bd8b4685 --- /dev/null +++ b/source/_partials/availability.html.twig @@ -0,0 +1,9 @@ +
+
Availability
+ +
+ {% for key, availability in site.availability %} + {% include 'availability/' ~ availability with { value: key } %} + {% endfor %} +
+
diff --git a/source/_partials/availability/limited.html.twig b/source/_partials/availability/limited.html.twig new file mode 100644 index 00000000..b27b555a --- /dev/null +++ b/source/_partials/availability/limited.html.twig @@ -0,0 +1,6 @@ +

+ + + {{ value == 'full' ? 'Currently have limited full-time capacity' }} + {{ value == 'part' ? 'Currently have limited part-time capacity' }} +

diff --git a/source/_partials/availability/no.html.twig b/source/_partials/availability/no.html.twig new file mode 100644 index 00000000..71f5e283 --- /dev/null +++ b/source/_partials/availability/no.html.twig @@ -0,0 +1,6 @@ +

+ + + {{ value == 'full' ? 'Currently no spare full-time capacity.' }} + {{ value == 'part' ? 'Currently no spare part-time capacity.' }} +

diff --git a/source/_partials/availability/yes.html.twig b/source/_partials/availability/yes.html.twig new file mode 100644 index 00000000..5087a3e9 --- /dev/null +++ b/source/_partials/availability/yes.html.twig @@ -0,0 +1,6 @@ +

+ + + {{ value == 'full' ? 'Currently have available full-time capacity' }} + {{ value == 'part' ? 'Currently have available part-time capacity' }} +

diff --git a/source/_partials/badges.html.twig b/source/_partials/badges.html.twig new file mode 100644 index 00000000..dcfcc2ee --- /dev/null +++ b/source/_partials/badges.html.twig @@ -0,0 +1,26 @@ +
+ + Drupal Association Individual Member + + + + I built Drupal 8 with hand holding a wrench on blue background + + + Acquia Certified Developer - Drupal 8 Exam Badge + + + + +
diff --git a/source/_partials/head.html.twig b/source/_partials/head.html.twig new file mode 100644 index 00000000..e69de29b diff --git a/source/_partials/meetups.html.twig b/source/_partials/meetups.html.twig new file mode 100644 index 00000000..11a107aa --- /dev/null +++ b/source/_partials/meetups.html.twig @@ -0,0 +1,12 @@ +
+

Things that I organise

+ +
diff --git a/source/_partials/nav.html.twig b/source/_partials/nav.html.twig new file mode 100644 index 00000000..1af15af2 --- /dev/null +++ b/source/_partials/nav.html.twig @@ -0,0 +1,41 @@ + diff --git a/source/_partials/og.html.twig b/source/_partials/og.html.twig new file mode 100644 index 00000000..2e6c034f --- /dev/null +++ b/source/_partials/og.html.twig @@ -0,0 +1,46 @@ + + + +{% if og.description %} + +{% endif %} + +{% if og.type %} + +{% endif %} + +{% if og.image and og.image.url %} + + {% if og.image.type %} + + {% endif %} + {% if og.image.width %} + + {% endif %} + {% if og.image.height %} + + {% endif %} +{% else %} + + + + +{% endif %} + +{% if og.title %} + {% if og.image %} + + + {% else %} + + + {% endif %} + + + + +{% endif %} + +{% if page.hide_page %} + +{% endif %} diff --git a/source/_partials/post/about-author.html.twig b/source/_partials/post/about-author.html.twig new file mode 100644 index 00000000..dcc5adf2 --- /dev/null +++ b/source/_partials/post/about-author.html.twig @@ -0,0 +1,7 @@ +
+

About the Author

+ + Picture of Oliver + +

Oliver Davies is a Web Developer, System Administrator and Drupal specialist based in the UK. He is a {{ site.work.role }} at {{ site.companies[site.work.company].name }} and also provides freelance consultancy services for Drupal websites, PHP applications and Linux servers.

+
diff --git a/source/_partials/post/feedback.html.twig b/source/_partials/post/feedback.html.twig new file mode 100644 index 00000000..20867a87 --- /dev/null +++ b/source/_partials/post/feedback.html.twig @@ -0,0 +1,3 @@ +

+ Have feedback on this post? Email me or send me a tweet. +

diff --git a/source/_partials/post/header.html.twig b/source/_partials/post/header.html.twig new file mode 100644 index 00000000..d16d1c66 --- /dev/null +++ b/source/_partials/post/header.html.twig @@ -0,0 +1,4 @@ +{% set title_tag = title_tag|default('h1') %} +<{{ title_tag }}>{{ page.title }} + +

{{ page.date|date('jS F Y') }}

diff --git a/source/_partials/post/pager.html.twig b/source/_partials/post/pager.html.twig new file mode 100644 index 00000000..1597101d --- /dev/null +++ b/source/_partials/post/pager.html.twig @@ -0,0 +1,17 @@ +
+ {% if page.previous_post %} +
+ + « {{ page.previous_post.title }} + +
+ {% endif %} + + {% if page.next_post %} +
+ + {{ page.next_post.title }} » + +
+ {% endif %} +
diff --git a/source/_partials/post/related.html.twig b/source/_partials/post/related.html.twig new file mode 100644 index 00000000..f865b49e --- /dev/null +++ b/source/_partials/post/related.html.twig @@ -0,0 +1,11 @@ +{% if page.related -%} +

Related Posts

+ + +{%- endif %} diff --git a/source/_partials/post/tags.html.twig b/source/_partials/post/tags.html.twig new file mode 100644 index 00000000..6f4862de --- /dev/null +++ b/source/_partials/post/tags.html.twig @@ -0,0 +1,8 @@ +{% if page.tags %} +

+ Tags: + {% for tag in page.tags %} + {{ tag }}{% if not loop.last %}, {% endif %} + {% endfor %} +

+{% endif %} diff --git a/source/_partials/posts/latest.html.twig b/source/_partials/posts/latest.html.twig new file mode 100644 index 00000000..16cf9b34 --- /dev/null +++ b/source/_partials/posts/latest.html.twig @@ -0,0 +1,18 @@ +{% if data.posts and page.url != '/blog' %} +
+
Latest blog posts
+ + +
+{% endif %} diff --git a/source/_partials/project/company.html.twig b/source/_partials/project/company.html.twig new file mode 100644 index 00000000..7e799aff --- /dev/null +++ b/source/_partials/project/company.html.twig @@ -0,0 +1,21 @@ +{% if page.company %} + {% set company = site.companies[page.company] %} + + +{% endif %} diff --git a/source/_partials/project/image.html.twig b/source/_partials/project/image.html.twig new file mode 100644 index 00000000..9595fcb0 --- /dev/null +++ b/source/_partials/project/image.html.twig @@ -0,0 +1,3 @@ +{% if page.image -%} + {{ page.image.alt }} +{%- endif %} diff --git a/source/_partials/project/skills.html.twig b/source/_partials/project/skills.html.twig new file mode 100644 index 00000000..c5fdfa7a --- /dev/null +++ b/source/_partials/project/skills.html.twig @@ -0,0 +1,11 @@ +{% if page.skills %} +
+

Skills

+ + +
+{% endif %} diff --git a/source/_partials/project/website.html.twig b/source/_partials/project/website.html.twig new file mode 100644 index 00000000..ef80a54b --- /dev/null +++ b/source/_partials/project/website.html.twig @@ -0,0 +1,5 @@ +{% if page.website %} + + View the website + +{% endif %} diff --git a/source/_partials/skills-list.html.twig b/source/_partials/skills-list.html.twig new file mode 100644 index 00000000..42807176 --- /dev/null +++ b/source/_partials/skills-list.html.twig @@ -0,0 +1,11 @@ + diff --git a/source/_partials/skills.html.twig b/source/_partials/skills.html.twig new file mode 100644 index 00000000..8c1337d4 --- /dev/null +++ b/source/_partials/skills.html.twig @@ -0,0 +1,13 @@ +

Skills

+ +

I regularly use:

+ +{% include 'skills-list' with { skills: site.skills[0] } %} + +

I am also familiar with:

+ +{% include 'skills-list' with { skills: site.skills[1] } %} + +

I would like to do more:

+ +{% include 'skills-list' with { skills: site.skills[2] } %} diff --git a/source/_partials/speakerdeck.html.twig b/source/_partials/speakerdeck.html.twig new file mode 100644 index 00000000..9fd51d7d --- /dev/null +++ b/source/_partials/speakerdeck.html.twig @@ -0,0 +1 @@ + diff --git a/source/_partials/talks-table.html.twig b/source/_partials/talks-table.html.twig new file mode 100644 index 00000000..582bab75 --- /dev/null +++ b/source/_partials/talks-table.html.twig @@ -0,0 +1,81 @@ +
+ + + + + + {% if not talk_page %} + + {% endif %} + + + + {% if not upcoming %} + + {% endif %} + + + + {% for row in events %} + {% set talk = false %} + {% set key = row.date.talk.id ?: row.date.talk %} + + {% for item in row.talks if key == item.filename|split('.')|first %} + {% set talk = item %} + {% endfor %} + + + + {% if not talk_page %} + + {% endif %} + + + + {% if not upcoming %} + + {% endif %} + + + {% endfor %} + +
DateTalkEventFeedback
+ {{ row.date.date|date(row.date.fuzzy_date ? 'F Y' : 'j F Y') }} + + {% if row.date.time %} + {{ row.date.time }} + {% endif %} + + {% if row.date.talk.title is defined %} + {{ row.date.talk.title }} + {% else %} + {{ talk.title }} + {% endif %} + + + {{ row.date.talk.type ?: talk.type }} + + + {% if row.event.website %} + + {{ row.event.name }} + + {% else %} + {{ row.event.name }} + {% endif %} + + + {{ row.event.location }} + + + {% if row.date.feedback %} + + joind.in + + {% endif %} +
+
diff --git a/source/_partials/tweet.html.twig b/source/_partials/tweet.html.twig new file mode 100644 index 00000000..a6fd2b0d --- /dev/null +++ b/source/_partials/tweet.html.twig @@ -0,0 +1,5 @@ +

+

+ {{ content|raw }} +
+

diff --git a/source/_views/default.html.twig b/source/_views/default.html.twig new file mode 100644 index 00000000..99773359 --- /dev/null +++ b/source/_views/default.html.twig @@ -0,0 +1,68 @@ + + + + {% if page.url == '/.' %}{{ site.subtitle }} | {{ site.title }}{% else %}{{ page.title }} | {{ site.title }}{% endif %} + + + + + + {% if page.meta.description %} + + {% endif %} + + {% include 'og' with { og: page.meta.og } %} + + + {% block stylesheets '' %} + + {% for size in site.apple_touch_icon_sizes %} + + {% endfor %} + + {% for size in site.favicon_sizes %} + + {% endfor %} + + + {% include 'nav' %} + +
+
+
+ {% block content_top %}{% endblock %} + {% block content_wrapper %}{% block content %}{% endblock %}{% endblock %} + {% block content_bottom %}{% endblock %} +
+ + {% block sidebar_wrapper %} +
+ {% block sidebar %} + {% include 'badges' %} + {% include 'availability' %} + {% include 'posts/latest' %} + {# {% include 'skills' %} #} + {% endblock %} +
+ {% endblock %} + +
{# .row #} +
{# .container #} + + + + + + {% if site.google_analytics_tracking_id %} + + {% endif %} + + {% block scripts '' %} + + diff --git a/source/_views/page.html.twig b/source/_views/page.html.twig new file mode 100644 index 00000000..a60b03d2 --- /dev/null +++ b/source/_views/page.html.twig @@ -0,0 +1,5 @@ +{% extends 'default' %} + +{% block content_top %} +

{{ page.title }}

+{% endblock %} diff --git a/source/_views/post.html.twig b/source/_views/post.html.twig new file mode 100644 index 00000000..57c98f8f --- /dev/null +++ b/source/_views/post.html.twig @@ -0,0 +1,17 @@ +{% extends 'default' %} + +{% block content_wrapper %} + {% include 'post/header' %} + + {% block content %}{% endblock %} + + {# {% include 'post/feedback' %} #} + {# {% include 'post/related' %} #} + {% include 'post/tags' %} + {% include 'post/pager' %} + {% include 'post/about-author' %} +{% endblock %} + +{% block stylesheets %} + +{% endblock %} diff --git a/source/_views/project.html.twig b/source/_views/project.html.twig new file mode 100644 index 00000000..c7c424ff --- /dev/null +++ b/source/_views/project.html.twig @@ -0,0 +1,17 @@ +{% extends 'page' %} + +{% block body_classes 'page--project' %} + +{% block content_wrapper %} + {% include 'project/image' %} + + {% block content %}{% endblock %} + + {% include 'project/website' %} + {% include 'project/skills' %} + {% include 'project/company' %} +{% endblock %} + +{% block stylesheets %} + +{% endblock %} diff --git a/source/_views/redirect.html.twig b/source/_views/redirect.html.twig new file mode 100644 index 00000000..e5a86c28 --- /dev/null +++ b/source/_views/redirect.html.twig @@ -0,0 +1,9 @@ + +{% spaceless %} + + + + + + +{% endspaceless %} diff --git a/source/_views/talk.html.twig b/source/_views/talk.html.twig new file mode 100644 index 00000000..deb49d52 --- /dev/null +++ b/source/_views/talk.html.twig @@ -0,0 +1,56 @@ +{% extends 'default' %} + +{% block body_classes 'talk talk-full' %} + +{% block content_top %} +

{{ page.title }}

+{% endblock %} + +{% block content_wrapper %} +
+ {% block content %}{% endblock %} +
+ + {% if page.slides.embed %} +
+

Slides

+
+ {{ page.slides.embed|raw }} +
{# .presentation #} +
{# .talk-slides #} + {% endif %} + + {% if page.video.embed %} +
+

Video

+
+ {{ page.video.embed|raw }} +
+
{# .talk-video #} + {% endif %} + +
+

Events

+ + {% set events = [] %} + {% for date in site.events.dates %} + {% set key = (date.talk.id is defined) ? date.talk.id : date.talk %} + {% set talk = (page.id is defined) ? page.id : page.url|split('/')|last %} + {% if key == talk %} + {% set events = events|merge([{ + date: date, + event: site.events.events[date.event], + }]) %} + {% endif %} + {% endfor %} + + {% include 'talks-table' with { + events: events, + talk_page: true, + } %} +
{# .talk-events #} +{% endblock %} + +{% block stylesheets %} + +{% endblock %} diff --git a/source/contact.html.twig b/source/contact.html.twig new file mode 100644 index 00000000..474c785c --- /dev/null +++ b/source/contact.html.twig @@ -0,0 +1,43 @@ +--- +title: Contact +layout: page +use: [posts] +--- +{% block content %} +

To send me an email, complete the form below.

+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + + + +
+{% endblock %} + +{% block body_classes 'page--contact' %} diff --git a/source/experience.html.twig b/source/experience.html.twig new file mode 100644 index 00000000..bb1f412d --- /dev/null +++ b/source/experience.html.twig @@ -0,0 +1,145 @@ +--- +layout: default +title: Experience +experiences: + - company: microserve + location: Bristol, England + role: Senior Drupal Developer + start: March 2017 + end: ~ + description: ~ + + - 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: 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: 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: 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: 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: 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: 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: 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: 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). +use: [posts] +redirect: + - services/ + - work/ +--- +{% block content %} +

Experience

+ + {% for experience in page.experiences %} + {% set company = site.companies[experience.company] %} + + + {% endfor %} +{% endblock %} + +{% block stylesheets %} + +{% endblock %} diff --git a/source/projects.html.twig b/source/projects.html.twig new file mode 100644 index 00000000..92928815 --- /dev/null +++ b/source/projects.html.twig @@ -0,0 +1,14 @@ +--- +layout: page +title: Projects +use: [projects, posts] +redirect: + - portfolio/ +--- + diff --git a/source/testimonials.html.twig b/source/testimonials.html.twig new file mode 100644 index 00000000..3b975041 --- /dev/null +++ b/source/testimonials.html.twig @@ -0,0 +1,95 @@ +--- +layout: default +title: Testimonials +testimonials: + - name: Chris Jarvis + image: chris-jarvis.jpg + role: Developer at [Microserve](https://microserve.io) + text: | + Oliver is an amazing colleague, he's professional, full of knowledge and I could not recommend him more.

+ + - name: Josh Mitchell + role: CTO at the [Drupal Association](https://assoc.drupal.org) + 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: Holly Ross + role: Executive Director at the [Drupal Association](https://assoc.drupal.org) + 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: Léonie Watson + role: Director of Accessibility at [Nomensa](http://www.nomensa.com) + 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: James Chapman + role: Director at [Development Done Right](http://www.developmentdoneright.co.uk) + 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: 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: 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: 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 Healy + image: brian-healy.png + role: Director of Business Development at [Tincan](http://tincan.co.uk) + 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: Ed Welsby + image: ed-welsby.png + role: Senior Developer at [Proctor & Stevenson](http://www.proctors.co.uk) + 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! +use: [posts] +--- +{% block content %} +

Testimonials

+ + {% for testimonial in page.testimonials %} + {% set company = testimonial.company %} + +
+

{{ testimonial.name }}

+ + {% if testimonial.image %} + {{ testimonial.name }} + {% endif %} + + {% if testimonial.role %} +
+ {{ testimonial.role|markdown}} +
+ {% endif %} + + {{ testimonial.text|markdown }} +
+ {% endfor %} +{% endblock %} + +{% block body_classes 'page--testimonials' %} + +{% block stylesheets %} + +{% endblock %}