Thomas Ardal

Thomas Ardal

Meet Thomas, the founder and developer behind elmah.io. Thomas blogs about everything technical from C# and ASP.NET Core to machine learning.

Denmark
320 posts
Lessons learned after migrating 25+ projects to .NET Core

Shares concrete lessons from migrating elmah.io's 5 web apps and 57 Azure Functions (roughly 25 Function apps) to .NET Core: shorter ~3-year LTS support windows versus 10 years on .NET Framework, a manual copy-and-port strategy for ASP.NET Core MVC projects, and headaches from middleware ordering. ...

Add Razor runtime compilation when developing ASP.NET Core

Enables Razor runtime compilation in ASP.NET Core by installing Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation and calling AddRazorRuntimeCompilation on the MVC builder inside an Env.IsDevelopment() check, plus adding custom Razor directories via a PhysicalFileProvider option in C#. ...

Split IP and port in JavaScript with regular expressions

Shares the JavaScript resolveIP function elmah.io added to its UI to detect IPv4 addresses that include a port number like 127.0.0.1:80, using a single regex to validate the four octets plus an optional port, then splitting on the colon to return just the IP part for clickable links. ...

Get a 40% discount on Manning books and other good deals

Highlights new elmah.io Goodiebag deals for Business-plan-and-up subscribers: a 40% discount on all Manning development books, 10% off tickets to GOTO conferences, and 10% off DevArt's Visual Studio extensions like Review Assistant and Code Compare, all bundled as one perk for paying users. ...

.NET/C# newsletters to subscribe to - Keep up with the news

Rounds up ten .NET/C# newsletters worth subscribing to, from daily digests like Chris Alcock's The Morning Brew and Alvin Ashcraft's Morning Dew, to weekly picks like C# Digest, dotNET Weekly, and the Awesome .NET Newsletter with its featured NuGet packages, plus Microsoft's monthly .NET Insights. ...

New Zapier integration

Announces a rebuilt elmah.io Zapier integration replacing the old v2-API-based, polling-driven app that required manually copy-pasting API keys, with account sign-in from the Apps tab, direct log selection inside Zapier, and near-instant zap triggers instead of delayed polling for new errors. ...

Implementing always signed in with ASP.NET Core and Azure

Implements a never-expiring 'always signed in' cookie in ASP.NET Core by passing AuthenticationProperties with ExpiresUtc 100 years out and IsPersistent true to SignInAsync, then fixes cookie invalidation across multiple servers and deployment slots by sharing keys via PersistKeysToAzureBlobStorage. ...

Save money on Azure with cost analysis and free tools

Details concrete Azure cost-cutting tactics elmah.io uses: PaaS App Services (Linux plans skip Windows licensing) over IaaS VMs, moving background jobs to Consumption-based Azure Functions, auto-scaling instead of over-provisioning servers, and fronting Azure with Cloudflare for free DNS and SSL. ...

Top 10 books every .NET/C# developer should read

Recommends ten .NET/C# books, from Jon Skeet's C# in Depth and CLR via C# to Roy Osherove's The Art of Unit Testing, Mark Seemann's Dependency Injection Principles Practices and Patterns, Andrew Lock's ASP.NET Core in Action, and Christian Horsdal's Microservices in .NET Core, plus a cooking book. ...