This commit is contained in:
Oliver Davies 2017-09-04 17:55:53 +01:00
parent 04b28136df
commit 62b1dc15d2
30 changed files with 286 additions and 347 deletions

View file

@ -1,68 +1 @@
testimonials:
- 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!
- 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: 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 [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 wouldnt hesitate to recommend him others.
- 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: 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: 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: 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.

View file

@ -1,35 +0,0 @@
// =from($device)
// @media screen and (min-width: $device)
// @content
// =until($device)
// @media screen and (max-width: $device - 1px)
// @content
// =mobile
// @media screen and (max-width: $screen-tablet - 1px)
// @content
// =tablet
// @media screen and (min-width: $screen-tablet)
// @content
// =tablet-only
// @media screen and (min-width: $screen-tablet) and (max-width: $screen-desktop - 1px)
// @content
// =touch
// @media screen and (max-width: $screen-desktop - 1px)
// @content
// =desktop
// @media screen and (min-width: $screen-desktop)
// @content
// =desktop-only
// @media screen and (min-width: $screen-desktop) and (max-width: $screen-lg - 1px)
// @content
// =widescreen
// @media screen and (min-width: $screen-lg)
// @content

View file

@ -1,6 +1,3 @@
@import "node_modules/bulma/sass/utilities/initial-variables"
@import "node_modules/bulma/sass/utilities/mixins"
.experience-item-website
margin-bottom: 2px

View file

@ -1,21 +1,22 @@
@import 'node_modules/bulma/sass/utilities/initial-variables'
@import "node_modules/tachyons-sass/scss/colors";
$family-sans-serif: "Helvetica Neue", Arial, sans-serif
$body-size: 14px
$blue: #0678be
$blue: #0678BE
@import "node_modules/tachyons-sass/tachyons";
$primary: $blue
p,
li,
td
a
color: $blue
@import 'node_modules/bulma/bulma'
.video
padding: 56.25% 0 0
@import 'base'
@import 'mixins'
@import 'base/layout'
@import 'base/utilities'
@import 'components/availability'
@import 'components/badges'
@import 'components/footer'
@import 'components/meetups'
.video iframe,
.video embed
height: 100%
left: 0
position: absolute
top: 0
width: 100%

24
assets/sass/main.scss Normal file
View file

@ -0,0 +1,24 @@
@import "node_modules/tachyons-sass/tachyons";
$blue1: #0678be;
p,
li,
td {
a { color: $blue1; }
}
.blue1 { color: $blue1; }
.video {
padding: 56.25% 0 0;
}
.video iframe,
.video embed {
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}

View file

@ -54,17 +54,17 @@ gulp.task('styles', function () {
config.sass.sourceDir + '/main.sass'
], 'main.css');
app.sass([
'node_modules/prismjs/themes/prism-twilight.css',
config.sass.sourceDir + '/post.sass'
], 'post.css')
// app.sass([
// 'node_modules/prismjs/themes/prism-twilight.css',
// config.sass.sourceDir + '/post.sass'
// ], 'post.css')
app.sass(config.sass.sourceDir + '/about.sass', 'about.css');
app.sass(config.sass.sourceDir + '/blog.sass', 'blog.css');
app.sass(config.sass.sourceDir + '/experience.sass', 'experience.css');
app.sass(config.sass.sourceDir + '/project.sass', 'project.css');
app.sass(config.sass.sourceDir + '/talk.sass', 'talk.css');
app.sass(config.sass.sourceDir + '/testimonials.sass', 'testimonials.css');
// app.sass(config.sass.sourceDir + '/about.sass', 'about.css');
// app.sass(config.sass.sourceDir + '/blog.sass', 'blog.css');
// app.sass(config.sass.sourceDir + '/experience.sass', 'experience.css');
// app.sass(config.sass.sourceDir + '/project.sass', 'project.css');
// app.sass(config.sass.sourceDir + '/talk.sass', 'talk.css');
// app.sass(config.sass.sourceDir + '/testimonials.sass', 'testimonials.css');
});
gulp.task('scripts', function () {

View file

@ -18,6 +18,6 @@
"gulp-util": "^3.0.8",
"jquery.2": "^1.0.0",
"prismjs": "^1.6.0",
"tachyons": "^4.8.1"
"tachyons-sass": "^4.7.4"
}
}

View file

