• Using Tailwind CSS in your Drupal Theme

    5th February 2018

    What is Tailwind? Tailwind is a utility-first CSS framework for rapidly building custom user interfaces. It generates a number of utility classes that you can add to your theme's markup to apply different styling, as well as the ability to apply classes to other markup and create components comprised of …

    Read more →

  • DrupalCamp Bristol 2018 Statement

    30th January 2018

    It’s with heavy hearts that we are announcing there won’t be a DrupalCamp Bristol 2018. The committee have looked at the amount of work required to put the camp on and the capacity we all have and the two numbers are irreconcilable.

    Read more →

  • Writing a new Drupal 8 Module using Test Driven Development (TDD)

    7th November 2017

    I recently gave a talk on automated testing in Drupal talk at DrupalCamp Dublin and as a lunch and learn session for my colleagues at Microserve. As part of the talk, I gave an example of how to build a Drupal 8 module using a test driven approach. I’ve released the module code on GitHub, and this post outlines the steps of the process.

    Read more →

  • Publishing Sculpin Sites with GitHub Pages

    13th July 2017

    Earlier this week I moved this site from my personal Linode server to GitHub Pages.

    This made sense as I already kept the source code in on GitHub, 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.

    Read more →

  • Introducing the Drupal Meetups Twitterbot

    9th June 2017

    The Drupal Meetups Twitterbot 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 one Twitter account where people can get the up to date news from various Drupal meetups.

    Read more →

  • Turning Your Custom Drupal Module into a Feature

    20th May 2017

    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.

    I decided to convert the custom module into a Feature 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.

    To do this, I needed to expose the module to the Features API.

    Read more →

  • DrupalCamp Bristol 2017 - Early Bird Tickets, Call for Sessions, Sponsors

    15th May 2017

    DrupalCamp Bristol 2017 logo

    In less than two months time, DrupalCamp Bristol will be back for our third year! (July seems to come around quicker each year). This is this year’s schedule and venues:

    Read more →

  • Fixing Drupal SimpleTest issues inside Docker Containers

    5th May 2017

    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.

    Here’s an excerpt from my docker-compose.yml file:

    Read more →

  • Nginx Redirects With Query String Arguments

    31st January 2017

    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 domain to the canonical www subdomain.

    Read more →

  • Easier Sculpin Commands with Composer and NPM Scripts

    7th January 2017

    In this video, I show you how I've simplied my Sculpin and Gulp workflow using custom Composer and NPM scripts.

    Read more →


  • Currently no spare part-time capacity.
  • Currently no spare full-time capacity.