Drupal 8 Module Development Training

Last month we had the opportunity to give the Drupal 8 Module Training at NYC Camp at the United Nations. We were using our Stack Starter platform to distribute environments and am happy to say it worked exceptionally well!

With so much changing in the Drupal development world it was a great opportunity to get a bunch of folks up to speed with all the major changes.

Below are the slides we used for the training:

We plan on giving this training at as many camps as we can get involved with. If you are organizing an event or want to get your team up to speed with D8 drop us a line and lets talk.

Our next training is scheduled for NED Camp up in Road Island, hope to see some of you there!

A look back at 2014

Another amazing year has past, 2014 was a challenging, action packed year for me and those around me. I've learned alot of lessons and as a result grew in my understanding of various important topics in business and in life in general. Mostly for myself I wanted to write them down here to hopefully solidly my mind frame at this current time.

Try Drupal 8

So these past few weeks I have been experimenting with Docker. Docker is an open source project which provides a usability layer on top of Linux containers (LXC's). This layer allows us to create full technology stacks encapsulated in portal, maintainable containers. Quite simply we can think of these containers as virtual machines BUT without all the heavy resource requirements.

This lead me to create a container for running Drupal 8. I've published this image on the Docker index here. So what can this technology do for us? Well one thing that impressed me was the fact that we can spin up instances extremely fast. Combine this with a little HTTP proxy magic and we can put together a service to spin up instances with a click of a button. Inspired by some of the awesome work the folks at DotCloud are doing I put together a service for Drupal 8 at

The instance you are getting at is a fresh git checkout of the lastest work being done in the release. I will be updating the instance a few times a week so we can always have to latest to play with.

If you are new to Drupal, a pro Drupal 7 site builder, or just curious about where Drupal is heading and don't have the time or interest to setup a local development environment we have done it for you! Check it out:

Try Drupal 8

I hope to write more about developing this but for now much of my inspiration came from the work of Nick Stinemates from this blog post.

Have fun!

Drupal 8 Core Concepts

Drupal 8 is coming. As Drupal developers we have a wave of change that we need (or should) be preparing for. We will be opening up our system to the ideas shared in our greater PHP community and even greater developer community. The way I see it developers that wrote us off for all our wacky “Drupalisms” may be pleasantly surprised if they take at look at Drupal 8. Below I have outlined some core concepts that we all need to get up to speed with if we plan on developing Drupal 8 applications in the future.

It starts with LOVE.

I find it interesting that people like to pin point specific topics when expressing their emotions regarding horrific acts of violence people commit. It is impossible to state "This is why he did this" and many cases we are all correct with what caused this. We are people. We are dynamic. We are the result of our experiences and environment over time. Combining and applying the same experiences and environment over time for any individual will never guarantee the same individual outcome. This is why we are individuals.

Instead of focusing on the why we should focus on how we can improve our environments and experiences to mitigate the risk of horrible outcomes. The way I look at this is simple. It starts with love. Tell the people around you they are loved. Focus on them, listen to them, communicate with them. If you see people around you are down, ask why, offer a helping hand. This is life, we are extremely lucky to be experiencing this right now. There is no reason why we can't all enjoy this unique ride.

The balance of Structured vs Unstructured content solutions

A recurring conversation we have with clients is how structured OR unstructured their CMS should be. For many large projects with complex workflows, granular permissions, and tight design constraints a more structured approach is a clear choice. For very small projects with limited feature sets and content an unstructured approach may be all you need. Our work normally falls somewhere in the middle of these two paradigms. We have come to learn that the "middle" is a vast gradient with varying degrees of complexity and requirements. In this series of posts I would like to explore some of the thought processes we put into determining how much structure is required on a project.

For this post I will be laying some ground work for what we mean when we discuss structured content. In the next post I will map this ground work to how it pertains to content management frameworks, such as Drupal.

What do you mean by "structured content" and "unstructured content"

First lets provide a general overview. When we think of structured content we think of a collection of information. This collection of information contains smaller pieces of information. Each piece could be a phone number, a first name, a title... or anything for that matter. These pieces of information within our structured content represents something specific. If we were to represent this as a simple XML document it would look something like this:

Jane Doe Contact File


Even if you are not familiar with XML you can figure out what each field means rather easily. This is due to the fact we wrapped each piece of information with "meta data" that describes the information it contains. We effectively provided structure to our information.

If we compare this to an unstructured document:

Jane Doe Contact File

We see that there is no "meta data" surrounding the fields in the unstructured version. This make it harder for both people AND machines to decipher what each piece of information represents.

The problem we are interested in is how to properly strike a balance between these two methods.

Vagrant and Local Dev Setup

This week we setup the Vagrant virtualization tool to see what it is all about. After getting back from this past weekends Drupal Camp CT there seems to be some talk about how it can be valuable. Vagrant seems like a good solution for development teams to share standardized environments to work off of. This is good news for anyone who has had to spend (wasted?) time troubleshooting disparate environments chasing that frustrating statement... "Well it works on MY machine".

Vagrant uses either Puppet or Chef for configuration management. This is pretty cool due to the fact that you can version control your Chef recipes and easily share them with your team. Another time saver is the fact that there is a Drupal project that has some preconfigured recipes to get you up an running fast!

Below are a couple "gotchas" that we have run across when setting this up:

  1. After running 'vagrant up' for the first time you need to actually install your Drupal site.
  2. If you are running vagrant on a Windows 7 machine you need to use an ssh client, such as Putty to access. If your using Putty you want to make sure you convert the private key shipped with vagrant to a .ppk file using PuttyGen.

Not sure if this is a tool we are going to continue to use but it seems to be worth keeping an eye on. I am still a big fan of Quickstart and the drush qc tool set.

Happy building!

First level taxonomy views

Here is a quick tip that has proved helpful in a few different instances. Say you have a taxonomy vocabulary that has a set of root terms and these terms have children. For example:


Now say you want to configure a view that only shows the first level of this vocabulary. For example:


This is pretty easy to do and can prove useful when wanting to show a top level view of your terms. You can accomplish this with two steps within a term view:

1. Add a relationship to the ‘Parent Term’.
2. Add a filter using the ‘Parent Term’ relationship against the Term Name and set the operator to ‘Is Empty (NULL)’

Simple as that.

Happy Drupaling!


Subscribe to RSS - blogs