Fri 15 October 2021

Cultivate apathy for details to enable refactoring

Give equal care to the code structure as you would give to the code behaviour

Mon 04 October 2021

How to suppress selected logic when running PR validation pipelines

Solving the pipeline-as-code "chicken or the egg" challenge by suppressing selected logic

Sat 02 October 2021

A peek at our Dream Team Working Agreement Poster

As a team we want to create an empathetic, safe, and vibrant ecosystem

Fri 01 October 2021

Why I loathe when engineers use TLAs, such as CD vs CD!

The use of TLAs creates subpar collaboration, unnecessary confusion, and unintended waste.

Tue 21 September 2021

Checkout your git repos at the right time!

Let us explore why the sequence of checkout steps are important in your Azure Pipeline.

Thu 16 September 2021

Track work with POPCORN Flow

Work challenges are opportunities to explore, experiment, and track the feedback gathered from the innovation

Fri 10 September 2021

How is ordering a pizza similar to hexagonal architecture?

How to build a system that interacts with the outside world without knowing the gory details of the outside world

Wed 08 September 2021

Two ways to share your toolbox with your pipelines

Let us review two strategies to share scripts and config files with your Azure (YAML) Pipelines.

Wed 01 September 2021

Why OODA is one of the DevOps genomes

If we unpack the DevOps DNA we will find a prominent genome labeled O-O-D-A.

Wed 25 August 2021

Systems thinking

Switch focus from monitoring and measuring activities and outputs to measuring outcomes

Sat 21 August 2021

Automation enables engineering to focus on value

Asking yourself why you are performing a set of manual tasks again and again? If yes, automate!

Wed 18 August 2021

Get rid of redundant tests

Keeping the suite of automated tests lean is an essential trait of quality software engineering. Diligently remove all tests that don't add any value.

Thu 05 August 2021

Cultivate rapid spreading of knowledge

Knowledge must be shared rapidly to enable teams to continuously deliver desired values

Sat 31 July 2021

Sensei Alex "fakes it until he makes it" in our Test-driven Development (TDD) dojo

Exploring the advantages of Test-driven Development and the concept of self-healing code

Tue 27 July 2021

First International TDD Conference

First International TDD Conference generated a lot of good interest and traction

Sat 24 July 2021

Pipelines - Meet our second-generation app-type blueprints

Our quest for continuous improvement, simplicity, consistency, enablement, and automation has taken us into a realm of Azure Pipelines that amaze even our most critical engineers.

Thu 22 July 2021

Refactoring saves time and increases quality

Design is not a static construct, it evolves by refactoring as we keep changing the code

Tue 13 July 2021

OODA Loop and DevOps

What is the relationship between Observe-Orient-Decide-Act Loop and DevOps.

Sun 11 July 2021

Stop the context switching, reduce waste, and focus on value

A work-life balance is important, however, I believe that stopping waste and focusing on value is just as pivotal!

Thu 08 July 2021

Gotchas when sharing variables with Azure DevOps stages and jobs

Understanding and avoiding gotchas that may keep you up at 2AM, troubleshooting YAML-based Azure Pipelines

Mon 05 July 2021

Self-service automation - A dream turns into reality

Automate a “hello world in less than 1min”, also referred to as our “walking skeleton”.

Fri 02 July 2021

Our quest to share our knowledge with the world, keeping it interesting and informal

Understand how to navigate and create content for our technical blog.

Mon 21 June 2021

Why we should (not) care about Pipelines!?!

Enabling engineering to continuously build, validate, and deploy secure solutions to delight our customers

Sun 13 June 2021

Quick Reference Sheet for Pipeline Terminology

Summarising the core terminology and lifetime of our pipelines.

Wed 02 June 2021

Manage your Azure DevOps User Access Levels through automation

Quick overview how our Azure DevOps access level audits and management automation using PowerShell, REST APIs, and Richard's WIKI Updater task.

Fri 28 May 2021

Client-side expressiveness and security

The importance of properly securing client-side applications has never been more urgent!

Wed 26 May 2021

TDD for Non-Techies

TDD explained to non programmers by using the example of writing a short story

Tue 18 May 2021

Can we enact governance through engineering-friendly manifestos and guardrails?

The best way to create an engineering revolt is to enforce governance with the big stick.

Wed 12 May 2021

Extreme Programming (XP) provides options

What does 'extreme' in Extreme Programming stand for? It stands for extreme interruptability and extreme steerability

Fri 07 May 2021

Start together work together finish together

Speed up the delivery process by avoiding queuing and needless looping

Fri 07 May 2021

Lunch & Learn - Revisiting Feature Flags

Manage your blast radius through progressive exposure with feature flags

Wed 05 May 2021

Enable Agile, Kanban, Scrum, or SAFe with Azure DevOps

Use Azure Boards to visualise a variety of processes using the Agile process in a single Azure DevOps project.

Fri 30 April 2021

Quick Reference Sheet for Application-type Blueprint-based Pipelines

Summarising the main points of our 2nd generation app-type blueprint-based pipelines.

Thu 29 April 2021

Introducing the Automation Working Group

Any system operation we can perform manually can be fully automated by writing scripts

Wed 28 April 2021

Azure DevOps Experimentation - YAML Conditionals, Parameters, and Triggers

Snippets of common questions and issues from Azure Pipeline workshops and support calls. Today's snippet includes conditionals, parameters, and triggers.

Mon 26 April 2021

How to share variables amongst Azure Pipeline agents

