Articles
- Using The Factory Design Pattern in .NET
May 9
Discover how to use the Factory design pattern in .NET applications to create objects in a flexible and maintainable way. It provides examples of real-world scenarios where the pattern could be used to improve code quality, and demonstrates how to implement the Factory pattern in C# code.
- Using The Decorator Design Pattern in .NET
May 8
Discover how to use the Decorator design pattern in C#/.NET to add new behaviours to an object dynamically without changing its underlying structure. See how you can make your code more maintainable and extensible, and see step-by-step instructions for implementing it in C#. Find out how to use the Decorator pattern with dependency injection.
- Using The Singleton Design Pattern in .NET
May 7
Discover how to use the Singleton design pattern in C#/.NET to create a single instance of an object that is globally accessible throughout your application. Learn about the benefits and drawbacks of the Singleton pattern, how to implement it using Lazy<T> for thread-safety, and its role in modern .NET development and Dependency Injection.
- Observed No. 12 - Removing Pre-Commit Dependencies With Docker
May 1
The 12th edition of Observed shows you how to remove dependencies when using Pre-Commit by utilizing docker images.
- Observed No. 11 - Saving Costs on AWS
Apr 24
The 11th edition of Observed shows you some simple strategies for saving costs on AWS
- Observed No. 10 - Chaos Engineering on AWS
Mar 20
The 10th edition of Observed explains how to run chaos engineering on AWS
- Using the Builder Design Pattern in .NET
Mar 14
Discover how to use the Builder pattern in C#/.NET to create more maintainable and flexible code. Learn implementation tips and answers to FAQs in this comprehensive guide. Improve your .NET development skills and create reusable code today.
- Observed No. 9 - SLIs vs SLOs vs SLAs
Mar 13
The 9th edition of Observed explains the differences between Service Level Indicators, Service Level Objectives and Service Level Agreements
- Observed No. 8 - Continuous Integration vs Continuous Delivery vs Continuous Deployment
Mar 6
The 8th edition of Observed explains the differences between Continuous Integration, Continuous Delivery, and Continuous Deployment. These practices lead to safer and smoother releases, reduce integration conflicts, save time, and improve software quality
- Observed No. 7 - Well Architected
Feb 27
The Well-Architected Framework consists of six pillars to build and operate reliable, secure, efficient, and cost-effective systems on AWS. The framework offers best practices for each pillar.
- .NET Serialization Benchmarks - Feb 2023
Feb 26
What is the fastest .NET Serialization framework in February 2023? I've updated my benchmarks to find out.
- Observed No. 6 - Service Meshes
Feb 20
Service meshes use sidecar proxies to manage microservices communication. They provide benefits like traffic management, security, observability, and simplified deployment. They work best for larger architectures, and implementation depends on the use case.
- Observed No. 5 - MACH Architectures
Jan 30
Welcome to the fifth edition of Observed! Your weekly newsletter, where I bring you a tip you can implement in your infrastructure across many categories like AWS, Terraform and General DevOps practices. This week's edition looks at MACH architectures
- Observed No. 4 - Emerging Pattern: Centralised Ingress
Jan 23
Welcome to the fourth edition of Observed! Your weekly newsletter, where I bring you a tip you can implement in your infrastructure across many categories like AWS, Terraform and General DevOps practices. This week's edition looks at a common pattern emerging across the industry: Centralised Ingress
- Observed No. 3 - Understanding Split Horizon DNS: How it works and How to Implement it in AWS
Jan 16
Welcome to the third edition of Observed! Your weekly newsletter, where I bring you a tip you can implement in your infrastructure across many categories like AWS, Terraform and General DevOps practices. This week's edition looks at Split Horizon DNS.
- Observed No. 2 - Upgrade Your Terraform Modules
Jan 9
Welcome to the second edition of Observed! your weekly newsletter, where I bring you a tip you can implement in your infrastructure across many categories like AWS, Terraform and General DevOps practices. This week's edition looks at a technique you can use to upgrade your Terraform modules.
- Observed No. 1 - VPC Endpoint Policies
Jan 2
Welcome to the very first edition of Observed! Each week I bring you a tip you can implement in your infrastructure across many categories like AWS, Terraform and General DevOps practices. This week's edition looks at VPC endpoint policies in AWS.
- ASP.NET Core Versioning: Minimal APIs
Oct 4
Learn how to setup ASPNET Core Versioning for Minimal APIs
- ASP.NET Core Versioning: MVC APIs
Sep 30
Learn how to setup ASPNET Core Versioning for MVC APIs
- Pro Testing with Xunit & Localstack
Sep 25
Learn how to setup Xunit with any docker image using localstack as our example
- Video Content Round Up: June 2022
Jun 30
Update on the Youtube channel reboot and details on the 4 new videos that I've posted!
- 3 Ways To Increase App Reliability With Polly
Feb 3
Learn how to use retries with decorrelated jitter, bulkhead and circuit breaker patterns to increase reliability in your applications with Polly
- Creating a private helm repository using Github Pages Enterprise
Jan 15
Learn how to publish a private helm repository using Github Pages Enterprise
- Extending the AWS SDK for .Net
Jan 8
In this article we're taking a look at how to extend the AWS SDK for .NET, which can be useful for various tasks like adding in some custom observability components into the request pipeline.
- Things you might not know about CSharp - Duck Typing Jan 7
- Things you might not know about CSharp - Using Params with Indexers
Jan 2
In the first part of this series, we are going to take a look at a little known feature with index parameters. See how to pass multiple arguments to a custom indexer.
- Using Certificates From AWS Private Certificate Authority in .NET
Jan 17
As companies grow, moving to a zero-trust architecture is majorly important. This article explores how to build it in AWS.
- Blending Metrics Using EventCounters In C#
Dec 27
As companies grow, moving to a zero-trust architecture is majorly important. This article explores how to build it in AWS.
- Publish Metrics to Cloudwatch in .NET Core
Dec 13
As companies grow, moving to a zero-trust architecture is majorly important. This article explores how to build it in AWS.
- Building a Zero Trust Architecture In AWS
Dec 5
As companies grow, moving to a zero-trust architecture is majorly important. This article explores how to build it in AWS.
- Using Moq with ref, in and out parameters in C#
Nov 28
A look into how we can use Moq with ref, in and out parameters in C#
- A Look Into CloudEvents
Nov 21
A look into what CloudEvents are, and how they can be used as a internal format for messaging
- Setting Up A Repository Template In Github For K6
Oct 11
A look into how we can create K6 performance test suite from a Github repository template.
- Setting Up A Repository Template In Github For .Net
Oct 10
A look into how we can create a Github repository to automatically have our core files in it.
- Implementing Simple Feature Toggles In AspNetCore Using IConfiguration
Aug 29
A look into how we implement simple feature toggles using IConfiguration
- Architecture Pathway Introduction
Jul 15
A glance at some of the resources that helped me learn software architecture.
- My Favourite Git Aliases
Jul 11
A look into some of the git aliases that I have configured on my machine which are in constant use.
- Diagnostics in .Net Core 3: An alternative approach to using dotnet-counters with Docker
Jun 25
A look into the EventCounters API in .Net Core 3, and seeing how we can capture inbound HTTP Requests.
- Diagnostics in .Net Core 3: Listening to inbound HTTP requests
Jun 19
A look into the EventCounters API in .Net Core 3, and seeing how we can capture inbound HTTP Requests.
- Diagnostics in .Net Core 3: Listening to outbound HTTP requests
Jun 18
A look into the EventCounters API in .Net Core 3, and seeing how we can capture outbound HTTP Requests.
- Quick Tip: Minification of assets with Hugo
May 16
This article
- Diagnostics in .Net Core 3: Using dotnet-counters with Docker
Jan 25
A look into how we can use dotnet-counters with a docker container
- Diagnostics in .Net Core 3: Event Counters
Jan 5
A look into the EventCounters API in .Net Core 3
- Quick Tip: Accessing a Azure DevOps secret from within a scripted step
Dec 26
Learn how to access a Azure DevOps library secret inside of a scripted step
- Building a custom build agent image with Docker and Azure DevOps pipelines
Dec 24
Learn how to use a custom dockerfile as the bases for a customised Azure DevOps build agent.
- Utf8Json Media Formatters for ASP.Net Core
Jul 29
An updated sample of the input/output media formatters which use Utf8Json as the serialisation library
- Building Service Fabric Apps With VSTS YML Build Definitions
Jun 30
Publish an Service Fabric application using a VSTS YML build definition.
- Automated Builds in VSTS with YML Build Definitions
Jun 17
Publish an ASPNET Core website using a VSTS YML build definition.
- Ensuring samesite cookies with URL Rewrite
Jun 11
A handy URL Rewrite snippet to mark cookies as samesite.
- Ensuring secure cookies with URL Rewrite
Jun 11
A handy URL Rewrite snippet to mark cookies as secure.
- Ensuring httpOnly cookies with URL Rewrite
Jun 6
A brief overview of cookies, why we want them to be httpOnly and how we can ensure this via URL Rewrite.
- Removing trailing slashes with URL Rewrite
Jun 5
A quick explanition of why consistent urls are important and how to achieve them with url rewriting.
- Canonical host urls with URL Rewrite
Jun 4
A quick explanition of canonical host urls and how to achieve them with url rewriting.
- Up and running with URL Rewrite - going from HTTP to HTTPS
Jun 3
A quick introduction to URL Rewrite module for IIS and a snippet from going from HTTP to HTTPS.
- Domain Driven Design Notes
May 24
A quick write up of my notes on Domain Driven Design for personal reflection, which may be useful to others.
- 5 Tips For Getting What You Want
Apr 12
Inspired by events that have happened to me and others close to me, here's out I am getting after my goals, getting what I want.
- Talks: Episerver Content Providers & Lightening Talk Apr 4
- News Roundup March 2017
Mar 1
First of a monthly series capturing various articles that I find interesting as I catch up on the tech news from around the web.
- OpenMessage 2017 Roadmap
Feb 11
OpenMessage originally started out as a replacement for an internal library that was used across teams. Now i'm looking at the future of the project and what is next.
- OpenMessage 1.1 Released
Feb 5
OpenMessage 1.1 released
- My 2017
Jan 20
A quick look into how my 2017 is going to be.
- Hugo Quick Tip: Inlining Css Files
Dec 29
A very quick look at how to inline a css file using Hugo static site generator.
- Write Good Code, Not Code Hastily
Dec 21
Here I talk about why it's important to write good code, not code that you can write fast.
- Blog Building - Part 4 - Frontend
Nov 19
Setting up a frontend pipeline powered by yarn & gulp.
- Blog Building - Part 3 - Theming
Nov 18
Setting up a theme and creating our first article using hugo and bones
- Blog Building - Part 2 - My First Post
Nov 17
Setting up a theme and creating our first article using hugo and bones
- Blog Building - Part 1 - Hello Hugo
Nov 17
Beginning to setup our workflow on the way to our very first hugo powered blog.
- Hello World
Nov 17
This is my introductionary blog post saying hello to the world.
- Technical Debt: How We Get It And How To Avoid It
Aug 5
A discussion on technical debt including strategies to help avoid high levels of technical debt.
- Up And Running With Git And Powershell
Feb 23
Here I show you how to quickly get up and running with powershell and git.
- 3 Easy Steps To Configuring Azure With Powershell
Feb 17
Recently, I had to automate some tasks in Azure. This is the easiest way I could get started.
- DevOps
Jan 24
I have recently been getting to grips with the build and deployment features of both Teamcity and Octopus Deploy. This has been making me think about the industry buzz word DevOps and exactly what that means.
- Dev Lunches: What, Why, How
Dec 17
Here I explain what a dev lunch is, and how to get started.
- Message Queue Fundementals: MSMQ
Sep 28
This article describes the fundamentals of MSMQ. MSMQ is Microsoft's Message Queuing service that can be used to implement both synchronous and asynchronous solutions.
- Message Queue Fundementals: Introduction
Sep 7
Message queues are a substantial part of modern day enterprise architectures and a vital part of providing scalable solutions. Here I walk you through some of the basic patterns.
- Finding Reducible Expressions
Jun 24
This post details the Expressions that can be reduced in the System.Linq.Expressions namespace.
- How your binary search implementation is broken and how to fix it
Jun 20
This post describes how a bug exists in most implementations of a binary search algorithm and how to fix it
- Unit Testing Equals The Forgotten Tests
Jun 18
This post demonstrates often overlooked tests when unit testing an object.
- Enabling HTTP Strict Transport Security HSTS via Web Config
Jun 10
This post describes how to enable HTTP Strict Transport Security (HSTS) via a web configuration file
- Enabling HTTP Strict Transport Security HSTS via ASP Net MVC ActionFilters
Apr 21
This post describes how to enable HSTS in ASP.Net MVC using an ActionFilter
- SAP Business One V9 Version Strings Mar 15
- Becoming An MCP
Jun 10
A bit about how I managed to pass the 70-483 Programming in C# exam to offically become a Microsoft Certifed Professional.
- Using IDisposible correctly
May 6
A demonstration of how to use IDisposable correctly.
- Semaphore vs SeamphoreSlim Micro Benchmark
Mar 11
A micro-benchmark to demonstrate the performance difference between the Semaphore and SemaphoreSlim classes in C#
- Flicker free forms and listview in .Net
Dec 30
Just one solution to a flicker problem I encountered when developing a windows form application.
- Extension methods in dotnet
Dec 1
An introduction into .Net's extension methods, how to create them and how to use them.