Upgrade Your Drupal Skills

We trained 1,000+ Drupal Developers over the last decade.

See Advanced Courses NAH, I know Enough
Jan 13 2017
Jan 13

I'm releasing a new series today!!!!!

Over the last year, I've given a talk at DrupalCon, DrupalCorn Camp, and Drupal Camp Colorado all about using Composer and Configuration Management in Drupal 8. Those sessions were around 45 minutes, which is much too short to go in depth, and explain everything thoroughly.

This series is the answer to that issue.

There is just over 1hr 15min of content in 26 videos that fall pretty well into seven parts. Here's the outline:

Part 1: Intro

Part 2: Installing Drupal 8 Locally

  • Creating a New Drupal 8 Project Using the Composer Template
  • Setting Up MAMP to Serve Your Site Locally
  • Using xip.io for Local Device Testing
  • Creating a Drush Alias
  • Installing Drupal with Console
  • Configuring settings.php and settings.local.php
  • Committing Your Project to Git

Part 3: Using Composer

  • Installing and Uninstalling Modules with Composer
  • Installing the Dev Version of Modules
  • Updating and Downgrading Modules
  • Skipping Specific Module Versions
  • Specifying Acceptable Version Ranges
  • Enabling Modules with Drush and Deciding What Version Pattern to Use

Part 4: Configuration Management

  • Setting the Config Directory in settings.php
  • Exporting Config Locally
  • Using the Configuration Installer Install Profile

Part 5: Installing Drupal 8 on a Remote Server

  • Installing the Site on a Production Server with Composer

Part 6: Overriding Settings in Code with settings.local.php

  • Setting up settings.local.php
  • Changing the Site Name and Disabling CSS Aggregation in settings.local.php
  • How to Enable Theme Debugging on Development Sites
  • Overriding Module Configuration (Like Google Analytics) in settings.local.php

Part 7: Putting it all Together

  • Configuring a Local Site and Exporting it's Configuration with Git
  • Pulling Changes to a Remote Site (And some gotchas)
  • Using Drush Shell Aliases to Make Development Easier
  • Verifying the Changes Made on Local and Reflected on Live

I'm pretty excited to finally have this series out, and hope you enjoy it! Oh... did I mention that it's ABSOLUTELY FREE?!?! Well, it is! So, check it out now, and let me know what you think.

Oct 12 2016
Oct 12
163 Easy Local Development Using Kalabox with Mike Pirog - Modules Unraveled Podcast | Modules UnraveledSkip to main content


  • What is Kalabox?
  • Brief story on history Kalabox
  • Is there a plan to use the “official” Docker for mac backend instead of VirtualBox?
  • Current update on state of Kalabox
  • How does Kalabox compare with other local dev tools like Mamp, DrupalVM etc.?
    • Specifically: Speed, flexibility
  • Is Kalabox, or will it be usable with server environments other than Pantheon? Ie: Acquia, VPS, PlatformSH

Use Cases

  • Team standardization
  • Fast local dev
  • Automated repeatable tasks
  • Github workflow?
  • Composer based workflow?
  • Our three month roadmap


  • You mentioned Tandem in the into, and you gave me a brief description before the show, but can you expand a little bit on what that is?
Jul 13 2016
Jul 13
162 Drupal 8 Enterprise Development with Allan Chappell and David Diers - Modules Unraveled Podcast | Modules UnraveledSkip to main content


  • In D7, we used the Migrate Drupal to Drupal module, what’s the case for D8?
    • Speak on pattern of using Migrate Drupal as a basis for a migration.
    • Migration plugins and yml configuration declarations are an improvement on an already excellent module - if you are going to handle migrations like you did in 7 - which might be appropriate depending on your use case
    • Appropriate where you are significantly revising the content model, configuration or site composition.
  • What are some of the pros and cons of the way Migrate Drupal works in D8?
    • Pros
    • Migration of most Drupal settings: registration emails, site name, debug settings, etc.
    • Migration of most fields (work is ongoing to include contrib into upgrade migrations)
    • Migration of all content types with nodes and revisions
    • Cons
    • By default, fixed ids (not ideal for staged work)
    • Miss an opportunity to take out the trash