@ -1,11 +1,9 @@
<div class="availability panel panel-default">
<div class="panel-heading">Availability</div>
<div class="lh-copy">
<h2>Availability</h2>
<div class="panel-block">
<div>
{% for key, availability in site.availability %}
{% include 'availability/' ~ availability with { value: key } %}
{% endfor %}
</div>
</div>
<ul class="list pa0">
{% for key, availability in site.availability %}
{% include 'availability/' ~ availability with { value: key } %}
{% endfor %}
</ul>
</div>

View file

@ -1,8 +1,6 @@
<p>
<span class="icon is-small">
<i class="fa fa-thumbs-o-up is-warning"></i>
</span>
<li>
<i class="mr1 fa fa-thumbs-o-up orange"></i>
{{ value == 'full' ? 'Currently have limited full-time capacity' }}
{{ value == 'part' ? 'Currently have limited part-time capacity' }}
</p>
</li>

View file

@ -1,8 +1,6 @@
<p>
<span class="icon is-small">
<i class="fa fa-thumbs-o-down is-danger"></i>
</span>
<li>
<i class="mr1 fa fa-thumbs-o-down dark-red"></i>
{{ value == 'full' ? 'Currently no spare full-time capacity.' }}
{{ value == 'part' ? 'Currently no spare part-time capacity.' }}
</p>
</li>

View file

@ -1,8 +1,6 @@
<p>
<span class="icon is-small">
<i class="fa fa-thumbs-o-up is-success"></i>
</span>
<li>
<i class="mr1 fa fa-thumbs-o-up dark-green"></i>
{{ value == 'full' ? 'Currently have available full-time capacity' }}
{{ value == 'part' ? 'Currently have available part-time capacity' }}
</p>
</li>

View file

@ -1,5 +1,5 @@
<div class="panel badges has-text-centered">
<a href="https://assoc.drupal.org/membership" title="Im a Drupal Association member." class="is-block">
<div>
<a href="https://assoc.drupal.org/membership" title="Im a Drupal Association member." class="db mb3 tc">
<img
src="{{ site.images_url }}/assets/images/badges/da-individual-member.png"
alt="Drupal Association Individual Member"
@ -7,23 +7,21 @@
/>
</a>
<div class="acquia-badges">
<div class="badge">
<img
src="{{ site.images_url }}/assets/images/badges/acquia-d8-developer.png"
alt="Acquia Certified Developer - Drupal 8 Exam Badge"
/>
</div>
<div class="badge">
<img
src="{{ site.images_url }}/assets/images/badges/acquia-d8-back-end.png"
alt="Acquia Certified Back End Specialist - Drupal 8 Exam Badge"
/>
</div>
<div class="db mb3 dt">
{% for badge in [
{ image: 'acquia-d8-developer.png', alt: 'Acquia Certified Developer - Drupal 8 Exam Badge' },
{ image: 'acquia-d8-back-end.png', alt: 'Acquia Certified Back End Specialist - Drupal 8 Exam Badge' }
] %}
<div class="dtc">
<img
src="{{ site.images_url }}/assets/images/badges/{{ badge.image }}"
alt="{{ badge.alt }}"
/>
</div>
{% endfor %}
</div>
<a href="http://conference.phpnw.org.uk/phpnw17" class="is-block">
<a href="http://conference.phpnw.org.uk/phpnw17" class="db">
<img src="{{ site.images_url }}/assets/images/badges/phpnw17.png" alt="">
</a>
</div>

View file

@ -1,12 +1,17 @@
<div class="meetups">
<h2>Things that I organise</h2>
<ul>
<div class="mt4">
<h2 class="mb3">Things that I organise</h2>
<ul class="list flex pa0 mt0">
{% for meetup in site.meetups %}
<li class="meetups--{{ meetup.name|lower|replace({ ' ': '-' }) }}">
<a href="{{ meetup.url }}" title="{{ meetup.name }}">
<li>
<a
href="{{ meetup.url }}"
title="{{ meetup.name }}"
class="dib {% if not loop.last %}mr2{% endif %}">
<img
src="{{ site.images_url }}/assets/images/meetups/{{ meetup.logo }}"
alt="{{ meetup.name }} logo"
class="h3"
>
</a>
</li>

View file

