Posts

Providing context to cancellations in Go 1.20 with the new context WithCause API

A new addition to the context package in Go 1.20 is the ability to provide the cause of a context's cancellation. In this post we'll take a look at this new API and how to use it.

Posted on Wednesday, 4th January 2023

Playing With Slog, the Proposed Structured Logging Package for the Go Standard Library

Currently going through Go's proposal process, the slog package aims to introduce structured logging as a first-class citizen within the Go standard library. In this post we take a look at the proposal, the package and what it does.

Posted on Thursday, 24th November 2022

Global Error Handling via Middleware with Go's Gin Framework

In this post we'll take a look at how we can utilise middleware to simplify error handling when using the popular Gin router for Go.

Posted on Wednesday, 1st June 2022

Automate testing of poor network conditions with Shopify's Toxiproxy in Go

You build things differently when you expect them to fail, and in a complex distributed system that communicates across networks failures should be expected. To combat this Shopify build Toxiproxy, a tool for simulating a wide range of network conditions. In this post we look at how we can leverage Toxiproxy to introduce network failures into our tests, so we can better defend against them.

Posted on Sunday, 5th December 2021

Integration testing your Polly policies with HttpClient Interception

Posted on Thursday, 30th July 2020

Effectively stubbing remote HTTP service dependencies with HttpClient Interception in C#

Posted on Thursday, 21st May 2020

Consider Chesterton's Fence Principle Before Changing That Code

Posted on Thursday, 2nd April 2020

A couple of nice Tuple use cases

Posted on Monday, 16th March 2020

Chaos Engineering your .NET applications using Simmy

Posted on Friday, 3rd January 2020

Managing your .NET Core SDK versions with the .NET Install SDK Global Tool

Posted on Tuesday, 3rd September 2019

Approval Testing your Open API/Swagger Documents

Posted on Wednesday, 28th August 2019

You can stop mocking ILogger

Posted on Saturday, 1st June 2019

Subcutaneous Testing in ASP.NET Core

Posted on Thursday, 14th March 2019

The myth of the right tool for the job

Posted on Friday, 18th January 2019

Skipping XUnit tests based on runtime conditions

Posted on Wednesday, 2nd January 2019

Aaaand, we're back...

Posted on Thursday, 8th March 2018

GlobalExceptionHandler.NET version 2 released

Posted on Friday, 8th December 2017

Going serverless with .NET Core, AWS Lambda and the Serverless framework

Posted on Wednesday, 8th November 2017

REST Client for VS Code, an elegant alternative to Postman

Posted on Wednesday, 18th October 2017

Global Exception Handling in ASP.NET Core Web API

Posted on Wednesday, 20th September 2017

Turbo charging your command line with ripgrep

Posted on Tuesday, 12th September 2017

GraphiQL in ASP.NET Core

Posted on Thursday, 10th August 2017

Injecting content into your head or body tags via dependency injection using ITagHelperComponent

Posted on Monday, 17th July 2017

.NET Core solution management via the command line interface

Posted on Monday, 3rd July 2017

Tips on starting and running a .NET user group

Posted on Thursday, 22nd June 2017

Retrospective of DDD 12 in Reading

Posted on Monday, 12th June 2017

Another day, another fantastic DDD (DDD South West 7)

Posted on Friday, 12th May 2017

C# 7 ValueTuple types and their limitations

Posted on Thursday, 20th April 2017

Setting up a local Selenium Grid using Docker and .NET Core

Posted on Monday, 20th March 2017

An in-depth look at the various ways of specifying the IP or host ASP.NET Core listens on

Posted on Friday, 10th February 2017

C# IL Viewer for Visual Studio Code using Roslyn side project

Posted on Monday, 30th January 2017

Year in review and looking at 2017

Posted on Tuesday, 10th January 2017

In-memory C# compilation (and .dll generation) using Roslyn

Posted on Wednesday, 28th December 2016

In-memory testing using ASP.NET Core

Posted on Tuesday, 6th December 2016

New Blog, now .NET Core, Docker and Linux powered - and soon to be open-sourced

Posted on Saturday, 26th November 2016

Getting started with Elastic Search in Docker

Posted on Tuesday, 15th November 2016

Going cross-platform with ASP.NET Core talk at Bristech 2016

Posted on Thursday, 3rd November 2016

Building rich client side apps using Angular 2 talk at DDD 11 in Reading

Posted on Saturday, 3rd September 2016

Executing JavaScript inside of .NET Core using JavaScriptServices

Posted on Thursday, 1st September 2016

Angular 2 CLI interview with .NET Rocks