As per documentation, output variables can be used across stages in an Azure YAML-based pipeline. I will share a few turbulent moments we experienced while troubleshooting this feature in one of our pipeline blueprints.

Fri 23 April 2021

Part 8: Pipelines - From CI to CD and beyond in one pipeline

Continuous Deployment is a pivotal ingredient of a healthy DevOps mindset and our ability to delight end-users with continuous value. It is the holy grail of our profession.

Thu 22 April 2021

Only changeable design is good design

Why is changeable design desirable and what's preventing us from achieving it

Tue 13 April 2021

Quick peek into regular expressions

Regular expressions are fundamental to programming

Tue 13 April 2021

Quick Reference Sheet for YAML and Generic Blueprint-based Pipelines

Summarising the main points of YAML syntax, within the context of our generic blueprint-based pipelines.

Mon 12 April 2021

Part 7: Pipelines - There is more! Simplicity and enablement, courtesy of the app-type blueprint-based YAML pipelines

Do you want to own two or seventy five dozen lines of pipeline code per application? The choice is yours!

Thu 08 April 2021

Synchronized 'if' statements considered harmful

Duplicated imperative conditional logic leads to proliferation of bugs

Wed 31 March 2021

Extreme Programming 25 Years Later

Extreme programming keeps going strong 25 years after its launch

Fri 26 March 2021


Programming computers by feeding them plain text is very slow and needs to be sped up.

Fri 19 March 2021

Incremental and Iterative Development – what’s the diff?

Visual example illustrating the fundamental differences between incremental and iterative development process.

Sat 13 March 2021

Pipeline-as-code wrapped with Pull Requests

This post attempts to give our critics some answers and scratch the surface of the possibilities and values of our new blueprint-based pipelines.

Fri 12 March 2021

Find the capabilities and IP addresses of an Azure DevOps agent

How to find more information on hosted Azure DevOps agents, such as capabilities and IP addresses.

Fri 12 March 2021

Wandering down memory lane - feature flags

Use feature flags to fine-tune each release in production.

Fri 05 March 2021


Configuring complex workflows that govern Continuous Integration and Continuous Delivery must only be allowed by making changes to the YAML source files; GUI tools must be prohibited

Tue 02 March 2021

Part 6: Pipelines - Gotcha! The generic blueprint-based YAML pipeline simplicity

Neither the bootstrap nor generic templates are rocket science, and the YAML-based pipelines are as complex as you make them.

Fri 19 February 2021

WorkSafeBC DevOps Celebrate 100th Sprint

WorkSafeBC DevOps 100th sprint celebration coincided with the 20th anniversary of the Agile Manifesto

Thu 28 January 2021

Part 5: Pipelines - Blueprints to fuel consistency and enablement

Think of blueprints and associated templates as re-usable LEGO blocks, ranging from a bag of "do it yourself" blocks, to complex and detailed kits, such as the Imperial Star Destroyer.

Wed 13 January 2021

Part 4: Pipelines - Magic of queue time assembly

We can use the power of the new multi-stage YAML pipelines to make even our most critical security engineers smile from ear to ear.

Mon 04 January 2021

Part 3: Pipelines - Basic building blocks as templates and sprinkling on telemetry

With the support from all people, YAML templates support our five (5) core goals and pillars of our common engineering system.

Mon 21 December 2020

Part 2: Pipelines - Introduction, variables and why spaces matter

The new Azure DevOps YAML pipelines have been the focus of innovation, enabling engineering to treat pipelines as code.

Sat 19 December 2020

Part 1: Pipelines - Why bother and what are our nightmares and options?

Pipelines enable engineering to continuously deliver value, map and improve their processes and workflows, promoting consistency and reliability across the organisation.

Sat 24 October 2020

Shift LEFT and RIGHT to take yourself off the humbling 2AM calls

We need to avoid the infamous 2AM call!

Sat 24 October 2020

Don’t let your code talk to strangers

Closer look into the principle of least knowledge

Thu 22 October 2020

Collective code ownership

Teams share collective responsibility and therefore collectively own the code

Thu 22 October 2020

The clash of Azure DevOps Kanban fields and Shared Area Paths

Shared area paths can introduce inconsistency and confusion.

Wed 21 October 2020

Searching for common nodes across area paths

How can we find area path with specific text in their name?

Tue 20 October 2020

Use Active Directory Groups in your unified classic CI CD pipelines

Instead of managing permissions for users in Azure DevOps, we use Azure Active Directory groups to fine tune permissions

Tue 20 October 2020

Use the move to team project feature with caution!

The "Move to Team Project" feature can reset your work item state and dates

Mon 19 October 2020

Pull Request is your friend not foe!

There is a debate around the value of pull requests (PR), fueled by unfortunate misunderstandings.

Mon 19 October 2020

Benefits of boundaries

Simple isn't easy, but it is the only way to build anti-fragile systems

Fri 16 October 2020

Why extract methods when modifying legacy code?

Legacy code is hard to test, so extract methods by writing micro tests

Thu 15 October 2020

Benefits of frequent deployments

The longer the wait to deploy, the bigger the risk of things going south

Tue 13 October 2020

Hypothesis-Driven Development

Developing a feature without formulating a hypothesis is like shooting in the dark

Sat 03 October 2020

The cost of avoiding change

Change is stressful and risky, but avoing it is even riskier

Thu 17 September 2020

How does it feel to write software when doing TDD?

Any discipline requires serious investment in time

Fri 04 September 2020

Feature-flag Driven Development (FFDD)

Replace physical modularity with logical modularity