@ -1,45 +1,31 @@
<nav class="nav has-shadow" id="top">
<div class="container">
<div class="nav-left">
<a class="nav-item">
<div class="nav-item">
<a href="{{ site.url }}">
{{ site.title }}
</a>
</div>
<header class="w-100 pa3 ph5-ns bg-white">
<div class="db dt-ns mw9 center w-100">
<div class="db dtc-ns v-mid tl w-50">
<a href="/" class="dib f5 f4-ns mt0 mb1 link black-70" title="Home">
{{ site.title }}
</a>
</div>
<span class="nav-toggle">
<span></span>
<span></span>
<span></span>
</span>
<nav class="db dtc-ns v-mid w-100 tl tr-ns mt2 mt0-ns">
<a href="/" class="f6 hover-blue link black-70 ml2 ml-m ml4-l dib">
About
</a>
<div class="nav-right nav-menu">
<a class="nav-item is-tab {{ page.url == '/.' ? 'is-active' }}" href="/">
About
</a>
<a href="/components/" class="f6 hover-blue link black-70 ml2 ml-m ml4-l dib">
Experience
</a>
<a class="nav-item is-tab {{ page.url == '/experience' ? 'is-active' }}" href="/experience">
Experience
</a>
<a href="/gallery/" class="f6 hover-blue link black-70 ml2 ml-m ml4-l dib">
Testimonials
</a>
<a class="nav-item is-tab {{ page.url == '/testimonials' ? 'is-active' }}" href="/testimonials">
Testimonials
</a>
<a href="/resources/" class="f6 hover-blue link black-70 ml2 ml-m ml4-l dib">
Talks
</a>
<a class="nav-item is-tab {{ page.url == '/talks' or '/talks/' in page.url ? 'is-active' }}" href="/talks">
Talks
</a>
<a class="nav-item is-tab {{ page.url == '/blog' or '/blog/' in page.url ? 'is-active' }}" href="/blog">
Blog
</a>
<a class="nav-item is-tab {{ page.url == '/contact' or '/contact/' in page.url ? 'is-active' }}" href="/contact">
Contact
</a>
</div>
<a href="http://github.com/tachyons-css/tachyons/" class="f6 hover-blue link black-70 ml2 ml-m ml4-l dn dib-l">
Contact
</a>
</nav>
</div>
</nav>
</header>

View file

@ -1,7 +1,7 @@
<div class="about-author is-clearfix mt-2">
<div class="cf mt2">
<h2>About the Author</h2>
<img src="{{ site.images_url }}{{ site.avatar.url }}" alt="Picture of Oliver" class="is-circle is-pulled-left mr-1 mb-1">
<img src="{{ site.images_url }}{{ site.avatar.url }}" alt="Picture of Oliver" class="w3 mr3 br-100 fl">
<p>Oliver Davies is a Web Developer, System Administrator and Drupal specialist based in the UK. He is a {{ site.work.role }} at <a href="{{ site.companies[site.work.company].url }}">{{ site.companies[site.work.company].name }}</a> and also provides freelance consultancy services for Drupal websites, PHP applications and Linux servers.</p>
</div>

View file

@ -1,4 +1,8 @@
{% set title_tag = title_tag ?: 'h1' %}
<{{ title_tag }}>{{ page.title }}</{{ title_tag }}>
<{{ title_tag }} class="mb1">
{{ page.title }}
</{{ title_tag }}>
<p class="posted">{{ page.date|date('jS F Y') }}</p>
<p class="mt0 black-50">
{{ page.date|date('jS F Y') }}
</p>

View file

@ -1,5 +1,5 @@
{% if page.blocks.intro_image %}
<div class="has-text-centered">
<div class="mv3 tc">
{{ page.blocks.intro_image|raw }}
</div>
{% endif %}

View file

@ -1,15 +1,15 @@
<div class="post-pager is-clearfix is-flex mt-2">
<div class="flex mt3">
{% if page.previous_post %}
<div class="is-half flex">
<a href="{{ page.previous_post.url }}">
<div class="w-50-ns">
<a href="{{ page.previous_post.url }}" class="blue1">
&laquo; {{ page.previous_post.title }}
</a>
</div>
{% endif %}
{% if page.next_post %}
<div class="is-half flex has-text-right">
<a href="{{ page.next_post.url }}">
<div class="w-50-ns tr">
<a href="{{ page.next_post.url }}" class="blue1">
{{ page.next_post.title }} &raquo;
</a>
</div>

View file