Posted on Tuesday, 23rd August 2016

Integration testing your ASP.NET Core middleware using TestServer

Posted on Sunday, 31st July 2016

Proxying HTTP requests in ASP.NET Core using Kestrel

Posted on Saturday, 2nd July 2016

Fira Mono - An exceptional programming font, and now with (optional) ligatures

Posted on Friday, 17th June 2016

Select by camel case - the greatest ReSharper setting you never knew

Posted on Monday, 6th June 2016

Social authentication via Google in ASP.NET Core MVC

Posted on Sunday, 29th May 2016

ASP.NET Core tag helpers - with great power comes great responsibility

Posted on Monday, 9th May 2016

Capturing IIS / ASP.NET traffic in Fiddler

Posted on Monday, 25th April 2016

Publishing your first NuGet package in 5 easy steps

Posted on Friday, 15th April 2016

Tips for learning on the job

Posted on Tuesday, 29th March 2016

Easy slug generation with Slugity

Posted on Friday, 18th March 2016

OzCode Review - The magical extension that takes the pain out of debugging

Posted on Thursday, 10th March 2016

The Ajax response object pattern

Posted on Sunday, 21st February 2016

Adding search to your website with Azure Search

Posted on Wednesday, 10th February 2016

Personal targets and goals for 2016

Posted on Monday, 1st February 2016

Angular 2 based Piano Note Training game side project

Posted on Sunday, 24th January 2016

An often overlooked reason why you should be on Stack Overflow

Posted on Saturday, 16th January 2016

Are you a consumer or a creator222

Posted on Friday, 15th January 2016

How to setup Google Analytics and event tracking in your Angular application

Posted on Saturday, 9th January 2016

Reflecting on 2015

Posted on Saturday, 2nd January 2016

A deeper look at C# 6's nameof expression

Posted on Tuesday, 29th December 2015

Visual Studio 2015 Shortcuts interview with .NET Rocks

Posted on Monday, 30th November 2015

Using the Surface Pro 4 Type Cover on the Surface Pro 3

Posted on Wednesday, 11th November 2015

Podcasts for .NET Developers

Posted on Tuesday, 3rd November 2015

Using Roslyn to look for code smells

Posted on Friday, 9th October 2015

Detecting CSS breakpoints in Javascript

Posted on Monday, 21st September 2015

New website, now Azure powered

Posted on Wednesday, 11th February 2015

Personal targets and goals for 2015

Posted on Wednesday, 21st January 2015

I used to use a mug for every beverage, now I use this!

Posted on Sunday, 11th January 2015

Harnessing your IoC Container to perform application event tasks in ASP.NET MVC

Posted on Monday, 29th December 2014

Worth a watch: John Sonmez on creating a test automation framework using Selenium

Posted on Monday, 24th November 2014

Improving upon ASP.NET MVC's default display annotation convention

Posted on Tuesday, 4th November 2014

ReSharper not running your unit tests? This could be why...

Posted on Monday, 20th October 2014

9 ways I improved my productivity in Visual Studio 2013

Posted on Tuesday, 7th October 2014

My experiences programming on a Surface Pro 3

Posted on Friday, 19th September 2014

ASP.NET Naming Conventions - how to avoid calling everything a service

Posted on Tuesday, 12th August 2014

Sessions in ASP.NET MVC using Dependency Injection

Posted on Friday, 13th June 2014

Golden Nuget Package #1: RouteDebugger by Phil Haack

Posted on Monday, 9th June 2014

Creating reusable HTML components in ASP.NET MVC using Razor

Posted on Friday, 9th May 2014

Generics and Lambda Expressions in Javascript? With TypeScript you can!

Posted on Wednesday, 30th April 2014

Upgrading to StructureMap 3

Posted on Saturday, 19th April 2014

Space shooter I wrote in Javascript using Typescript

Posted on Wednesday, 16th April 2014

Fixing the "your project file uses a different version of TypeScript compiler" error in Visual Studio 2013

Posted on Friday, 4th April 2014

Why you shouldn't suppress errors in PHP using the @ operator

Posted on Friday, 14th March 2014

The architecture of StackOverflow.com

Posted on Monday, 24th February 2014

Microsoft's latest advert reminds the world why technology (and developers) rocks

Posted on Sunday, 2nd February 2014

Mocking AutoMapper with the IMapperEngine

Posted on Tuesday, 28th January 2014

JCrop integration with CKFinder

Posted on Thursday, 23rd January 2014

How to create a virtual directory in IIS Express

Posted on Monday, 20th January 2014