Configuration management

  • Let’s talk about configuration management. I know from working with you guys that you started out using Features...
    • Tried out a features based approach at first - because it was similar to well established patterns in 7 - but abandoned it for the project
    • Feature branch activity then confex seems to be working out well
    • Configuration import and export has inspired a lot of confidence in getting to known states.
    • The challenge is probably in managing environmental config settings - that’s where Master still might have a place.
    • Using configuration export and import committed to git repo.
    • Challenges of local configuration vs production configuration.
    • Managing code review
    • Automated removal of local configuration
    • Would like to know some other people’s workflows
Jun 30 2016
Jun 30
161 Website Audits and How to Do Them Right with Jon Peck - Modules Unraveled Podcast | Modules UnraveledSkip to main content

Website Audits

  • What is a site audit?
  • Why would you do one?
  • Intended audience
    • New clients? Existing clients?
  • What are the goals of a site-audit?
  • How do you approach a site audit?
    • What are some other approaches you’re aware of?
  • What tools and techniques do you use?
  • How do you present the results?
  • How often should you do them?
  • What are some things to avoid?
Jun 01 2016
Jun 01
  • Jibran Ijaz ‏@JibranIjaz
    What will happen to the workflow initiative if Drupal shop(s) will stop supporting it? #MUP160

  • Jibran Ijaz ‏‏@JibranIjaz
    How can we make sure that this'll be a community driven initiative not specific to someones requirements. #MUP160

  • Steve Persch ‏@stevector
    Do you anticipate support for making/deploying configuration changes through workspaces? #MUP160

  • Steve Persch ‏@stevector
    @JibranIjaz @dickolsson I'd like part of the answer to be consensus formed around Behat-executable stories/scenarios. #MUP160

  • Justin Ludwig @jludwig89
    Can the Workflow Initiative fit into a multi-site install, where content is to be deployed to more than one site? #MUP160

  • Apr 01 2016
    Apr 01

    I’m really excited about today’s show because this is one of those topics that I know that I need to know, but don’t know where to start. So, I’m super excited that you agreed to come on and teach me what you know about regression testing!

    Regression Testing

    • What do you mean when you say “Regression Testing”?
    • Why is regression testing important?
    • Is there anything to install on your computer? (Testing server)
    • What types of regression testing are there?
      • Unit/Functional (Mocha/Chai)
      • Behavioral (WebdriverIO, Behat)
        • Authenticated/Anonymous
      • Qualitative (Sasslint, JS lint, JSON lint)
      • Performance (Pagespeed, Perfbudget)
      • Visual Regression (wraith, phantomcss, webdrivercss)
        • How does this work on pages that have dynamic content. Homepage photos, comments etc.
    • Where would you start?
      • Front-end
      • Back-end
      • Site-builder

    Where to learn

    Mar 23 2016
    Mar 23
    158 Using the Group module as an Alternative to Organic Groups in Drupal 7 and 8 with Kristiaan Van den Eynde - Modules Unraveled Podcast | Modules UnraveledSkip to main content

    Group Module

    • What is the Group module?
      • A really awesome tool to basically create subsites within one site, private content, manage groups of people or all that combined.
    • Why did you create it instead of just using OG?
      • OG DX experience...
    • There are versions for D7 and D8. Which are you more focused on?
    • How is the Group module different from Organic Groups?
      • Good question! The key difference is how the modules decide to structure their data, how that affects the user flow and how the configuration model is built.
    • What is the underlying architecture? OG uses entityreferences heavily. How does Group work?
      • Dedicated Group Entity
    • What’s the status? Is it usable now? (D7 and D8)
      • Available for Drupal 7 and 8, with the 8 version being a large improvement over D7. There’s a few minor things I need to add to the D8 version, but it looks and works great already!
    • Is there much difference between the Drupal 7 and 8 version?
      • Yes and no: the key concept remains the same, but the UX and data model was improved even further. I would really recommend going forward with D8 from now on if you have the chance.

    Use Cases

    • Why should I use Group instead of OG?
      • UX, UX, UX
      • data structure
      • DX
      • But most of all: dedicated functionality, it will all make sense!
    • Users that get something special that you can’t do with Roles
    • Groups of people
    • Groups of content
    • There are so many!!!

    Questions from Twitter

    • Michelle Lauer @bymiche
      How many subgroups can you nest? How are permissions inherited?
    • Michelle Lauer @bymiche
      Can you easily categorize roles within a group?
    • Michelle Lauer @bymiche
      If you have many roles and want to expose them to "managers" - for UX purposes, roles in categories would be easier to look at
    • Erich Beyrent @ebeyrent
      Sounds like a great UX, what about DX - is there a well-defined API as well?
    • Damien McKenna @DamienMcKenna
      Any plans to port some OG modules, e.g. og_menu or og_menu_single?
    • Damien McKenna @DamienMcKenna
      Would it be possible to create og_forum's functionality out of the box or will it require custom work?
    • Damien McKenna @DamienMcKenna
      Are the join forms configurable/fieldable?
    • Ted Bowman @tedbow
      Interested in this. Can you add fields to a membership?
    • Erich Beyrent @ebeyrent
      What doesn't Groups do? Are there features that you feel need to be added before 1.0 release?
    Mar 09 2016
    Mar 09
    157 The Drupal 8 Port of Advagg with Nick Wilde - Modules Unraveled Podcast | Modules UnraveledSkip to main content


    • First, can you give us an overview of what Advagg is?

    The Drupal 8 Port

    • Are you the main maintainer of the D8 version?
    • What was the porting process like?
    • What features are in the Drupal 8 version right now?
    • What's the status of the Drupal 8 version?
    • Do you know of any compatibility issues with other modules?
    • What do you have planned for the future?
    Feb 18 2016
    Feb 18

    Here's the issue

    If you're using MAMP, you might have experienced an issue where a website loads just fine in the browser, but when you try to use a Drush command, you get an error like the following:

    exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory' in core/lib/Drupal/Core/Database/Driver/mysql/Connection.php:146

    To be completely honest, I'm not sure what causes this issue. I think it has to do with the way Drush accesses MySQL. As far as I can tell, Drush is trying to access the system MySQL, instead of the one that comes with MAMP.

    Here's the fix!

    Luckily, this can be easily fixed by changing:

    'host' => 'localhost',


    'host' => '',

    and/or by adding the following line to the database credentials in your settings.php (or settings.local.php) file.

    'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',


    So, for example, if your database credentials look like this in settings.php:

    $databases['default']['default'] = array (
      'database' => 'drupal',
      'username' => 'root',
      'password' => 'root',
      'prefix' => '',
      'host' => 'localhost',
      'port' => '3306',
      'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
      'driver' => 'mysql',

    Change it to this (differences highlighted for clarity):

    $databases['default']['default'] = array (
      'database' => 'drupal',
      'username' => 'root',
      'password' => 'root',
      'prefix' => '',
      'host' => '',
      'port' => '3306',
      'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
      'driver' => 'mysql',
      'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',

    With those updates in the database settings, Drush should work as expected!

    Hope that helps!

    Feb 17 2016
    Feb 17
    156 Using BigPipe to Achieve Incredible Site Speed in Drupal 8 with Wim Leers - Modules Unraveled Podcast | Modules UnraveledSkip to main content

    Big Pipe

    • What is Big Pipe?
    • This isn’t a Drupal specific thing right? Where did the idea of BigPipe come from?
    • How does it work?
      • Builds on Drupal 8’s caching system, specifically cacheability metadata (tags, contexts, max-age)
      • Rendering system (bubbling, placeholders)
      • page cache / dynamic page cache
      • BigPipe is built ON TOP OF ALL OF THE ABOVE
    • Does it work for anonymous and authenticated users?
    • Is this compatible with reverse proxies like Varnish?
    • Does BigPipe affect the need for something like redis or memchache?
    • How does BigPipe relate to authcache?

    Use Cases

    • How can we start using it? What’s the install process?
    • What do we need to do to configure it for our site?
    • Is BigPipe ready to be used?
    • Is there anything like this for Drupal 7?

    Questions from Twitter

    • Daniel Noyola @danielnv18
      What can I do to make my site compatible with BigPipe? O what shouldn't do?
    • Daniel Noyola @danielnv18
      Is it compatible with contrib modules like panels or display suite?
    • Ryan Gibson @ryanissamson
      I may have missed it, when BigPipe is included in D8.1, will it be enabled by default?
    • TheodorosPloumis @theoploumis
      Is the bigpipe caching working with the RESTful responses?

    About Drupal Sun

    Drupal Sun is an Evolving Web project. It allows you to:

    • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
    • Facet based on tags, author, or feed
    • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
    • View the entire article text inline, or in the context of the site where it was created

    See the blog post at Evolving Web

    Evolving Web