Azure Container Apps: The beauty of Kubernetes without the horror of Kubernetes

If you've ever dived deep into the world of Kubernetes, you know the challenges it can present. While it's a powerful tool, maintaining Kubernetes can sometimes feel a bit overwhelming.…

Using The Builder Pattern to improve Testability and Readability

Sometimes setting things up can get a bit messy, especially when we want to test coupled code with a lot of dependencies. This is where the Builder Pattern comes in handy - it helps us create objects in an easier and cleaner way, especially when they are a bit complex to set up.…

Custom Umbraco NotificationHandlers

Whenever a content item is published in Umbraco a ContentPublishingNotification event will be triggered. By creating our own NotificationHandler we can hijack this event and cancel or extend the default notification when a user is publishing a content node in Umbraco.…

Asserting Equal vs Same vs Equivalent

In this article, I'm going to demonstrate three very common but possibly confusing assertion differences in the world of C# testing: Assert.AreEqual, Assert.AreSame and Should().BeEquivalentTo.…

Developer of the year finalist 2023

I'm happy to share that I've been selected one of six finalists for the Developer of the Year award at the Developer Day conference in Stockholm, Sweden 13th of September.…

A proactive mindset: Next level customer care

By adopting a proactive mindset this allows us to focus on anticipating and addressing potential issues before they escalate. We believe that holistic customer care requires being one step ahead of problems and acting on them promptly.…

Unit Testing with ChatGPT

Don't like writing unit tests or simply don't have the time for it? Good news – now you don't have to! As a newbord AI enthusiast with a long-time obsession with unit testing, I couldn't resist the urge to try and combine these two topics. Check out my latest blog post "Unit Testing with ChatGPT," to discover how you can use ChatGPT to generate test cases and code for you.…

Tech Lead Digest Issue #121

It’s come to my attention, thanks to several friendly DMs, that my article “How to become a better mentor” was featured in the #121 issue of the Tech Lead Digest: "A carefully curated weekly…

Unit vs. Integration Testing

By understanding the essential differences between unit and integration testing, we as developers can make better decisions about when and how to use each type of testing to ensure the quality and reliability of our software.…

Getting started with E2E Testing using NUnit and Microsoft Playwright

In this tutorial style article I'll cover the process of setting up a .NET 7 project and perform E2E (end-to-end) testing using NUnit and Microsoft Playwright. With these tools, you can write automated tests that run in a real browser, allowing you to perform end-to-end testing of your web applications.…

Getting started with Snapshot Testing using NUnit and Snapper

Snapshot testing is a valuable technique for testing software applications. Using this technique we can capture the state of an application at a specific point in time and compare it to a previously recorded state, known as a snapshot.…

Add a reference to ".NETFramework,Version=x" in the "TargetFrameworks" property of your project file and then re-run NuGet restore?

Sometimes when upgrading .NET framework versions you might get this really strange error in Visual Studio: -"Add a reference to ".NETFramework,Version=v4.8" in the "TargetFrameworks" property of your project file and then re-run NuGet restore?"…

Prometheus monitoring stopped working

Today our team ran into a strange issue when updating one of our Windows servers when all of a sudden our Prometheus monitoring stopped working. It turns out that this service, which should start automatically at startup, sometimes has issues starting up when Windows is performing an Windows Update forced restart.…

Google just introduced a brand new (experimental) feature called ‘Content Ideas’ so you’ll never run out of inspiration!

This is a brand new feature (available to a selected few) in Google Search Console where you get topic ideas based on Google Search queries that are specific to your website (only available until March 28, 2023).…

Unit Testing private methods in C#

Should private methods in C# be Unit Tested? Generally you don’t write unit tests for private methods since they are not accessed from outside the implementation class (private methods are considered implementation detail).…

Could not find testhost

A while back I wrote an article on this subject where you have NUnit tests not running in Visual Studio and how to fix it. In this blogpost I will share the same soluition expect with xUnit since it involves some other packages and error messages it might not be clear that it is a related issue.…

Using the Fluent Builder Pattern to improve test readability and maintenance

Using this pattern we create an test object builder that will centralize redundant (and sometimes complex) logic that we don’t want to have in each and every one of our tests. This will make our tests slimmer and more focused on what is actually important for the state of which is being tested.…

Characterization Testing Explained

This is a technique I’ve been using for years but it wasn’t until recently that I realized that it actually has a specific name. Using characterization testing we lock the current behavior in one of several tests before we go refactor code (usually untested legacy) to be comfortable that our improvement didn’t break any existing behavior.…

Adding an API Security Definition and Requirement using Swagger UI

In this tutorial I will cover how you can setup an API with Swagger and then add security definition and requirement to pass an api token as an http header with every API request. Lets get to it!…

How to become a better mentor - 24 days in Umbraco

In case you missed it make sure you read my contribution to this years 24 days in Umbraco, the yearly Umbraco advent calendar. This was my 3rd year writing for 24 days and this years edition was about how to improve yourself as a mentor for junior or aspiring developers.…

Tutorial: How to setup a .NET Minimal API with integration testing using WebApplication Factory and NUnit

In this article I will share how you can setup an API using less than 20 lines of code using .NET Minimal API. Next we are going to setup an NUnit test project and using .NET WebApplicationFactory we will call the API endpoint and parse the resonse as an products array and compare the actual response to an expected json file embedded in our source code.…

Moq vs. NSubstitute vs. FakeItEasy

Today I though I would do some syntax comparison between a few of the biggest Mocking Framework in .NET: Moq, NSubstitute and FakeItEasy. Although these framework have slight functional differences they pretty much do the same thing but in different syntax and lingo.…

Loose vs. Strict mocking behaviour

I thought I would demonstrate the difference between Loose and Strict mocking behaviour when using the Moq Framework. By default when you create a new mock and don't specify a MockBehaviour it will be assigned MockBehaviour.Default, which equals to MockBehaviour.Loose.…

How to set TransactionScope timeout in code, application and server wide

The other day we got a bunch of these transaction exceptions logged on some of our production servers: "The operation is not valid for the state of the transaction". At first this exception was a bit cryptic, but when investigating it further is had this following inner exception: "Transaction Timeout".…

Loading this assembly would produce a different grant set from other instances

The other day one of our legacy applications threw this strange error during a production deploy: "Loading this assembly would produce a different grant set from other instances". This .NET 4.6 application is a load balanced SOAP API and strangely this only occured on 1 of the 3 frontend servers so when browsing the frontend it initially seems healty but every other random request would fail and show this error.…