What I Write About…
Databases
Helpful posts about SQL Server, Merge Replication and how to tune your databases for maximum performance.
Programming
Mostly focusing on C# and JavaScript but I enjoy exploring other languages such as F# and Python.
Scripting
Automation is the key to productivity, I cover innovative solutions to everyday problems using automated scripts.
Web Development
I cover all aspects of web development with a particular focus on application architecture and security.

InWeb

InWeb
How to create a reusable Blazor Tooltip component with CSS anchor positioning
Tooltips are one of those UI elements that seem trivial to implement until you actually have to build one properly. A basic version is straightforward to knock together; however, a reusable tooltip that can be dropped onto any element, positioned on any side, and doesn’t fall apart the moment its container starts scrolling or clipping…
How to create and read encrypted zip files with C#
If you ever find the need to create a password-protected zip file using C#, you’ll quickly discover that the options are much more limited than you might expect. The built-in System.IO.Compression .NET types (ZipArchive and ZipFile classes) unfortunately do not support any kind of encryption mechanism. Therefore, if you need to produce a zip archive…
InWeb
Validating and Sanitising filenames in a Blazor WebAssembly app
Blazor WebAssembly is a fantastic framework for building rich client-side applications, almost entirely in C#. However, it comes with a few subtle quirks that can catch us developers off guard. One of the less obvious quirks to be aware of surfaces when you need to validate or sanitise a filename specified by a user; something…
Auto-Registering and injecting multiple Handler Interfaces in ASP.NET Core
When building ASP.NET Core applications, it is common practice to implement multiple classes that share a common interface, particularly when working with design patterns such as Chain of Responsibility or when dispatching work to a set of discrete handlers. A typical example of this might be a collection of INotificationHandler, ICommandHandler, or IEventHandler implementations that…
InAPIs
Updating YARP configuration at runtime
YARP (Yet Another Reverse Proxy) is a flexible .NET reverse proxy library that supports loading configuration from multiple custom sources and provides the means to reload its configuration at runtime; no app restart required. In my previous Configuring YARP Routes article, I covered the key route configuration scenarios that you will most likely need to…
InAPIs
Configuring YARP Routes
YARP (Yet Another Reverse Proxy) is a reverse proxy library for .NET that has been built with configurability in mind, and there are a ton of customisation options available for developers. In my previous articles, I explored Getting started with YARP and Transforming requests and responses with YARP. In this article, I will cover some…
InAPIs
Transforming requests and responses with YARP
YARP (Yet Another Reverse Proxy) is a comprehensive reverse proxy library developed by Microsoft for .NET that continues to see a strong level of adoption. In my previous post, I explored getting started with YARP, walking through how to set up and run an ASP.NET Core web application that uses YARP to intercept and route…
InAPIs
Getting started with YARP
YARP (Yet Another Reverse Proxy) is a versatile and highly performant reverse proxy library for .NET. If you’re a .NET developer seeking to develop a web application that utilises a reverse proxy to enable things like load balancing, caching and SSL termination, and you require a great degree of customisation, YARP is the ideal solution…
InWeb
Styling Blazor child components with CSS Isolation: What you really need to know
One of the most useful, yet often overlooked, aspects of Blazor’s CSS isolation support is the ability to style child components. At first glance, it may appear that isolated CSS can only be applied to the component to which it is attached; however, with a little help from the ::deep pseudo-selector (the “deep combinator”), it’s…Categories
- APIs (17)
- Career (4)
- NoSQL (3)
- Programming (51)
- Scripting (19)
- Security (17)
- SQL (26)
- SQL Server Merge Replication (4)
- Tools (5)
- Web (31)
Recent Posts

