Introduction Developing applications that call out to external systems is easy enough, but what happens when those external systems need to call back to your development environment? Most developers don't…
Integrating Ngrok with C# Applications


Introduction Developing applications that call out to external systems is easy enough, but what happens when those external systems need to call back to your development environment? Most developers don't…

Introduction In the fast-paced world of software development, the ability to control and manage features dynamically is crucial. The Microsoft Feature Management library, a part of the .NET ecosystem, provides…

Introduction In C#, the yield keyword is used in the context of iterator methods. It plays a crucial role in customising the iteration behavior of a collection or series of…

Introduction The foreach loop in C# provides a simple, clean way to iterate over collections. To make a custom class compatible with the foreach loop, the class needs to implement…

Introduction C# 9.0 introduced a new feature called init-only properties, enhancing the language's support for immutable data structures. These properties allow for more concise and safe object initialisations, and are…

Introduction In C# asynchronous programming, cancellation tokens are a core feature used to manage the lifetime of asynchronous operations. They provide a cooperative cancellation mechanism, allowing tasks to be cancelled…

Introduction Asynchronous programming is a critical aspect of modern software development, particularly in I/O-bound, database and network-bound operations. In C#, async and await keywords are used to simplify the writing…

Introduction Vite is a modern front-end build tool, that has gained popularity in the web development community for its fast build times and simplicity. When combined with TypeScript, a superset…

Introduction TypeScript, a superset of JavaScript developed by Microsoft, adds static typing and some other features to the language, making it a great choice for large-scale or complex JavaScript projects.…

Introduction In a previous article / blog post (I can never decide between the two terms), I wrote about creating a Time Provider by implementing an interface and injecting it…