320 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			320 lines
		
	
	
	
		
			15 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://www.oliverdavies.uk/blog">
 | 
						||
<meta property="og:title" content="Blog"/>
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    <meta property="og:image" content="https://www.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://www.oliverdavies.uk/assets/css/main.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://www.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>Publishing Sculpin Sites with GitHub Pages</h2>
 | 
						||
 | 
						||
<p class="posted text-light">13th July 2017</p>
 | 
						||
 | 
						||
 | 
						||
                                    <p><img
 | 
						||
    src="/assets/images/blog/jackson-octocat.png"
 | 
						||
    alt=""
 | 
						||
    class="is-centered"
 | 
						||
    style="margin-bottom: 20px"
 | 
						||
></p>
 | 
						||
 | 
						||
<p>Earlier this week I moved this site from my personal Linode server to <a href="https://pages.github.com">GitHub Pages</a>.</p>
 | 
						||
 | 
						||
<p>This made sense as I already kept the source code in <a href="https://github.com/opdavies/oliverdavies.uk">on GitHub</a>, the issue was that GitHub Pages doesn’t know how to dynamically parse and generate a Sculpin site like it does with some other static site generators. It can though parse and serve HTML files, which is what Sculpin generates. It’s just a case of how those files are added to GitHub.</p>
 | 
						||
 | 
						||
                
 | 
						||
                <a href="/blog/2017/07/13/publishing-sculpin-sites-with-github-pages/">Read more →</a>
 | 
						||
            </li>
 | 
						||
                    <li class="post">
 | 
						||
                <h2>Introducing the Drupal Meetups Twitterbot</h2>
 | 
						||
 | 
						||
<p class="posted text-light">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 text-light">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 text-light">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>Fixing Drupal SimpleTest issues inside Docker Containers</h2>
 | 
						||
 | 
						||
<p class="posted text-light">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 text-light">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 text-light">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 text-light">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 text-light">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 text-light">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://www.oliverdavies.uk/blog/page/2.html">← Older</a></li>
 | 
						||
                    </ul>
 | 
						||
                                        </main>
 | 
						||
 | 
						||
                                    <div class="col-md-3">
 | 
						||
                                                    <div class="panel badges text-center">
 | 
						||
    <a href="https://assoc.drupal.org/membership" title="I’m a Drupal Association member." class="is-block">
 | 
						||
        <img
 | 
						||
            src="//www.oliverdavies.uk/assets/images/badges/da-individual-member.png"
 | 
						||
            alt="Drupal Association Individual Member"
 | 
						||
            width="200"
 | 
						||
        />
 | 
						||
    </a>
 | 
						||
 | 
						||
    <div class="is-flex align-items-center">
 | 
						||
        <img
 | 
						||
            src="//www.oliverdavies.uk/assets/images/badges/acquia-d8-developer.png"
 | 
						||
            alt="Acquia Certified Developer - Drupal 8 Exam Badge"
 | 
						||
            class="is-2"
 | 
						||
        />
 | 
						||
 | 
						||
        <img
 | 
						||
            src="//www.oliverdavies.uk/assets/images/badges/acquia-d8-back-end.png"
 | 
						||
            alt="Acquia Certified Back End Specialist - Drupal 8 Exam Badge"
 | 
						||
            class="is-2"
 | 
						||
        />
 | 
						||
    </div>
 | 
						||
 | 
						||
    <a href="http://conference.phpnw.org.uk/phpnw17" class="is-block">
 | 
						||
        <img src="//www.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="//www.oliverdavies.uk/assets/images/meetups/drupal-bristol.jpeg"
 | 
						||
                        alt="Drupal Bristol logo"
 | 
						||
                    >
 | 
						||
                </a>
 | 
						||
            </li>
 | 
						||
                    <li class="meetups--drupalcamp-bristol">
 | 
						||
                <a href="http://www.drupalcampbristol.co.uk" title="DrupalCamp Bristol">
 | 
						||
                    <img
 | 
						||
                        src="//www.oliverdavies.uk/assets/images/meetups/drupalcamp-bristol.png"
 | 
						||
                        alt="DrupalCamp Bristol logo"
 | 
						||
                    >
 | 
						||
                </a>
 | 
						||
            </li>
 | 
						||
                    <li class="meetups--phpsw">
 | 
						||
                <a href="http://phpsw.uk" title="PHPSW">
 | 
						||
                    <img
 | 
						||
                        src="//www.oliverdavies.uk/assets/images/meetups/phpsw.jpeg"
 | 
						||
                        alt="PHPSW logo"
 | 
						||
                    >
 | 
						||
                </a>
 | 
						||
            </li>
 | 
						||
            </ul>
 | 
						||
</div>
 | 
						||
        </footer>
 | 
						||
 | 
						||
        <script src="https://www.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>
 |