How I've started using feature flags within a client's Sculpin website.
This is where I publish my personal blog posts as well as technical posts and tutorials on topics such as Drupal, PHP, Tailwind CSS, automated testing, and systems administration.
It's been a busy six months since I started working as a Lead Software Developer at Transport for Wales.
I'm starting development on a new Drupal distribution for building meetup group websites.
My views on the definitions of "continuous integration".
Windows utilities, continuous integration and delivery, and writing tests.
I've recently been using Neovim for all of my coding, as well as for my blog posts and slide decks.
Developing on Windows, organising dotfiles, and helping organise DrupalCon.
Starting at Transport for Wales.
My notes from using pdfpc (PDF Presenter Console).
I recently released my first images to the Docker Hub, for ADR Tools, the Sculpin site generator, and rst2pdf.
A list of Docker resources that I've compiled.
How to use the Decorator design pattern with Drupal 7's EntityMetadataWrapper to extend it, and add and refactor custom methods.
How to use Drupal 7's EntityMetadataWrapper to cleanly retrieve user profile field data.
Here are the results from the session survey for my DrupalCon session (Test-Driven Drupal) on Drupal automated testing and test-driven development.
Links to the video and slides from my automated testing session from DrupalCon Europe.
How to exclude certain PHPCS sniffs within your PHPUnit tests, so that you can write your tests methods how you'd like without getting coding standards errors.
If you attended my automated testing with Drupal workshop this weekend, here are the links.
A collection of all of the UIs that I've rebuilt using Tailwind CSS for talk demos etc.
How I recently upgraded the Dransible example project from Drupal 8.8 to 9.0.
How to change the colour "gray" to "grey" in Tailwind CSS.
I recently did an interview with Code Enigma for their blog.
How to create a custom command to run PHPUnit commands in DDEV.
An introduction to the 'Migrating to Drupal 8' blog post series.
How to have colours in your PHPUnit output when running with GitHub Actions.
I recently joined my friend Gary on his stream to discuss Drupal.
I'm excited to be speaking again at DrupalCon, this time online at DrupalCon Europe.
10 years ago today, I started working for Horse & Country TV in what was my full-time Drupal development role.
I've been quite busy during this lockdown, giving talks remotely at conferences and user groups.
My first blog post has been published on the inviqa.com website.
I'll be presenting on Tailwind CSS and deployments with Ansible at CMS Philly on May 1st.
The work-in-progress codebase for the example application is now on Gitstore.
How to use the .pcss file extension for PostCSS files with Webpack Encore.
How to use Symfony's local web server to run a Drupal 8.8 website.
This year, I’m teaching a workshop at DrupalCamp London.
How to use the PSR-4 autoloading standard for Drupal 7 Simpletest test cases.
I’m going to be attending DrupalCon Europe again this year, but for the first time as a speaker.
Adam Wathan shows a more Tailwind-esque approach to writing Vue.js transitions.
Some resources that I found for testing Ansible roles with a tool called Molecule.
DrupalCamp Bristol is returning next month, and the accepted speakers and sessions have just been announced.
How to write tests for Tailwind CSS plugins using Jest.
How I’ve started structuring my tailwind.js configuration files in preparation for Tailwind 1.0.
How to simplify 'git clone' commands by using the insteadOf configuration option within your .gitconfig file.
A follow-up to my original post on rebuilding Bartik with Tailwind and Vue.js.
Yesterday I published my first module onto NPM, and it’s a plugin for Tailwind CSS to be used alongside Vue.js.
How I rebuilt Drupal’s Bartik theme using Vue.js and Tailwind CSS.
DrupalCamp London early-bird tickets are now available, and their call for sessions is open.
Using Laravel’s Illuminate Collections to debug an issue with a Drupal Commerce promotion.
How to quickly switch between projects in PhpStorm.
Some examples of using Laravel’s Illuminate Collections within Drupal projects.
Trying a different way of structuring Drupal modules, using event subscribers and autowiring.
Announcing the Null User and System User modules.
Fixing a Drupal Commerce error when a user tries to complete a checkout.
Last night was the first meetup of Cardiff’s PHP South Wales user group.
How to configure PhpStorm to run automated tests within Docksal.
Yesterday evening, I did my first workshop, held at the Drupal Bristol user group.
How to leverage environment variables with Drupal and Docksal.
How to write custom commands for Docksal, including one to easily run PHPUnit tests in Drupal 8.
How to revert files using Git, but as a new commit to prevent force pushing.
How to configure Nginx to serve a PHP application from within a subdirectory of another.
How to use Git to split a directory from within an existing repository into it’s own.
This week, the latest version of Drupal 8 was released.
I wasn’t able to make it to DrupalCamp London, but here are some of the tweets that I saw.
Mediacurrent’s "contrib half hour sessions" are back.
Earlier this week we had another hack night, working on the new PHPSW user group website.
Introducing the Private Message Queue module for Drupal 8.
This weekend is DrupalCamp London 2018. I’ll be there along with a number of my Microserve colleagues.
What is Tailwind CSS, and how do I use it in Drupal theme?
Unfortunately, we won’t be running DrupalCamp Bristol this year.
How to write automated tests and follow test driven development for Drupal modules.
How I moved my website to GitHub pages.
I’ve written a twitterbot for promoting Drupal meetups.
How to turn a custom Drupal module into a Feature.
In less than two months time, DrupalCamp Bristol will be back for our third year.
How I managed to get my Drupal SimpleTest tests to run and pass within Docker containers.
How to redirect from an old domain to a new one, and also to redirect from the root example.com domain to the canonical www subdomain.
In this video, I show you how I've simplied my Sculpin and Gulp workflow using custom Composer and NPM scripts.
I’ve released some new versions of the Drupal VM Generator.
How to use PHP to generate and export filters for Gmail.
How to use the xautoload module to autoload migration classes within your Drupal 7 migration modules.
For the past few weeks, I’ve been working on a personal side project based on Drupal VM - the Drupal VM Generator.
How to programmatically load, render and embed an entityform in Drupal 7.
How to use Jenkins to automate building Sculpin websites.
A list of resources that I compiled whilst preparing for my Sculpin and Twig talk at DrupalCamp North.
I just had to update a repo that I forked on GitHub. This is how I did it. Did I do it the correct way?
How to define a minimum Drupal core version for your module or theme.
A look back at 2014.
How to create and include a local settings file to define and override environment-specific variables.
How to load a different settings file per environment on Pantheon.
How to install and configure the Stage File Proxy module to serve remote images on your local Drupal site.
How to use an SASS each loop to easily add multiple fonts to your CSS.
How to update features on the command line using Drush.
Here are the steps that I took to fix Vagrant and point it back at the correct VM.
An explanation of the "git format-patch" command, and how it could be used in Drupal's Git workflow.
Thanks everyone or their comments about my move to the Drupal Association.
Next week, I'll be working for the Drupal Association.
Here are my slides from my "What is Git Flow?" session at DrupalCamp London.
It's all booked, I'm going to be attending DrupalCamp London.
Here are some bash aliases that I use and find helpful for quickly writing Git and Git Flow commands.
How to download different versions of Drupal core using Drush.
How to quickly download a patch file and apply it to a Git repository in one line.
Here are the basic commands that you need to adminster a virtual machine using <a href="http://vagrantup.com" title="The Vagrant Home page">Vagrant</a>.
Avoid bootstrapping Drupal manually in your scratch files - Drush has you covered!
How to quickly create a Zen sub-theme using Drush.
Precedent are sending myself and two of our other Drupal Developers to Drupalcon Prague.
How to use aliases within Domain module for pre-production sites.
Here are some useful links that I've found when researching about unit testing in Drupal using SimpleTest.
Whilst watching Drupalize.me's recent Introduction to Git series, I thought it was useful the way that the current Git branch or tag name was displayed in the bash prompt. Here's how to do it.
Yesterday was my last day working at Nomensa. Next week, I'll be starting as a Senior Developer at Precedent.
After reading numerous blog posts about how to install Sublime Text 2 in Ubuntu, this is definitely the quickest way!
This post outlines the steps required to create your own custom tokens in Drupal.
How to check if a user is logged in by using Drupal core API functions.
Use PHPSass and the Sassy module to use Sass and Compass in your Drupal theme.
How to open Sublime Text from the command line.
I'm happy to report that the Accessible Bristol was launched this week, on Drupal 7.
<a href="http://www.sublimetext.com/2" title="Sublime Text 2">Sublime Text 2</a> has been my text editor of choice for the past few months, and I use it at home, in work, and on any virtual machines that I run. So rather than having to manually re-enter my settings each time, I thought that I'd document them here for future reference.
Yesterday evening I went along and spoke at the UnifiedDiff meetup in Cardiff.
The code needed to display a menu in a Drupal 7 template file.
I'm absolutely delighted to announce that I'm going to be writing an article for Linux Journal magazine's upcoming Drupal special.
This week I released the first version of the Nomensa Accessible Media Player module for Drupal 7. Here's some instructions of how to install and configure it.
After a busy few days, I've released two new contrib Drupal modules.
If you use a lot of process and preprocess functions within your Drupal theme, then your template.php can get very long and it can become difficult to find a certain piece of code. Following the example of the Omega theme, I've started separating my process and preprocess functions into their own files.
An example .info file for a Drupal 7 theme.
How to prevent Apache from displaying the contents of files like CHANGELOG.txt.
How to use a date popup calendar within your custom module.
How to use the .htaccess file to forward to a different domain.
How to checkout a specific revision from a SVN (Subversion) repository.
Today, I had a situation where I was displaying a list of teasers for news article nodes. The article content type had several different fields assigned to it, including main and thumbnail images. In this case, I wanted to have different output and fields displayed when a teaser was displayed compared to when a complete node was displayed.
How to install Nagios on CentOS.
How to create an Omega subtheme on the command line using Drush.
How to generate a SSH key, and how to use to log in to a server using SSH without entering a password.
As the vast majority of the Drupal websites that I currently work on are built on Drupal 7, I thought that it was time that I upgraded this site.
How to install and configure your own SVN server.
How to replicate CCK’s multigroups in Drupal 7 using the Field Collections module.
I've finally uploaded my first module onto Drupal.org!
Proctor & Stevenson are going to be hosting the next Bristol & South West Drupal meetup.
I’m moving jobs.
How to use PHP to display the number of fans of a Facebook page.
How to use the @font-your-face module to embed TypeKit fonts into your Drupal website.
How to perform searches using regular expressions.
The missing code to get totals of galleries and photos.
Grouping galleries by category.
How to create and apply patches, ready for the Drupal.org issue queues.
If you do Drupal and you're in the area, come and join us for the first SWDUG meetup!
My review of Drupal’s Image Caption module.
Updating the galleries’ created and modified dates.
How I started converting and migrating a Coppermine photo gallery into Drupal.
My review of Drupal’s admin:hover module.
My review of Drupal’s Teleport module.
How to add a new taxonomy term to multiple nodes in Drupal using SQL.
How to use the VirtualHostX application to manage virtual hosts on Mac OS X.
In this post, I will be changing values within my Drupal 6 site's database to quickly change the content type of multiple nodes.
In this tutorial, I'll show you how to create a photo gallery which uses photos imported from Flickr.
A list of 10 contributed modules that I currently use on each Drupal project.
How to create a block of social media icons in Drupal.
How to fix the quality of uploaded images in Drupal.
How to use the Imagefield Import module.
How to create a slideshow of images using Drupal’s Fancy Slide module.
How to use the Zenophile module to create a Zen subtheme.
How to send webform emails to a different email address based on another field.
How to create thumbnail images using the ImageCache and ImageCrop modules.
Getting started with Drupal theming by styling Drupal’s taxonomy lists.