@ -1,18 +1,15 @@
{% if data.posts and page.url != '/blog' %}
<div class="latest-posts panel panel-default">
<div class="latest-posts__heading panel-heading">Latest blog posts</div>
<div class="lh-copy">
<h2>Latest blog posts</h2>
{% for post in data.posts|slice(0, site.latest_posts) %}
<div class="post panel-block">
<div>
<span class="post__title">
<a href="{{ post.url }}">
{{ post.title }}
</a>
</span> -
<span class="post__date">{{ post.date|date(site.default_date_format) }}</span>
</div>
</div>
{% endfor %}
<ul class="list pa0">
{% for post in data.posts|slice(0, site.latest_posts) %}
<li>
<a href="{{ post.url }}">
{{ post.title }}
</a>
</li>
{% endfor %}
</ul>
</div>
{% endif %}

View file

@ -1,17 +1,17 @@
<div class="table-responsive">
<table class="talks-table table is-striped">
<table class="w-100 ba b--moon-gray">
<thead>
<tr>
<th style="width: 20%">Date</th>
<tr class="striped--light-gray">
<th class="w-20 pa2 tl">Date</th>
{% if not talk_page %}
<th style="width: 40%">Talk</th>
<th class="w-40 pa2 tl">Talk</th>
{% endif %}
<th>Event</th>
<th class="pa2 tl">Event</th>
{% if not upcoming %}
<th style="width: 10%">Feedback</th>
<th class="w-12 pa2 tl">Feedback</th>
{% endif %}
</tr>
</thead>
@ -23,54 +23,52 @@
{% for item in row.talks if key == item.filename|split('.')|first %}
{% set talk = item %}
{% endfor %}
<tr>
<td class="vertical-middle">
<tr class="striped--near-white">
<td class="pa2">
{{ row.date.date|date(row.date.fuzzy_date ? 'F Y' : 'j F Y') }}
{% if row.date.time %}
<small class="is-block">{{ row.date.time }}</small>
<small class="db">{{ row.date.time }}</small>
{% endif %}
</td>
{% if not talk_page %}
<td>
<td class="pa2">
{% if row.date.talk.title is defined %}
{{ row.date.talk.title }}
{% else %}
<a href="{{ talk.url }}">{{ talk.title }}</a>
<a href="{{ talk.url }}" class="blue">{{ talk.title }}</a>
{% endif %}
<small class="is-block">
<small class="db">
{{ row.date.talk.type ?: talk.type }}
</small>
</td>
{% endif %}
<td class="vertical-middle">
<td class="pa2">
{% if row.event.website %}
<a href="{{ row.event.website }}">
<a href="{{ row.event.website }}" class="blue">
{{ row.event.name }}
</a>
{% else %}
{{ row.event.name }}
{% endif %}
<small class="is-block">
<small class="db">
{{ row.event.location }}
</small>
</td>
{% if not upcoming %}
<td class="vertical-middle">
<td class="">
{% if row.date.feedback %}
<a
href="{{ row.date.feedback }}"
class="button is-primary"
class="bg-blue br2 pa2 white-90 no-underline dib dim"
title="Read or leave feedback for this talk"
>
<!-- <span class="icon is-small">
<i class="fa fa-comment-o" style="margin-right: 8px"></i>
</span> -->
<i class="fa fa-comment-o mr1"></i>
joind.in
</a>
{% endif %}

View file

