
What's a runbook? And why your team probably needs one
Most engineers have followed a runbook without ever calling it that. Here's what they actually are, why they matter more than most teams realise, and how to start building them properly.

Full-Stack Development · UX/UI Design · WCAG Accessibility · CMS Platforms
I help government agencies, councils, education departments, and enterprise teams deliver scalable, accessible, user-centric digital platforms — from discovery through to production.

Most engineers have followed a runbook without ever calling it that. Here's what they actually are, why they matter more than most teams realise, and how to start building them properly.

Sprint retrospectives (Or Sprint Retros) are one of the most valuable ceremonies in agile — yet they're often rushed, skipped, or run without structure. A well-facilitated retro gives your team space to reflect, surface issues early, and continuously improve how you work together. Here's a straightforward 60-minute format that keeps things focused and actionable.

Accessibility compliance doesn't have to be overwhelming. This step-by-step guide — developed during our audit of a large-scale education platform for New Zealand's Ministry of Education — walks you through 14 essential tests, combining automated tools with manual checks, so any team can identify and fix WCAG 2.2 AA issues before the auditors do.

Good design isn’t guesswork. It’s the result of deliberate decisions grounded in user understanding and validated throughout the design process. This guide outlines 16 proven UX techniques—spanning discovery, research, design, and testing—to help teams make confident, evidence-based design decisions at every stage of a project.

Cloudflare's "Add security headers" managed transform is often too rigid, causing it to block YouTube embeds by default. By replacing this "one-click" toggle with a custom Cloudflare Snippet, you can surgically add YouTube's domains to the allowed list, while maintaining a high security posture.

By default, SilverStripe CMS uses Font Icons for menu, and at times, you would want to set your own custom SVG icons when there isn’t a sufficient icon and/or to be inline with your org brand guidelines. This article explains how can set those, in both cases — For use in CMS classes that extend ModelAdmin, and in the case of Elemental Blocks that extend BaseElement.

Use the Views Bulk Edit module to migrate content for individual fields on selected content types. This is made possible with use of Drupal’s Views Bulk Edit module, which allows us to setup new Views for the purpose of migrating fields.

This guide walks you through the process of safely applying security updates to your Drupal website. Security updates patch vulnerabilities that could expose your site to attacks, making timely installation critical for protecting your data and users.

This guide explains how to export configuration changes from your Drupal site so they can be version controlled and deployed to other environments.

As your app scales, it is likely that your compiled JS bundle file will get larger and larger. With the help of the Vue 3 defineAsyncComponent method, we can now only load a component if and when needed asynchronously.

The process of adding print styles to your web, to make content more print friendly both from a readability/accessibility point of view, and from the point of removing clutter and reducing print cost.

When working on multiple projects, you may need to switch quickly between different versions of Node for compatibility. Two common approaches are: NVM (Node Version Manager): A widely used tool for easily managing and switching Node versions. Homebrew (Mac only): Another option to install and manage different Node versions directly.

Cross-browser testing is essential to make sure your application works consistently across different devices and browsers. Analytics, government standards, or company guidelines will help you decide which versions to support. Tools like BrowserStack give you a full list of browsers and platforms, while Browserslist provides a shared configuration for front-end tools. Finally, Autoprefixer automatically adds vendor-specific CSS rules to improve compatibility, saving you from writing them manually.

CSS Grid is powerful, but Internet Explorer 11 doesn’t support it out of the box. This guide shows why the -ms-grid prefix matters and how to enable it for compatibility.