Do you really need composer in production?

It is now a common practice to use composer as part of our deployment stack. The recipe goes like this: gitignore your « vendor » directory (or whatever folder your dependencies end up in), but commit your composer.lock file, then deploy. Is this such a good idea?

The recipe goes like this : gitignore your "vendor" directory (or whatever folder your dependencies end up in), but commit your composer.lock file, then deploy.

Introducing Blackfire on Code Enigma servers

The profiling tool is now available to Code Enigma customers. is a profiling tool by the people behind Symfony, SensioLabs. We had a demo of this useful performance profiling tool some months back and decided it looked really good.

SAML ADFS authentication in Drupal

Using Drupal as a Service Provider with an Active Directory Federation Services server as the Identity Provider, using SAML

We'll try to cover the needed step to authenticate (and create if need) Drupal 7 users against an external Active Directory Federation server, using SimpleSAMLphp and the simplesamlphp_auth mo

Time Keeper

Open Sourcing a NW.js-based time tracking desktop application.

One of the great things of working at Code Enigma is the labs time we get every year.

How to show current HTTP requests on any server

A quick note to help if you ever want to monitor incoming HTTP requests regardless of web server infrastructure

If you're ever in a situation where you need to see incoming HTTP requests, maybe to check incoming headers, or you want to know what cookies are being set, or get some clues as to why things aren't being cached, the following command might be helpful:

Processing heavy/lenghty php operations in batches

A "back to the basis" demo of processing operations in batches

Quite often, you'll need to perform operations on such a number of items that it is going to exceed the resources available. We are going to have a look at some ways around this and how to loop over smaller batches.

Developer experience beats all

In this final part of the series of blogs about our hosting services versus PaaS systems, we look at DX and why you don't need "the cloud" to have great developer tools.

So I said in my first post in this series that the developer probably isn't the most important stakeholder when you're selecting your hosting.

Introducing the Selective Watchdog Backend module

How to use the selectlog module to log key warnings and errors to the database log, while acting performance-wise for standard messages on live sites.

In the world of Drupal, it's a common and best practice to disable the Dblog module (Database logging) on production sites, in favour of using the Syslog module, which will take care of logging all php errors, notices, or any custom log messages into the Unix sys

Managed servers versus cloud platforms

The first in a series of blog posts comparing more traditional dedicated server infrastructure to the more fashionable public-cloud platforms prevalent on the market at the moment.

There are so many options out there in the hosting market, and the pricing models and benefits can be so confusing, it's hard to decide who to go with.

Viewport module ready for Drupal 8

A description of the Viewport module for Drupal, already available for Drupal 8

Last week I had the chance to finish off the port of the Viewport module to Drupal 8.

Spinning up a CentOS server for Drupal

A quick start guide to getting going with Drupal on a CentOS server.

Before I start, I make no claim this is the best way to set up CentOS. I'm sure it isn't the only way, and I'm sure there will be other, more thorough, howto articles about the general setup of CentOS that are much better than this one.

Drupal Migrate Tricks: Disabling rules before running a migration.

Plenty of sites use the Rules module, and plenty of sites need to perform data migrations on a regular basis. Learn how to easily work around rules when they get in the way of a migration.

Most Drupal sites make use of the Rules module in some way, and plenty of Drupal sites use the Migrate module to perform either one-off or regular migrations of external data into the site.

Optimise your CSS

Even if you are an experienced front end developer who structures CSS files coherently, concisely and into something that resembles fine art, there are still ways of squeezing a little more performance out of your CSS files by reducing their file size using post processing.

Fairly simple. You'll notice that there's no particular order to the rules, and it could be better optimised. It's rendered out like this.

Drupal Security Audits: What to look for

Drupal security audits are not a simple job, since security holes can be both in code and in the way the site is configured. This article collates the most common things to look for when auditing a Drupal site.

Site audits are one of the services that some of our clients have requested from us in the past.

Track all the things with Google Analytics

Learn how to use custom dimensions and metrics with Google Analytics and Drupal to get in-depth reports of your users engagement.

Certainly, there's no need to introduce Google Analytics as an analytics tool for websites.

WYSIWYG flexibility with the Shortcode module

This blog post covers the steps needed to implement a custom shortcode WYSIWYG widget for Drupal 7, to give site editors with all the flexibility they need to create content.

Giving editors full control over the elements they want to place in their contents is not always an easy task.

Integrating Drupal with Microsoft SharePoint 2013

We present in this publicly available whitepaper detailed information on how you can integrate the Drupal search experience with Microsoft SharePoint 2013 search, to provide a seamless and complete search experience for intranet users in Drupal.

One of the classic results of this is SharePoint being used as an internal document store.

Drupal Views: Combined fields filter

How to use a views-provided filter to search content across multiple content types.

When building a Drupal site, it's very easy to be tempted to build the data model based on the features and options that one can get out of the box in other contributed modules (and I had my rant about it