Personal Script Directories

Have you written shell scripts or helper programs and wondered how to organize them? Or been frustrated with always updating path or aliases? Here are two tips that helped me.

  • Create a /bin or /script directory in your home directory and add it to your path. Use it for your custom scripts and other executables you want to treat as shell commands.
  • Use Symlinks (symbolic link files) for scripts or binaries that won't go directly into the bin directory. For example, scripts or binaries that are part of a repository or project structure.

While these may seem obvious, it took a tip from a colleague before I organized this way. I've never looked back. Read on for more details

Introducing Group 42 Notes has a new notes section:!

Group 42 Notes is my latest attempt to curate useful information for myself and others.

It's off to a modest start with entries for Bash, Git, Homebrew, and the REAPER DAW (Digital Audio Workstation). I've also moved the Drupal 6 and Drupal 7 Ref sections there. The rest of the Tech Ref section will soon follow. website screen shot

Ansible / Checklvst Integration

Anisble and Checklvst communicatingChecklvst,, is a web-based list editor (I like its keyboard-driven user experience). Given some of my Ansible playbooks generate to-do lists and Checklvst has an API, I wondered how hard integration could be?

Ansible Impressions

Ansible thoughtsAfter using Ansible as a personal DevOps tool for a couple of months, here are some impressions.


  • Outside of work (web development) I look after six Drupal 7 and WordPress sites on shared hosting
  • My local development is done on a MacBook using apache (with some dabbling in Lando/Docker). I've done some wildcarding with dnsmasq and vhosts to streamline local dev site configuration. CMS code is in git repos.
  • My Ansible work is a personal project and I'm the only stakeholder
  • I learned Ansible doing this work

Avoid the Changing Ansible Timestamp Gotcha


Ansible variables are evaluated each time they're used. This means the following playbook vars declaration will always return the current time where ever it's used in the playbook!:

  timestamp: "{{ lookup('pipe', 'date +%Y-%m-%d-%H%M') }}"

This is not the desired situation if the timestamp is used as part of a filename. For example: filename: "backup-{{timestamp}}.sql".

Fortunately, there's an easy solution.

Ansible Starter Setup

Ansible LogoAnsible is an open source IT automation tool. I tend to describe it as a task-runner with a host database (which Ansible calls the inventory). A big selling point is no agent software is needed on managed remote hosts. Details at the Ansible website:

tl;dr: If you're just beginning with Ansible this might help:

Drupal Site Reset BASH Script

I'm experimenting with Drupal 8 and some its new features like migration and configuration management. A reset script is a convenient timesaver and many people have shared their techniques for doing so. Having benefited from other's generosity I wanted to return the favour by sharing my current work-in-progress.

This script:

H5P - Portable Interactive Content in Drupal

H5PH5P is an open source platform-independent authoring and display system for interactive content. Presentations, quizzes, and other interactive content can be created and displayed using building blocks known as H5P content types (different from Drupal content types). Once a piece of content is created it's easily exported to another H5P system. The development environment is open and well documented, allowing the creation of custom H5P content types.

VanDUG April 2017 Meeting

No more performance anxiety encore!

At our April 2017 meeting Renée Stephen gave the Vancouver Drupal User Group (VanDUG) an encore of her Pacific Northwest Drupal Summit (PNWDS) presentation: No more performance anxiety! The presentation walked us through the formal process of server load testing.

Adding and Controlling TinyMCE Fonts in Drupal

Customizing the TinyMCE editor's font selection is straight forward thanks to a hook provided by the Drupal Wysiwyg module. The hook_wysiwyg_editor_settings_alter() function allows a module to update the settings passed to the editor. The programming is simple. Discovering and understanding the values of the settings can be a challenge.


Subscribe to Group 42 RSS