Restrict FROM address with AWS SES domain identities

aws security snippets
Use conditional keys in your SES IAM policies to prevent attackers impersonating your staff.

Linguist syntax highlighting for Drupal file types

Are you sick of reviewing Drupal PRs on Github without syntax highlighting on .module and .install files?

Strategies for Managing a Fleet of Drupal Projects - DrupalGov, 2020

drupalsouth drupal conferences presentations
My presentation on managing fleets of drupal applications at the virtual DrupalGov in November 2020.

Drush 8 Exit Code Workaround

drupal snippets bash
A bug in older versions of drush stop errors bubbling up to shell exit codes. Use this snippet to work-around the problem.

The ultimate CircleCI config for Terraform pull request workflow

terraform circleci github
My Terraform workflow with automated plan comments on pull requests and all changes applied in a pipeline.

Faster, smaller, and sanitized MySQL database dumps

mysql drupal
Sanitize, minify and dump your database in one step with this awesome utility.

Force git to use HTTPS

snippets git
Occasionally you'll encounter an issue where you can't clone git repositories via ssh. Use this trick to force cloning over HTTPS.

Log in to GitHub Docker registry with just a token

github snippets bash
GitHub's new package registry needs both a username and password to authenticate. Use this snippet to derive the username from a token.

Get personal Slack tokens from the web interface

slack snippets
Slack have deprecated personal tokens, but you may still want to script some stuff. Hack your way to success!

Securing Drupal on Kubernetes

drupal kubernetes security presentations
I presented a draft of my DrupalCon talk at the March 2020 Sydney Drupal Meetup.

Cleanup Large S3 Buckets

s3 aws
S3 buckets with thousands or millions of objects and/or revisions can be extremely slow and painful to cleanup. Here's a tool to do this faster.

Supplemental Groups with Gitlab Runner on OpenShift

kubernetes openshift gitlab
Use this method to configure additional groups on gitlab-ci build pods.

K8s Autoscaling Custom Metrics

presentations kubernetes
Lightning talk on autoscaling Kubernetes deployments with custom metrics.

Improve your bash scripts with this boilerplate template

snippets bash
Bash is a finnicky beast. Use this template to make your scripts behave more reliably.

How to generate temporary download links to S3 objects

aws security snippets s3
Pre-signed URLs are a great way to share large files without giving the recipient permanent access. Learn how to use the AWS CLI to create links that expire after a certain amount of time.

AWS KMS cryptographic operations on the command line

aws security snippets
Leverage AWS KMS on the command line using these simple commands.

How to use count with data resources in Terraform

hashicorp terraform snippets
Terraform allows you to loop over resources using the count parameter, including data resources.

New Relic Free Tier on Acquia

A while back Acquia dropped support for configuring the New Relic API key for applications hosted with them - hack it back into existence.

Encrypted Drupal Database Connections with Amazon RDS

drupal security aws
Malicious users can intercept or monitor plaintext data transmitting across unencrypted networks, jeopardising the confidentiality of sensitive data in Drupal applications. This tutorial will show you how to mitigate this type of attack by encrypting your database queries in transit.

Can You Keep a Secret? - Bucharest, 2018

hackcamp drupal conferences security presentations
My presentation on secrets management at DrupalHackCamp 2018 in Bucharest, Romania.

HashiCorp Vault for Drupalers

hackcamp drupal conferences security presentations vault
My presentation on HashiCorp Vault at DrupalHackCamp 2018 in Bucharest, Romania.

Securing Drupal: Storing API Tokens in Lockr

drupal security
As seen in the recent Uber hack, storing secrets such as API tokens in your project repository can leave your organisation vulnerable to data breaches and extortion. This tutorial demonstrates a simple and effective way to mitigate this kind of threat by leveraging Key module to store API tokens in remote key storage.

Can You Keep a Secret? - Auckland, 2017

drupalsouth drupal conferences security presentations
My presentation on secret management at DrupalSouth 2017 in Auckland, NZ.

Speaking at DrupalSouth 2017 in Auckland

drupalsouth drupal conferences
I'll be giving an introduction to secret management, and a number of recipes to leverage amazing tools like Hashicorp Vault in your Drupal projects.

How to build self-deploying applications with Terraform and BitBucket Pipelines.

hashicorp terraform aws s3 hugo
A case study of rebuilding on Hugo.

How to peer two AWS VPCs using Terraform

hashicorp terraform aws networking
A practical example of using Terraform to peer 2 AWS VPCs, configure route tables, and test connectivity between subnets.

Performance: Not an Afterthought

drupalsouth drupal conferences performance presentations
My presentation on Drupal application and hosting performance at DrupalSouth 2015.

Why mind-spinning Bitcoin is revolutionary

I wrote this article for Business Spectator back in 2013. At the time I was the technical lead for their publishing platform, and Alan Kohler kept coming over to my corner of the office to ask about this "bitcoin thing".

Attending Drupal Down Under 2012!

drupalsouth drupal conferences
In a little over a week Drupal Down Under 2012 will commence in Melbourne!

Accessing and using Drupal.settings properties in Selenium tests

selenium drupal testing
A quick-and-dirty method for assigning Drupal.settings properties into Selenium variables.

Installing OS X Leopard on a Dell Mini 9

There are plenty of blog posts out on the interwebs detailing this topic, but after having to sidestep 3 different tutorials and delve deep into the osx86 forums a few times to get my hack mini to where it is now... Lets just say I'll be happy if this saves just one person the frustration and mental anguish I have experienced the last few days.