#471 Expression Parsing Made Easy

Dive into Pratt or “top-down operator precedence” parsers

Expression Parsing Made Easy

Every now and then, I stumble onto some algorithm or idea that’s so clever and such a perfect solution to a problem that I feel like I got smarter or gained a new superpower just by learning it. Heaps were one, just about the only thing I got out of my truncated CS education. I recently stumbled onto another: Pratt or “top-down operator precedence” parsers.

IronOCR - C# .Net OCR Library - Image to Text in C# - Tesseract for C# .NET (sponsored)

Optimising .NET code: Hunting for allocations

Explore basic techniques for benchmarking and identifying allocation sources in code.

Multi-tenancy with ASP.NET Core and FinBuckle.Multitenant

Multi-tenancy is a complex topic with a generally understood definition, yet the devil is in the details. From a high level, Multi-tenancy is the idea that a single codebase can support many users in what they perceive as unique-to-them silos. Users have their tenants, which can provide isolation from others. Isolation can be logical or physical, specifically around dependencies such as data storage, authentication and authorization, and third-party services.

Introducing the Identity API endpoints

In this post I look at the new support for ASP.NET Core Identity being added to .NET 8 in the form of API endpoints you can use to perform basic Identity operations like registering users. These endpoints serve as API-friendly alternatives to the "default UI" that has been available with ASP.NET Core Identity for some time. I'll show how to use these APIs to interact with protected APIs in your app.

Async scopes

Scoped services are created for a specific period of time linked to a scope. For example when using ASP.NET Core a scoped service lifetime is coupled to a client request.

Closures in C# demystified

This is tutorial text on “function closures” in C#. Some theory is explained, and several C# examples are shown.


SuppressGCTransition is an attribute you can only apply on a method decorated with the DllImport attribute. It greatly reduces the overhead of the p/invoke.

.NET .gcdump Internals

The .NET runtime (both .NET Framework and .NET Core) allows you to generate a lightweight dump containing the allocated type instances count and references including roots. They are usually generated into .gcdump files by tools such as Perfview or dotnet-gcdump and can also be viewed in Visual Studio.


Would you like to become a sponsor and advertise in one of the issues? Check out our media kit and get in touch.