@ -24,20 +24,20 @@
<link rel="icon" href="{{ site.avatar.url }}?s={{ size }}" sizes="{{ size }}x{{ size }}">
{% endfor %}
</head>
<body class="{{ page.blocks.body_classes }}">
<body class="helvetica black-90 {{ page.blocks.body_classes }}">
{% include 'nav' %}
<section class="section">
<div class="container">
<div class="columns">
<main class="content column is-9">
<div class="ph3 ph5-l">
<div class="f6">
<div class="flex-l">
<main class="w-75-l pr4 lh-copy">
{% block content_top %}{% endblock %}
{% block content_wrapper %}{% block content %}{% endblock %}{% endblock %}
{% block content_bottom %}{% endblock %}
</main>
{% block sidebar_wrapper %}
<div class="column is-3">
<div class="w-25-l ph3">
{% block sidebar %}
{% include 'badges' %}
{% include 'availability' %}
@ -45,20 +45,17 @@
{% endblock %}
</div>
{% endblock %}
</div>
</div>
</div>{# .row #}
</div>{# .container #}
</section>
<section class="section">
<footer class="container content">
<p class="copyright">
<footer class="mt4 bt b--moon-gray">
<p class="f6">
&copy; 2010-{{ 'now'|date('Y') }} {{ site.title }}. Built with <a href="https://sculpin.io">Sculpin</a>, <a href="http://bulma.io">Bulma</a> and <a href="https://gulpjs.com">Gulp</a>.
</p>
{% include 'meetups' %}
</footer>
</section>
</div>
<script src="{{ site.url }}/assets/js/main.js"></script>

View file

@ -8,7 +8,7 @@
</div>
{% if page.slides.embed %}
<div class="mt-2">
<div class="mt2">
<h2>Slides</h2>
<div class="talk-slides">
{{ page.slides.embed|raw }}
@ -17,15 +17,16 @@
{% endif %}
{% if page.video.embed %}
<div class="mt-2">
<div class="mt2">
<h2>Video</h2>
<div class="embed-container">
<div class="video w-100 relative">
{{ page.video.embed|raw }}
</div>
</div>
{% endif %}
<div class="mt-3">
<div class="mt4">
<h2>Events</h2>
{% set events = [] %}

View file

@ -16,9 +16,7 @@ meta:
slug: drupalcamp-bristol-early-bird-tickets-sessions-sponsors
---
{% block intro_image %}
<div class="has-text-centered">
<img src="/assets/images/blog/drupalcamp-bristol-17-logo.jpg" alt="DrupalCamp Bristol 2017 logo">
</div>
<img src="/assets/images/blog/drupalcamp-bristol-17-logo.jpg" alt="DrupalCamp Bristol 2017 logo">
{% endblock %}
{% block excerpt %}

View file

@ -11,11 +11,7 @@ meta:
width: 451
---
{% block intro_image %}
<img
src="/assets/images/blog/jackson-octocat.png"
alt=""
class="mb-2"
>
<img src="/assets/images/blog/jackson-octocat.png" alt="">
{% endblock %}
{% block excerpt %}

View file

@ -9,9 +9,9 @@ use: [posts]
{% block content %}
<h1>Blog</h1>
<ul class="posts list-style-none">
<ul class="list pa0 ma0">
{% for post in page.pagination.items %}
<li class="post is-clearfix mb-2 pb-3">
<li class="cf mb2 pb4 bb b--light-silver">
{{ include('post/header', {
page: post,
title_tag: 'h2'
@ -42,8 +42,6 @@ use: [posts]
{% endif %}
{% endblock %}
{% block body_classes 'page--blog page--blog__list' %}
{% block stylesheets %}
<link rel="stylesheet" href="{{ site.url }}/assets/css/blog.css">
{% endblock %}

View file

@ -7,42 +7,21 @@ use: [posts]
<p>To send me an email, complete the form below.</p>
<form action="https://formspree.io/{{ site.email }}" method="POST">
<div class="form__name field">
<label for="name">Name</label>
<div class="control">
<input type="text" class="input" name="name" required>
</div>
</div>
<label for="name" class="db mb1">Name</label>
<input type="text" class="w-100 pa2 mb3 ba b--black-50" name="name" required>
<div class="form__email field">
<label for="email">Email</label>
<div class="control">
<input type="email" class="input" name="email" required>
</div>
</div>
<label for="email" class="db mb1">Email</label>
<input type="email" class="w-100 pa2 mb3 ba b--black-50" name="email" required>
<div class="form__subject field">
<label for="subject">Subject</label>
<div class="control">
<input type="text" class="input" name="subject" required>
</div>
</div>
<label for="subject" class="db mb1">Subject</label>
<input type="text" class="w-100 pa2 mb3 ba b--black-50" name="subject" required>
<div class="field">
<div class="control">
<label for="message">Message</label>
<textarea name="message" class="textarea" rows="5" required></textarea>
</div>
</div>
<label for="message" class="db mb1">Message</label>
<textarea name="message" class="w-100 pa2 mb3 ba b--black-50" rows="5" required></textarea>
<div class="form__actions">
<button class="button is-primary" type="submit">
<span class="icon is-small" style="margin-right: 5px">
<i class="fa fa-send"></i>
</span>
Send email
</button>
</div>
<button class="b ph3 pv2 input-reset ba b--black bg-transparent pointer f6" type="submit">
Send email
</button>
<input type="hidden" name="_next" value="{{ site.url }}/contact-thanks/" />

View file

@ -12,29 +12,31 @@ redirect:
{% for experience in site.experiences|reverse %}
{% set company = site.companies[experience.company] %}
<div class="experience-item{% if company.logo %} has-logo{% endif %} mb-3">
<div class="mb4">
{% if company.logo %}
<div class="experience-item-logo">
<img src="{{ site.images_url }}/assets/images/experience/{{ company.logo }}" alt="{{ company.name }} logo">
<div class="fr mb3 ml3 mt2">
<img src="{{ site.images_url }}/assets/images/experience/{{ company.logo }}" alt="{{ company.name }} logo" class="mw4">
</div>
{% endif %}
<div class="experience-item-inner">
<h2 class="is-marginless">{{ company.name }}</h2>
<h2 class="mb0">{{ company.name }}</h2>
{% if company.url -%}
<a class="experience-item-website is-inline-block" href="{{ company.url }}">
{{- company.url -}}
</a>
{%- endif %}
<div class="mb3">
{% if company.url -%}
<a class="dib mb1 blue1" href="{{ company.url }}">
{{- company.url -}}
</a>
{%- endif %}
<div class="experience-item-role text-light">
{{- experience.role }}
from
{{ experience.start }}
to
{{ experience.end|default('Present') -}}
{%- if experience.location %} ({{ experience.location }}){% endif %}.
<div class="black-50">
{{- experience.role }}
from
{{ experience.start }}
to
{{ experience.end|default('Present') -}}
{%- if experience.location %} ({{ experience.location }}){% endif %}.
</div>
</div>
{% if experience.description %}

View file

@ -10,12 +10,11 @@ meta:
use: [posts, testimonials]
redirect:
- about/
- consulting/
---
{% block content %}
# About Me
<img src="{{ site.images_url }}{{ site.avatar.url }}" alt="Picture of Oliver" class="me is-circle is-marginless">
<img src="{{ site.images_url }}{{ site.avatar.url }}" alt="Picture of Oliver" class="br-100 mw4">
My name is Oliver Davies (aka [opdavies][1]) - a full-stack Web Developer and System Administrator based in Wales, UK.

View file

@ -2,27 +2,90 @@
layout: page
title: Testimonials
use: [posts]
testimonials:
- name: Ed Welsby
image: ed-welsby.png
role: Senior Developer at <a class="blue1 hover-blue2" 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="blue1 hover-blue2" 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="blue1 hover-blue2" 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 wouldnt hesitate to recommend him others.
- name: Léonie Watson
role: >
Director of Accessibility at <a class="blue1 hover-blue2" 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="blue1 hover-blue2" 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="blue1 hover-blue2" 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="blue1 hover-blue2" 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 %}
{% for testimonial in site.testimonials|reverse %}
<article class="is-clearfix mb-3">
<h2 class="is-marginless">{{ testimonial.name }}</h2>
{% for testimonial in page.testimonials|reverse %}
<article class="cf mb4">
<h2 class="mb1 mt0">{{ testimonial.name }}</h2>
{% if testimonial.image %}
<img
src="{{ site.url }}/assets/images/testimonials/{{ testimonial.image }}"
class="testimonial-image is-pulled-right is-circle ml-2 mb-1"
class="fr mw3 br-100 ml4 mb4"
alt="{{ testimonial.name }}"
>
{% endif %}
{% if testimonial.role %}
<div class="text-light">
{{ testimonial.role|markdown }}
<div class="black-50 mt0">
{{ testimonial.role|raw }}
</div>
{% endif %}
<div class="mt-1">
<div>
{{ testimonial.text|markdown }}
</div>
</article>

View file

@ -2819,7 +2819,13 @@ supports-color@^4.2.0:
dependencies:
has-flag "^2.0.0"
tachyons:
tachyons-sass:
version "4.7.4"
resolved "https://registry.yarnpkg.com/tachyons-sass/-/tachyons-sass-4.7.4.tgz#47199472f444f1451692ec4509c5da700569ea57"
dependencies:
tachyons "^4.7.4"
tachyons@^4.7.4:
version "4.8.1"
resolved "https://registry.yarnpkg.com/tachyons/-/tachyons-4.8.1.tgz#9a3183feecb3240c4dcefee7feecc8259acd7381"