# James Flower > A UK-based software developer sharing practical, first-hand guides about .NET, ASP.NET Core, web development, Cloudflare, Microsoft Azure, containers, security, and developer tooling. Use the canonical HTML pages when citing the site. The linked Markdown versions contain the same article content in a compact format for retrieval and question answering. ## Key pages - [Home](https://jflower.co.uk/): Overview of James Flower and the latest articles. - [About James Flower](https://jflower.co.uk/about/): Professional focus, experience, and technology areas. - [Blog](https://jflower.co.uk/blog/): Complete chronological article index. ## Articles - [Running .NET 8 on Cloudflare Workers](https://jflower.co.uk/running-net-8-on-cloudflare-workers.md): .NET is an open-source application framework from Microsoft which supports a wide range of platforms such as Windows, Linux and macOS. Meanwhile, Cloudflare Wor Topics: .net, cloudflare. - [How to Create a DMARC Record](https://jflower.co.uk/how-to-create-a-dmarc-record.md): Domain-based Message Authentication, Reporting, and Conformance (DMARC) is an essential email authentication protocol that helps validate the authenticity of em Topics: email, security. - [How to Create a DKIM Record](https://jflower.co.uk/how-to-create-a-dkim-record.md): DomainKeys Identified Mail (DKIM) is a method of email authentication that validates email sent from a domain. DKIM adds a digital signature to important parts Topics: email, security. - [How to Create an SPF Record](https://jflower.co.uk/how-to-create-an-spf-record.md): Sender Policy Framework (SPF) records are a crucial mechanism for enhancing email security and ensuring that emails are sent from authorised servers. Before SPF Topics: email, security. - [Handling Cascading Deletes in Entity Framework Core](https://jflower.co.uk/handling-cascading-deletes-in-entity-framework-core.md): Cascading deletes in Entity Framework Core (EF Core) simplify data management by automatically removing related entities when their parent entities are deleted. Topics: asp.net, asp.net core, entity framework core. - [Entity Framework Core Exception when Querying JSON Objects with an ID Column](https://jflower.co.uk/entity-framework-core-exception-when-querying-json-objects-with-an-id-column.md): The Entity Framework Core 7 release saw the addition support for storing entities in a JSON format, without having to use serializers. This can be useful for a Topics: asp.net, asp.net core, entity framework core. - [Automatically Set Microsoft Teams Work Location Based on Wi-Fi Network](https://jflower.co.uk/automatically-set-microsoft-teams-work-location-based-on-wi-fi-network.md): Back in June Microsoft released the work location feature in Microsoft Outlook and Microsoft Teams. This allowed you to set Teams and Outlook to display if you Topics: microsoft, microsoft teams, power automate. - [Adding API Key Authentication to ASP.NET Core Web API with AuthenticationHandler](https://jflower.co.uk/adding-api-key-authentication-to-asp-net-core-with-authenticationhandler.md): Authentication is the process by which a user of a system is identified. ASP.NET Core allows multiple methods of authentication through authentication handlers Topics: asp.net core, asp.net core web api, c#, .net core. - [Securely Share Your Local ASP.NET Core Development Server with TryCloudflare](https://jflower.co.uk/securely-share-your-local-asp-net-core-development-server-with-trycloudflare.md): Sharing your local ASP.NET Core development server can be a very useful way of obtaining feedback, testing webhook integrations, and facilitating collaboration Topics: asp.net core, asp.net core mvc, asp.net core web api, cloudflare, iis express. - [How does ASP.NET Core Authentication Work?](https://jflower.co.uk/how-does-asp-net-core-authentication-work.md): One of the key features of an application is knowing who the current user is. This is called authentication. ASP.NET Core includes authentication middleware to Topics: asp.net core, asp.net core mvc, asp.net core web api. - [Azure Container Apps (ACA) with Cloudflare Origin Server Certificates](https://jflower.co.uk/azure-container-apps-aca-with-cloudflare-origin-server-certificates.md): I recently deployed a containerised application to Azure Container Apps and decided that I was going to use Cloudflare as a proxy for the application (as I do f Topics: azure container apps, cloudflare, azure. - [What are the differences between .NET, .NET Core, .NET Framework, and .NET Standard?](https://jflower.co.uk/what-are-the-differences-between-net-net-core-net-framework-and-net-standard.md): You may have come across different terms while learning about .NET, such as .NET Core, .NET Framework, and .NET Standard. These different terms can be confusing Topics: .net, .net framework, .net core. - [Containerising ASP.NET 7 Web Apps as Docker Images for Linux ARM with GitHub Actions](https://jflower.co.uk/containerising-asp-net-7-web-apps-as-docker-images-for-linux-arm-with-github-actions.md): Docker is a great way to publish and deploy .NET applications, without having to worry about dependencies being missing on the host machine. With the boost in p Topics: asp.net, .net, docker. - [Setup Windows Terminal to use Cloudflare Access for SSH Authentication](https://jflower.co.uk/setup-windows-terminal.md): Windows Terminal is a modern terminal application, which supports a wide variety of customisation through profiles. Windows Terminal Profiles can be used to con Topics: cloudflare, windows terminal, ssh. - [Browser based SSH with Short Lived Certificates using Cloudflare Zero Trust](https://jflower.co.uk/browser-based-ssh-with-short-lived-certificates-using-cloudflare-zero-trust.md): SSH is the de-facto standard for remotely accessing Unix computers. However, it requires pre-configured keys and an SSH client to be available on the client com Topics: cloudflare, ssh, ubuntu. - [Setup Nginx as a Reverse Proxy and WAF with ModSecurity in Docker](https://jflower.co.uk/setup-nginx-as-a-reverse-proxy-and-waf-with-modsecurity-in-docker.md): Nginx is a highly versatile web server which can effectively function as a reverse proxy and web application firewall (WAF). To function as a WAF, the ModSecuri Topics: docker. - [Star Trek or Star Wars – Binary Classification using ML.NET](https://jflower.co.uk/star-trek-or-star-wars-binary-classification-using-ml-net.md): I have been looking for an opportunity to try out machine learning and recently had a change. Given my background with ASP.NET, using ML.NET seemed the clear ch Topics: ml.net, machine learning, asp.net, azure functions, azure. - [Using Azure SignalR Service in Static Web Apps (SWA) Managed Functions](https://jflower.co.uk/using-azure-signalr-service-in-static-web-apps-managed-functions.md): I recently migrated my YouTube Remote project from ASP.NET 4 to use serverless computing, such as Azure SignalR Service and Azure Functions with Static Web Apps Topics: .net, asp.net, azure signalr, azure functions, azure static web app, azure. - [GitHub Importer - There was an error pushing commits to GitHub](https://jflower.co.uk/there-was-an-error-pushing-commits-to-github.md): I was recently trying to import some repositories from GitLab to GitHub, and kept receiving an error the title "We found an error during import" and message "Th Topics: github. - [Using Ghost as a Headless CMS with Static Site Generator and Deploying to Cloudflare Pages](https://jflower.co.uk/using-ghost-as-a-headless-cms-with-static-site-generator-and-deploying-to-cloudflare-pages.md): Most blogging websites are powered by server-side software such as Ghost or WordPress. This is extremely useful since they can support complex post editors, sch Topics: ghost, eleventy, cloudflare. - [Setup Gitpod for a .NET 6+ Web App](https://jflower.co.uk/setup-gitpod-for-a-net-6-web-app.md): Gitpod is a service which provides development environments in the cloud, but a .NET web app will need some extra configuration to make it accessible when runni Topics: .net core, asp.net, gitpod. - [Protect Microsoft SQL Server with a Cloudflare Tunnel and Cloudflare Access](https://jflower.co.uk/protect-microsoft-sql-server-with-a-cloudflare-tunnel-and-cloudflare-access.md): Microsoft SQL Server is a database server engine used in a wide variety of organisations for storing their data. Sometimes, it can be necessary to provide acces Topics: cloudflare, ms sql server. - [Setup GitPod for Vue.js Development](https://jflower.co.uk/setup-gitpod-for-vue-js-development.md): GitPod is a cloud-based development environment which can be used to work with a variety of frameworks, including Vue.js . It is designed to be quick to spin up Topics: gitpod, vue.js. - [Will WebAssembly (Wasm) replace JavaScript?](https://jflower.co.uk/will-webassembly-wasm-replace-javascript.md): Ever since JavaScript was created in 1995 it has formed a key part of providing interactive experiences on websites. However, since WebAssembly (Wasm) support i Topics: javascript, webassembly. - [Duplicate Validation Messages with FluentValidation in ASP.NET Core 6 MVC](https://jflower.co.uk/duplicate-validation-messages-with-fluentvalidation-in-asp-net-core-6-mvc.md): Validation is an important step when handling data from a request in ASP.NET Core 6. FluentValidation is a popular .NET library which can make validation your m Topics: asp.net core, asp.net core mvc. - [Install a Self-Hosted VPN with PiVPN on a Raspberry Pi](https://jflower.co.uk/install-a-self-hosted-vpn-with-pivpn-on-a-raspberry-pi.md): The Raspberry Pi is a very useful and versatile computer you can use to host and run a variety of services from your own home. An example of this is Pi-hole whi Topics: pivpn, raspberry pi. - [Add Git Information (and more) to Windows Terminal (or PowerShell)](https://jflower.co.uk/add-git-information-and-more-to-windows-terminal-or-powershell.md): I’m a fan of Windows Terminal – it makes it easier for me to manage my terminal windows in a tabbed interface and makes it easy to access a terminal for either Topics: oh my posh, powershell, windows terminal. - [Using Cloudflare Access and tunnels to create an RDP jump host](https://jflower.co.uk/using-cloudflare-access-and-tunnels-to-create-an-rdp-jump-host.md): Cloudflare Tunnels are a useful way of allowing private services to be accessed remotely, without exposing the devices to inbound connections. This can be combi Topics: cloudflare, rdp, remote desktop. - [Network-wide Ad Blocking with Pi-hole](https://jflower.co.uk/network-wide-ad-blocking-with-pi-hole.md): Ads can sometimes be a bit frustrating, or turn up in places we don’t expect. For example, ads on subscription-based services. Serving ads can also consume a su Topics: pi-hole, raspberry pi. - [Configuring a Vue.js SPA with Environment Variables](https://jflower.co.uk/configuring-a-vue-js-spa-with-environment-variables.md): In a previous blog post I showed how to set up ASP.NET Core Web API to support a Vue.js client SPA . In this post I will show how to extend on that example so t Topics: vue.js. - [Removing Sensitive Information from Git with git-filter-repo](https://jflower.co.uk/removing-sensitive-information-from-git-with-git-filter-repo.md): Git has become the de facto standard in source control. Over 90% of respondents to the 2021 Stack Overflow Developer Survey indicated that they use Git. However Topics: git. - [Supporting Multiple WS-Federation Authentication Schemes in ASP.NET Core](https://jflower.co.uk/supporting-multiple-ws-federation-authentication-schemes-in-asp-net-core.md): ASP.NET Core allows you to add support for multiple authentication schemes, such as social auth providers or WS-Federation. This support can be added with or wi Topics: .net core, asp.net, asp.net mvc. - [Install Docker Engine without Docker Desktop on Windows](https://jflower.co.uk/install-docker-engine-without-docker-desktop-on-windows.md): Docker have recently announced changes to their pricing and subscriptions which require a paid subscription for users outside of personal, education and small b Topics: docker, ubuntu, wsl2. - [AI Assistance for Software Developer Productivity – The Good, The Bad & The Ugly](https://jflower.co.uk/ai-assistance-for-software-developer-productivity-the-good-the-bad-the-ugly.md): Software Development can have moments of writing repetitive code. Following the DRY principle can help avoid this, but sometimes one block of code isn’t doing t - [Using ngrok with IIS Express and ASP.NET Core](https://jflower.co.uk/using-ngrok-with-iis-express-and-asp-net-core.md): Sometimes it can be helpful to quickly make the version of a project which is running on your development machine available to others. This could be for webhook Topics: asp.net, asp.net core, iis express. - [Microsoft Remote Desktop (RDP) Stuck on "Please Wait"](https://jflower.co.uk/microsoft-remote-desktop-rdp-stuck-on-please-wait.md): I often use Remote Desktop Connection (RDP) to connect to computers remotely when I am out and about. However, recently when I tried to remotely connect using R Topics: rdp, remote desktop. - [Logging in .NET Core using ILogger](https://jflower.co.uk/logging-in-net-core-using-ilogger.md): Logging is an important part of software development. It helps us know that tasks have been completed, monitor applications and provides a trail to follow when Topics: .net core, c#, logging. - [Using a Vue.js SPA with ASP.NET Core Web API](https://jflower.co.uk/using-a-vue-js-spa-with-asp-net-core-web-api.md): I recently started working on a new side project and decided to implement it as a single page application (SPA). For this, I chose to build an API powered by an Topics: asp.net core, asp.net core web api, vue.js. - [Handling null values in C#](https://jflower.co.uk/handling-null-values-in-c.md): Handling null values in C# and .NET comes with the territory. Null values were introduced by Tony Hoare in mid-1960s to represent missing or unknown&n Topics: c#. - [What makes a good log message?](https://jflower.co.uk/what-makes-a-good-log-message.md): Logging can provide important information about the behaviour of software applications. It allows operations staff to monitor application performance and gives Topics: logging. - [How to send emails in .NET Core with MimeKit and Mailkit](https://jflower.co.uk/how-to-send-emails-in-net-core.md): The ability for an application to send emails is a very common requirement. This can be for emails such as providing account information, sending marketing emai Topics: .net core, asp.net core mvc, mailkit, mimekit. - [Changing Query String Values in ASP.NET MVC](https://jflower.co.uk/changing-query-string-values-in-asp-net-mvc.md): Recently I was trying to update a query string by adding or updating a parameter for URLs generated in a partial view. I found an excellent example for achievin Topics: asp.net, asp.net mvc, query string. - [Disabling an ASP.NET MVC input control](https://jflower.co.uk/disabling-an-asp-net-mvc-input-control.md): I love ASP.NET MVC. It is a great framework to get web apps quickly built. However using the built in HtmlHelper methods on your views isn’t wit Topics: asp.net, asp.net mvc, htmlhelper. - [Fixed/Sticky Headers on ASP.NET GridView using jQuery](https://jflower.co.uk/fixedsticky-headers-on-asp-net-gridview-using-jquery.md): The GridView control in ASP.NET Web Forms is an extremely useful and quick way of getting data out to the user in a nice tabular format. It does have one weak s Topics: asp.net, fixed table headers, gridview, jquery, sticky table headers. - [Sending e-mails through Office 365](https://jflower.co.uk/sending-e-mails-through-office-365.md): I recently signed up for an Office 365 Business Essentials subscription to get the benefit of Exchange and other nice features without the hassle of managing it Topics: e-mail, exchange, microsoft, office 365. - [Strongly Typed Data in ASP .NET Web Forms](https://jflower.co.uk/strongly-typed-data-in-asp-net-web-forms.md): In ASP .NET Web Forms you’ve previously had to use strings to specify which properties you’d like to output when databinding, which would probably e Topics: asp.net, asp.net webforms. - [Install WPScan on Ubuntu 13.10](https://jflower.co.uk/install-wpscan-on-ubuntu-13-10.md): Prerequisites Since Ubuntu 13.10 doesn’t come set up for development work out of the box there are a few things you need to download and install first. Th Topics: ubuntu, ubuntu 13.10, wordpress, wpscan. - [Send E-mail through Microsoft Exchange using .NET](https://jflower.co.uk/send-e-mail-through-microsoft-exchange-using-net.md): Recently I needed to send an e-mail using Microsoft Exchange Server from an ASP .NET Web App. My first attempt involved using the classes in the System.Net.Mail Topics: asp.net, exchange, exchange web services. - [Using a RequiredFieldValidator on a DropDownList in ASP .NET](https://jflower.co.uk/using-a-requiredfieldvalidator-on-a-dropdownlist-in-asp-net.md): In most applications today drop-down lists default to a “Please select..” option with some form of validation to ensure the user makes their own sel Topics: asp.net, asp.net webforms. - [Boot Camp Support Software](https://jflower.co.uk/boot-camp-support-software.md): After upgrading a Boot Camp Windows 7 installation to Windows 8 I found that the Boot Camp drivers needed to be updating to regain control of the function keys Topics: airdisplay, bootcamp, logmein. - [How to allow HTML content in ASP .NET MVC](https://jflower.co.uk/how-to-allow-html-content-in-asp-net-mvc.md): Sometimes in web development, you need to provide an easy-to-use editor for non-technical users to input or change content where extra styling is required such Topics: allowhtml, asp.net, asp.net mvc. - [ASP .NET AJAX Control Toolkit Reorder List control and LINQ](https://jflower.co.uk/asp-net-ajax-control-toolkit-reorder-list-control-and-linq.md): The  ASP .NET AJAX Toolkit  is quite a useful and yet under-used set of controls. However they can also quickly lead to bizarre issues and  Topics: asp.net, asp.net ajax toolkit, linq.