Mark Halliwell

Captivate Your Audience.
If your site is designed around utilizing background images, then this module is for you! Whether you need a surgical implementation that only administrators/developers can implement or provide the ability to allow users to attach their own background images to entities, this module has you covered. If your site is designed around utilizing background images, then this module is for you! Whether you need a surgical implementation that only administrators/developers can implement or provide the...

Narayan Newton

Turning One Locust Into A Plague
Locust.io is a great tool for applying load in a controlled manner and measuring response. However, historically speaking nobody has really cared about a solo locust. They just aren't that concerning in the singular. Likewise, load applied from a single point to a moderately complicated infrastructure is both easy to block (or rate limit) and also not very representative of a real world situation. (Aside from the people you inevitably end up talking to who...

Narayan Newton

Say Goodbye To Apache JMeter
Apache JMeter and I have a long and complicated relationship. It is definitely a trusted and valuable tool, but I am also quite confident that certain parts of it will make an appearance in my particular circle of hell. Due to this somewhat uncomfortable partnership, I am always interested in new tools for applying load to an infrastructure and monitoring the results. Locust.io is not exactly a new tool, but I have only recently begun...

Sam Boyer

Engineering Versions at Scale
After a long hiatus, we're back! When we left off last fall, we were looking at the mechanics of version comparison. In this post, we'll get into more practical matters: the approach we actually took to building out Tag1 Quo's version management system. When we started working on Quo, we knew that we were going to lean heavily on versions for pretty much all aspects of the system’s functionality. Many of the individual requests arriving...

Dylan Clear

Continuous Long Term Support
Though it came and went largely unnoticed, February 24th, 2017 marked an important anniversary to tens of thousands of Drupal website owners. February 24th 2017 was the 1-year anniversary of the End-of-Life (EOL) announcement for Drupal 6 as no longer supported by the Drupal community. It is widely known that major Drupal version upgrades require non-trivial resources. Not only do they require significant planning, technical expertise, and budget, but the path is often determined by...

Jeff Sheltren

Stop Disabling SELinux…
Once upon a time, many years ago, I wrote a blog post titled Stop Disabling SELinux! as a response to seeing many users, hosting companies, and development shops disabling SELinux as a first resort without any consideration of the increased security it was bringing them. The post outlines -- in a few easy steps -- how to configure SELinux for a common Drupal setup. But it's applicable to any LAMP application (plus memcached). I'm still...

Sam Boyer

Tag1 Quo
When we left off last time , we’d assembled a definition of what versions are. Now, we’re going to dive into how we use them in Tag1 Quo : comparing them to one another! The general goal is straightforward enough: we want to know if, say, 6.x-1.0 is less than 6.x-1.1 . (Yup!) Or if 6.x-1.0-alpha1 is less than 6.x-1.0 . (Also yup!) Let’s rewrite these two examples as tuple comparisons: {6,1,0,4,0,0} < {6,1,1,4,0,0} =...

Sam Boyer

Tag1 Quo
When Tag1 decided to build Tag1 Quo , we knew there was one question we’d have to answer over, and over, and over again: is there a security update available for this extension? Answering that question - at scale, for many websites, across many extensions, through all the possible versions they might have - is the heart of what Quo does. The problem seems simple enough, but doing it at such scale, for “all” versions...

Greg Lund-Chaix

Zero-downtime
Recently, we were working with one of our clients to diagnose high load on their web servers. We traced the cause of the load to an opcache_reset() call used after code deploys as a way of preventing the PHP OpCache from overfilling as new code was deployed to the servers. The issue was due to (and resolved by)bug #72590, but troubleshooting the problem prompted us to look at ways to non-intrusively restart PHP-FPM. While it...

Randy Fay

Tag1 Quo
Long Term Support for Drupal 6 might be my favorite new feature included in Drupal 8. (I know, that might be stretching things for the fundamentally awesome step forward that Drupal 8 is, but bear with me.) If you're like me, you have loved the power of building websites for people that expose their ideas or services to the world. If you're like me, you've ended up "owning" a number of these websites that you...