302 lines
14 KiB
HTML
302 lines
14 KiB
HTML
<!DOCTYPE html>
|
||
<html class="no-js" lang="en-GB">
|
||
<head>
|
||
<title>Blog | Oliver Davies</title>
|
||
|
||
<meta charset="UTF-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
|
||
|
||
<meta property="og:url" content="https://opdavies.github.io/oliverdavies.uk/blog">
|
||
<meta property="og:title" content="Blog"/>
|
||
|
||
|
||
|
||
<meta property="og:image" content="https://opdavies.github.io/oliverdavies.uk/assets/images/me-precedent.jpg"/>
|
||
<meta property="og:image:height" content="327"/>
|
||
<meta property="og:image:type" content="image/jpg">
|
||
<meta property="og:image:width" content="327"/>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="https://opdavies.github.io/oliverdavies.uk/assets/css/main.css">
|
||
<link rel="stylesheet" href="https://opdavies.github.io/oliverdavies.uk/assets/css/blog.css">
|
||
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=57" sizes="57x57">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=114" sizes="114x114">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=72" sizes="72x72">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=144" sizes="144x144">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=60" sizes="60x60">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=120" sizes="120x120">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=76" sizes="76x76">
|
||
<link rel="apple-touch-icon" href="/assets/images/me-precedent.jpg?s=152" sizes="152x152">
|
||
|
||
<link rel="icon" href="/assets/images/me-precedent.jpg?s=160" sizes="160x160">
|
||
<link rel="icon" href="/assets/images/me-precedent.jpg?s=96" sizes="96x96">
|
||
<link rel="icon" href="/assets/images/me-precedent.jpg?s=32" sizes="32x32">
|
||
<link rel="icon" href="/assets/images/me-precedent.jpg?s=16" sizes="16x16">
|
||
</head>
|
||
<body class="page--blog page--blog__list">
|
||
<nav class="navbar navbar-inverse navbar-fixed-top">
|
||
<div class="container">
|
||
<div class="navbar-header">
|
||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
||
<span class="sr-only">Toggle navigation</span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
</button>
|
||
<a class="navbar-brand" href="https://opdavies.github.io/oliverdavies.uk/">Oliver Davies</a>
|
||
</div>
|
||
|
||
<div id="navbar" class="collapse navbar-collapse" role="navigation">
|
||
<ul class="nav navbar-nav">
|
||
<li class="">
|
||
<a href="/">About</a>
|
||
</li>
|
||
|
||
<li class="">
|
||
<a href="/experience">Experience</a>
|
||
</li>
|
||
|
||
<li class="">
|
||
<a href="/testimonials">Testimonials</a>
|
||
</li>
|
||
|
||
<li class="">
|
||
<a href="/talks">Talks</a>
|
||
</li>
|
||
|
||
<li class="active">
|
||
<a href="/blog">Blog</a>
|
||
</li>
|
||
|
||
<li class="">
|
||
<a href="/contact">Contact</a>
|
||
</li>
|
||
</ul>
|
||
</div> </div>
|
||
</nav>
|
||
|
||
<div class="container">
|
||
<div class="row">
|
||
<main class="col-md-9">
|
||
<h1>Blog</h1>
|
||
|
||
<ul class="posts">
|
||
<li class="post">
|
||
<h2>Introducing the Drupal Meetups Twitterbot</h2>
|
||
|
||
<p class="posted">9th June 2017</p>
|
||
|
||
|
||
<p><img src="/assets/images/blog/drupal-meetups-twitterbot.png" alt="" class="is-centered"></p>
|
||
|
||
<p>The <a href="https://github.com/opdavies/drupal-meetups-twitterbot">Drupal Meetups Twitterbot</a> is a small project that I worked on a few months ago, but hadn't got around to promoting yet. It’s intention is to provide <a href="https://twitter.com/drupal_meetups">one Twitter account</a> where people can get the up to date news from various Drupal meetups.</p>
|
||
|
||
|
||
<a href="/blog/2017/06/09/introducing-the-drupal-meetups-twitterbot">Read more →</a>
|
||
</li>
|
||
<li class="post">
|
||
<h2>Turning Your Custom Drupal Module into a Feature</h2>
|
||
|
||
<p class="posted">20th May 2017</p>
|
||
|
||
|
||
<p>Yesterday I was fixing a bug in an inherited Drupal 7 custom module, and I decided that I was going to add some tests to ensure that the bug was fixed and doesn’t get accidentially re-introduced in the future. The test though required me to have a particular content type and fields which are specific to this site, so weren’t present within the standard installation profile used to run tests.</p>
|
||
|
||
<p>I decided to convert the custom module into a <a href="https://www.drupal.org/project/features">Feature</a> so that the content type and it’s fields could be added to it, and therefore present on the testing site once the module is installed.</p>
|
||
|
||
<p>To do this, I needed to expose the module to the Features API.</p>
|
||
|
||
|
||
<a href="/blog/2017/05/20/turning-drupal-module-into-feature">Read more →</a>
|
||
</li>
|
||
<li class="post">
|
||
<h2>DrupalCamp Bristol 2017 - Early Bird Tickets, Call for Sessions, Sponsors</h2>
|
||
|
||
<p class="posted">15th May 2017</p>
|
||
|
||
|
||
<p><img src="/assets/images/blog/drupalcamp-bristol-17-logo.jpg" alt="DrupalCamp Bristol 2017 logo" class="is-centered"></p>
|
||
|
||
<p>In less than two months time, <a href="https://2017.drupalcampbristol.co.uk">DrupalCamp Bristol</a> will be back for our third year! (July seems to come around quicker each year). This is this year’s schedule and venues:</p>
|
||
|
||
<ul>
|
||
<li>30th June - CXO (Business) day - <a href="http://www.watershed.co.uk">Watershed</a></li>
|
||
<li>1st July - Developer conference - <a href="http://www.bris.ac.uk/chemistry">University of Bristol, School of Chemistry</a></li>
|
||
<li>2nd July - Contribution sprints - Venue TBC</li>
|
||
</ul>
|
||
|
||
|
||
<a href="/blog/2017/05/15/drupalcamp-bristol-early-bird-tickets-sessions-sponsors">Read more →</a>
|
||
</li>
|
||
<li class="post">
|
||
<h2>Updating Override Node Options Tests</h2>
|
||
|
||
<p class="posted">5th May 2017</p>
|
||
|
||
|
||
<p>Recently, I reviewed a patch in the Override Node Options module issue queue. For those not familiar with it, the module adds extra permissions for node options like "authored by" and "published on" which are normally only available to users with the administer nodes permission. What the patch does is …</p>
|
||
|
||
<a href="/blog/2017/05/05/updating-override-node-options-tests">Read more →</a>
|
||
</li>
|
||
<li class="post">
|
||
<h2>Fixing Drupal SimpleTest issues inside Docker Containers</h2>
|
||
|
||
<p class="posted">5th May 2017</p>
|
||
|
||
|
||
<p>I’ve been a Drupal VM user for a long time, but lately I’ve been using a combination Drupal VM and Docker for my local development environment. There were a couple of issues preventing me from completely switching to Docker - one of which being that when I tried running of my Simpletest tests, a lot of them would fail where they would pass when run within Drupal VM.</p>
|
||
|
||
<p>Here’s an excerpt from my <code>docker-compose.yml</code> file:</p>
|
||
|
||
|
||
<a href="/blog/2017/05/05/fixing-drupal-simpletest-docker">Read more →</a>
|
||
</li>
|
||
<li class="post">
|
||
<h2>Nginx Redirects With Query String Arguments</h2>
|
||
|
||
<p class="posted">31st January 2017</p>
|
||
|
||
|
||
<p>This is an example of how my Nginx configuration looked to redirect from an old domain to a new one, and also to redirect from the root <code>example.com</code> domain to the canonical <code>www</code> subdomain.</p>
|
||
|
||
|
||
<a href="/blog/2017/01/31/nginx-redirects-with-query-string-arguments">Read more →</a>
|
||
</li>
|
||
<li class="post">
|
||
<h2>Easier Sculpin Commands with Composer and NPM Scripts</h2>
|
||
|
||
<p class="posted">7th January 2017</p>
|
||
|
||
|
||
<p>In this video, I show you how I've simplied my Sculpin and Gulp workflow using custom Composer and NPM scripts.</p>
|
||
|
||
|
||
<a href="/blog/2017/01/07/easier-sculpin-commands-with-composer-and-npm-scripts">Read more →</a>
|
||
</li>
|
||
<li class="post">
|
||
<h2>Drupal VM Generator 2.9.1 Released</h2>
|
||
|
||
<p class="posted">30th December 2016</p>
|
||
|
||
|
||
<p>I spent some time yesterday working on the <a href="http://www.drupalvmgenerator.com">Drupal VM Generator</a>, and have released versions 2.8.1, 2.9.0 and 2.9.1.</p>
|
||
|
||
|
||
<a href="/blog/2016/12/30/drupal-vm-generator-291-released">Read more →</a>
|
||
</li>
|
||
<li class="post">
|
||
<h2>Building Gmail Filters with PHP</h2>
|
||
|
||
<p class="posted">15th July 2016</p>
|
||
|
||
|
||
<p>Earlier this week I wrote a small PHP library called GmailFilterBuilder that allows you to write Gmail filters in PHP and export them to XML.
|
||
|
||
I was already aware of a Ruby library called gmail-britta that does the same thing, but a) I’m not that familiar with Ruby so the syntax …</p>
|
||
|
||
<a href="/blog/2016/07/15/building-gmail-filters-with-php">Read more →</a>
|
||
</li>
|
||
<li class="post">
|
||
<h2>Simplifying Drupal Migrations with xautoload</h2>
|
||
|
||
<p class="posted">3rd May 2016</p>
|
||
|
||
|
||
<p>How to use the <a href="https://www.drupal.org/project/xautoload">xautoload</a> module to autoload migration classes within your Drupal 7 migration modules.</p>
|
||
|
||
|
||
<a href="/blog/2016/05/03/simplifying-drupal-migrations-with-xautoload">Read more →</a>
|
||
</li>
|
||
</ul>
|
||
|
||
<ul class="pager">
|
||
<li class="previous"><a href="https://opdavies.github.io/oliverdavies.uk/blog/page/2.html">← Older</a></li>
|
||
</ul>
|
||
</main>
|
||
|
||
<div class="col-md-3">
|
||
<div class="panel badges text-center">
|
||
<a class="badge--da-member" href="https://assoc.drupal.org/membership" title="I’m a Drupal Association member.">
|
||
<img
|
||
src="https://opdavies.github.io/oliverdavies.uk/assets/images/da-individual-member.png"
|
||
alt="Drupal Association Individual Member"
|
||
width="152"
|
||
>
|
||
</a>
|
||
|
||
<a href="http://drupalcores.com/#opdavies">
|
||
<img
|
||
alt="I built Drupal 8 with hand holding a wrench on blue background"
|
||
src="https://opdavies.github.io/oliverdavies.uk/assets/images/drupal-8.jpg"
|
||
/>
|
||
</a>
|
||
|
||
<img
|
||
src="https://opdavies.github.io/oliverdavies.uk/assets/images/badges/acquia-certified-developer-drupal-8.png"
|
||
alt="Acquia Certified Developer - Drupal 8 Exam Badge"
|
||
height="147" width="147"
|
||
/>
|
||
|
||
<a href="http://conference.phpnw.org.uk/phpnw17">
|
||
<img src="https://opdavies.github.io/oliverdavies.uk/assets/images/badges/phpnw17.png" alt="">
|
||
</a>
|
||
</div>
|
||
<div class="availability panel panel-default">
|
||
<div class="panel-heading">Availability</div>
|
||
|
||
<div class="panel-body">
|
||
<p>
|
||
<i class="fa fa-thumbs-o-up text-warning"></i>
|
||
|
||
|
||
Currently have limited part-time capacity
|
||
</p>
|
||
<p>
|
||
<i class="fa fa-thumbs-o-down text-danger"></i>
|
||
|
||
Currently no spare full-time capacity.
|
||
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div> </div>
|
||
<footer class="container">
|
||
<p class="copyright">
|
||
© 2010-2017 Oliver Davies. Built with <a href="https://sculpin.io">Sculpin</a>.
|
||
</p>
|
||
|
||
<div class="meetups">
|
||
<h2>Things that I organise</h2>
|
||
<ul>
|
||
<li class="meetups--drupal-bristol">
|
||
<a href="http://www.drupalbristol.org.uk" title="Drupal Bristol">
|
||
<img src="https://opdavies.github.io/oliverdavies.uk/assets/images/meetups/drupal-bristol.jpeg" alt="Drupal Bristol">
|
||
</a>
|
||
</li>
|
||
<li class="meetups--drupalcamp-bristol">
|
||
<a href="http://www.drupalcampbristol.co.uk" title="DrupalCamp Bristol">
|
||
<img src="https://opdavies.github.io/oliverdavies.uk/assets/images/meetups/drupalcamp-bristol.png" alt="DrupalCamp Bristol">
|
||
</a>
|
||
</li>
|
||
<li class="meetups--phpsw">
|
||
<a href="http://phpsw.uk" title="PHPSW">
|
||
<img src="https://opdavies.github.io/oliverdavies.uk/assets/images/meetups/phpsw.jpeg" alt="PHPSW">
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</footer>
|
||
|
||
<script src="https://opdavies.github.io/oliverdavies.uk/assets/js/site.js"></script>
|
||
|
||
<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-11967257-1', 'auto'); ga('send', 'pageview');</script>
|
||
|
||
</body>
|
||
</html>
|