I’m an independent software consultant, speaker, and professional trainer, with a focus on .NET and C#, architecture, DDD/CQRS, Web security and OpenID Connect.
What a Wow, this brings back memories from my own Sega Mega Drive hacking days. About 35 years ago I built my own hardware development kit from scratch as a way to learn more about the hardware.
I'm building a proxy that sits between Claude Code and the model to visualize the full interaction loop. It shows prompts, tool calls, and responses in real time so you can explore how the coding agent is reasoning and operating. Project: https://github.com/tndata/CodingAgentExplorer
Coding Agent Explorer (.NET) is an open-source .NET reverse proxy and live dashboard for understanding agentic development. Monitor Claude Code’s traffic to the Anthropic API in real time and inspect prompts, tool calls, token usage, and performance from a clean web UI.
I never store anything personal or important on the C:\drive. I treat it as disposable. Instead, I create a secondary drive (like Z:\) and store all important work there.
This way, I always know that Z:\ is the only drive I need to back up, while C:\ remains clean and expendable. Even my Dropbox folder lives on the secondary drive.
This multi-part blog series will show you how to implement secure authentication for Single-Page Applications using the Backend-for-Frontend (BFF) pattern with ASP.NET Core.
In this blog post, you will learn how to deploy a test instance of KurrentDB (An Event Sourcing database) to Azure and access it from a console application in .NET.
Learn how to configure the Forwarded Headers Middleware in ASP.NET Core, avoid common pitfalls, and ensure your app works correctly behind a reverse proxy.
Proxies are vital for load balancing and security, but they obscure the actual client IP, scheme, and domain, causing broken links, inaccurate logging, and other headaches. In this post, we’ll look at how ASP.NET Core’s Forwarded Headers Middleware restores these details so your services behave as though they’re directly on the public internet.
In this final post in this series, we’ll now resolve logout challenges you might run into with IdentityServer, ensure proper sign-out redirects,
and summarize the key takeaways from the series.
In this third part of the series, we tackle login issues in IdentityServer caused by
cookie restrictions in HTTP and show how to resolve them by implementing HTTPS. We’ll
guide you through securing communication between the host, client, and IdentityServer
containers and configuring HTTPS in Docker to ensure everything runs smoothly.
This is part 2 of a blog series on containerizing a Duende IdentityServer and a client application.
In this post, we resolve communication challenges that arise when these applications run in separate
Docker containers. You’ll learn how to fix back-channel issues, handle localhost conflicts, and
establish proper networking between the client and IdentityServer.
Getting Duende IdentityServer and a client application up and running
in separate containers can be challenging. This blog post will provide
a step-by-step guide for a smooth setup and show you how to
resolve common challenges along the way. We will also learn about
security, cookies, ports, containers, and certificates.
This blog post describes getting Docker up and running inside an Azure Windows Virtual Machine. This might sound like a simple task, but trust me, there are some surprises on the way that took me a day or so to figure out.
I have been doing a few mentoring sessions there and it has been a great experience. However, I don't see that many people asking for mentorship there, I wish the volume of mentees was higher.
This blog post describes my approach to successfully deploying a custom container image to Azure App Services from a private container registry, using a user-assigned managed identity and the Azure CLI.
The DefaultAzureCredentials is key for using Azure services, but how exactly does it work and when should you use it? In this post, we’ll break down how it operates, its challenges, and other ways to access Azure services. This guide will help you get a clearer picture of how to handle Azure authentication simply and effectively.
In the world of web application security, OpenID Connect plays a key role in streamlining authentication processes. But what makes it really tick? In this blog post, we dive deep into two critical security features of OpenID Connect – the state and nonce parameters – and how they are used in ASP.NET Core.
Dealing with cookie problems? I’ve written a handy step-by-step troubleshooting guide for web developers! It walks you through how to fix browser omissions and rejections, and lost cookies.