Welcome to Ryan Williams' Developer Blog
Block AI Crawlers in ASP.NET Core
October 28th, 2026
Stop GPTBot, ClaudeBot, PerplexityBot, CCBot and other AI crawlers with robots.txt, ASP.NET Core middleware, or an IIS rule, without blocking Google or Bing.
Internet Radio Station on a VPS
November 6th, 2026
Run a 24/7 internet radio station on a cheap Linux VPS: AzuraCast in one command, or Icecast with a Liquidsoap AutoDJ, plus SHOUTcast, bandwidth and licensing.
Tor Onion Service on Linux With nginx
October 28th, 2026
Make a .onion version of your website on Ubuntu or Debian: install Tor from the official repo, set up torrc and nginx, handle HTTPS redirects, and back up keys.
Monero Payments With monero-wallet-rpc in C#
October 28th, 2026
Self-hosted Monero (XMR) payments in ASP.NET Core with a view-only wallet, monero-wallet-rpc, one subaddress per order, and a payment-watching background job.
Cloudflare and Azure Blob Storage CDN
November 6th, 2026
Serve Azure Blob Storage on cdn.yourdomain.com through Cloudflare: proxied CNAME, asverify validation, Full (strict) SSL, caching, and when R2 is simpler.
How To Create A TOR Link On Windows Server
November 6th, 2026
Host an IIS site as a Tor .onion service on Windows Server: where torrc lives (%APPDATA%\tor\torrc), the exact config, running Tor as a service, key backups.
Monero Payments with NOWPayments in C#
October 28th, 2026
C# guide to the NOWPayments API: create a Monero (XMR) invoice, redirect to invoice_url, and verify x-nowpayments-sig IPN callbacks with HMAC-SHA512.
Custom Caching Tag ASP.NET
January 28th, 2024
Discover how to craft a custom cache tag helper in ASP.NET Core. Seamlessly merge Razor view caching with on-demand expiration for optimal backend performance.
How To Remove ASP.NET Server Headers
October 28th, 2026
Hide the Server: Kestrel, Server: Microsoft-IIS and X-Powered-By headers with the exact Program.cs and web.config settings for ASP.NET Core and IIS 10.
Locked Files Publishing .NET Core Apps
October 28th, 2026
Web Deploy says your DLL is locked by an external process? MSDEPLOY_RENAME_LOCKED_FILES only works on Azure. On IIS, enable ASP.NET Core shadow copying.