CORS, Cache poisoning and the Vary HTTP header
What is CORSTaken from the MDN web docsCross-Origin Resource Sharing (CORS) is a mechanism that uses additional HTTP headers to tell browsers to give a web application running at one origin, access to...
View ArticleFinding and killing anonymous sessions in Drupal
Ordinarily, sessions in Drupal are created when you log into Drupal, e.g. when you want to create content, or perform some other function that requires authentication.You can however (just like in any...
View ArticleHow many JOINs is too many? Tuning optimizer_search_depth for MySQL with Drupal
BackgroundI was recently part of a migration from AWS (Amazon Aurora - MySQL-Compatible) to Azure (Azure database for MariaDB 10.3) for a large suite of applications. This platform contains a number of...
View ArticlePurge a single domain and it's content from a Fastly service with multiple...
How we configure Fastly at work is typically to use a single Fastly service and add multiple domains to each service. This works well for a number of reasons:Configuration - each service has it's own...
View ArticleHosting Ghost in Kubernetes
Ghost currently is geared towards only hosting 1 copy of Ghost per site, in fact this is explicitly written in the FAQs:Ghost doesn’t support load-balanced clustering or multi-server setups of any...
View ArticleFastly Logging to Amazon S3 in JSON format
One of the cheapest and easiest methods for logging in Fastly is to use Amazon S3. S3 is extremely low cost, and suitable for long term storage and archival of logs.This post will examine how to set...
View ArticleFastly Soft Purge vs Instant Purge - what is the difference?
This topic came up a while ago when Acquia was looking to introduce Soft Purge as an option for their Acquia purge module in Drupal (N.B. not to be confused by the Fastly Drupal module).There appears...
View ArticleDockerfile best practices - stories from the field
This is a collection of things I have come across using Docker over the years and working with kubernetes across thousands of projects. The hope is that there is a nugget of wisdom somewhere in this...
View ArticleBulk import ACL entries into a Fastly ACL
This came up recently, when a customer supplied a text file with several hundred CIDRs, and wanted these inputted into Fastly as an ACL (to control access to a certain site).This was beyond my ability...
View ArticleChoosing the right Amazon EC2 Spot Instances for your workloads
On a recent project we were looking to take advantage of Amazon EC2 spot instances. The main issue was narrowing down the enormous list of instance types so they would be suitable to run our workloads....
View ArticleDrupal and the Open Web in the Australian Government - 2022 edition
This is the complementary blog post for my DrupalSouth Brisbane 2022 session.Have you ever wondered how popular Drupal is in your local state and at the Australian Federal Government level? This blog...
View ArticleListing Fastly users that can access a particular service
I was recently to supply a list of non-superuser user accounts that could access a given Service ID in Fastly, and what their role and permission was.The Fastly UI is not terribly useful for doing...
View ArticleFinding and deleting large files in a git repository
Why is it important to have small git repositories?GitHub recommends that git repositories be < 1 GiB is size. The most important reasons why I think this matters:It takes longer to clone and fetch...
View ArticleDrupal and the Open Web in the Australian Government - 2024 edition
This is the complementary blog post for my DrupalSouth Sydney 2024 session, and also v2.0 follow up of sorts from the original 2022 version. The full presentation was much longer than this blog post,...
View ArticleAnalysing JSON logs with OpenObserve
In years past, when I wanted to analyse a bunch of JSON logs, I would use jq. jq is an amazing tool, but suffers from some pretty massive drawbacks for large log analysis:jq is slow. It is single...
View Article
More Pages to Explore .....