Articles

Creating Opal Tools for Stott Robots Handler

Published: 28th September 2025

An approach to creating Optimizely Opal Tools without using the SDKs.

Development Optimizely Stott Robots Handler

Raising and Retrieving Custom Events in Application Insights

Published: 25th September 2025

How to use Custom Events in Application Insights to track search term usage and report it to the UI.

Development

Helping Opal Build LLMS.TXT Content

Published: 19th September 2025

Using Instructions to help Optimizely Opal generate llms.txt content.

Development Optimizely Stott Robots Handler

Opal Tools Support Comes to Stott Robots Handler v6

Published: 17th September 2025

Stott Robots Handler for Optimizely CMS 12 has been released with added support for Opal Tools.

Development Optimizely Stott Robots Handler

Simple Feature Flags In Optimizely CMS

Published: 31st August 2025

A simple approach to feature flagging within Optimizely CMS.

Development Optimizely

LLMS.txt support comes to Stott Robots Handler v5

Published: 8th August 2025

Stott Robots Handler for Optimizely CMS 12 has been released with added support for llms.txt files.

Development Optimizely Stott Robots Handler

Optimizing Content Security Policies to Stay Within HTTP Header Limits

Published: 1st August 2025

Discover how to audit, reduce, and optimize Content Security Policies. Helping you stay within browser and CDN header size limits.

Development Optimizely Stott Security

Stott Security Version 3

Published: 8th April 2025

A summary of all new functionality and changes that have been introduced to the Stott Security module so far.

Development Optimizely Stott Security

Opti ID with Secure Cookies And Third Party Add-ons

Published: 9th December 2024

How to make sure your cookies and third party add-ons are properly secured when using Opti ID.

Development Optimizely

Creating an Optimizely Add-on - Best Practices

Published: 24th October 2024

Best practices for creating an Optimizely CMS Add-on.

Development Optimizely

Creating an Optimizely Add-on - Packaging for NuGet

Published: 16th September 2024

How to package your Add-on to be distributed by Optimizely's NuGet feed.

Development Optimizely

Creating an Optimizely CMS Add-on - Adding an Editor Interface Gadget

Published: 30th August 2024

How to create an editor interface gadget within Optimizely CMS PAAS Core.

Development Optimizely

Creating an Optimizely Add-on - Getting Started

Published: 28th August 2024

How to create an Add-on with it's own UI within Optimizely CMS PAAS Core.

Development Optimizely

Unit Testing With GitHub Copilot

Published: 6th June 2024

Writing unit tests with the help of GitHub Copilot for the first time.

Development

Stott Security Version 2 So Far

Published: 17th May 2024

A summary of all new functionality and changes that have been introduced to the Stott Security module so far.

Development Optimizely Stott Security

Working Programmatically With List Block Properties

Published: 23rd November 2023

Working with programmatic generation of IList style properties in Optimizely CMS 12.

Development Optimizely

Adding CORS Management to Optimizely CMS 12

Published: 8th October 2023

Adding Cross-origin Resource Sharing response headers to the Stott Security Add-on for Optimizely CMS 12.

Development Optimizely Stott Security

Adding Block Specific JavaScript and CSS to the body and head of the page

Published: 2nd October 2023

Using the ClientResource management within Optimizely CMS to render JavaScript and CSS resources correctly within the rendered HTML document.

Development Optimizely

Extending Geta Optimizely Sitemaps to Include Image Sitemaps

Published: 31st July 2023

Enhancing Geta Optimizely Sitemaps to include Images by overriding the SitemapXmlGenerator.

Development Optimizely

Making Content Recommendations Easy For Content Editors

Published: 7th July 2023

Making Content Recommendations easy and consistent for content editors using a custom block.

Optimizely Development

Build it Once (A proposal for CMS 12 builds)

Published: 8th March 2023

A proposition for using Razor Class Libraries and componentising Optimizely CMS 12 builds to reduce long term effort and rebuilding.

Development Optimizely

Opticon London 2022

Published: 9th November 2022

Information learned at the Opticon London 2022 event hosted by Optimizely.

Development Optimizely

404 Error on Static Assets Within an Optimizely Plugin

Published: 22nd September 2022

Resolving 404 issues on static files in razor class libraries using the _content/foo.bar/scripts.js path.

Development Optimizely

Unit Testing Optimizely CMS 12 Dynamic Data Store - Part 2

Published: 20th May 2022

Introducing a second way to mock and unit test with the Dynamic Data Store in Optimizely CMS 12.

Development Optimizely

Unit Testing Optimizely CMS 12 Dynamic Data Store - Part 1

Published: 19th May 2022

Optimizely CMS 12 provides a Dynamic Data Store for custom storing of data, but how do we unit test a repository using the Dynamic Data Store?

Development Optimizely

A Robots.Txt Handler for Optimizely CMS 12

Published: 15th December 2021

A new robots.txt handler that has been built for use with Optimizely CMS 12.

Development Optimizely

Optimizely Search Wildcard Queries and Best Bets

Published: 15th November 2021

Implementing Wild Card search in Optimizely CMS 11 Search and Navigation.

Development Optimizely

Secure Headers in .NET 5.0

Published: 19th October 2021

Removing information leaking headers and adding security headers in a .NET 5.0 web application using IIS.

Development Security

Setting Up Search & Navigation in .NET 5.0

Published: 1st October 2021

A brief guide to setting up Optimizely Search and Navigation in the .NET 5.0 world.

Optimizely Development

Custom Admin Pages in Optimizely 12

Published: 31st August 2021

In an Optimizely 12 .NET 5.0 world, the GuiPlugIn attribute has been removed, Here I describe how to reproduce this functionality with Menu Providers.

Development Optimizely

Unit Testing Optimizely CMS 11

Published: 29th September 2018

A solution for Unit Testing Custom Criterion for visitor groups in Optimizely CMS 11.

Development Optimizely

Boosting Exact Matches in Elastic Search

Published: 31st August 2018

A solution for boosting exact matches over partial matches in Elastic Search.

Development

Testing Solutions: Faking Communication with a Third Party Service

Published: 27th July 2015

Creating a test service to allow testers to maintain and vary shared test data for testing integrations to the HMRC test servers within a payroll application.

Development

How not to use Includes in Lambda Statements

Published: 3rd June 2015

Using Lambda Statements in LINQ to Entities is an easy way to include other entities in entity framework 4, but it comes at a cost.

Development

Why not to use In Memory Collections in LINQ to Entities

Published: 25th May 2015

Why not to use large in-memory collections in a LINQ to Entities query in entity framework 4.

Development

Selecting Parent and Children in LINQ to Entities

Published: 24th July 2014

Selecting Parent and Children in LINQ to Entities.

Development

Why I Like BDD

Published: 12th June 2014

How Behaviour Driven Design (BDD) made my life easier.

Development

Failing to Identify the Minimum Viable Product

Published: 21st May 2014

Reflections on an epic product rewrite and how we could have reached the market sooner with some better consideration for Minimum Viable Product.

Development