Additional HTTP, Sockets, DNS and TLS Telemetry in .NET 5
.NET has been steadily adding support for improved cross-platform diagnostics tracing for applications. In .NET Core 3.0, we saw the introduction of EventCounters, used for observing metric...
View ArticlePlaying with C#9 Top-level Programs, Records and Elasticsearch.NET
This post is for C# Advent Calendar 2020 organized by Matthew Groves. I recommend that you check out some of the other posts being published throughout December! In this post, I thought it was long...
View ArticleHow to Become a Better Developer by Asking Questions
It’s the beginning of a new year, so I wanted to open with a post that I’ve been planning to write for some time but never quite gotten around to creating. I recently started a new job, joining...
View ArticleDream Big: Three Months in at Elastic
I recently passed my probation period at Elastic which, of course, I’m remarkably pleased about! In this post, I wanted to attempt three things. Firstly, to encourage every developer out there to...
View ArticleASP.NET Core Dependency Injection: What is the IServiceCollection?
If you’ve built applications using ASP.NET Core then you’ve most likely used the built-in dependency injection container from Microsoft.Extensions.DependencyInjection. This package provides an...
View ArticleASP.NET Core Dependency Injection: What is the IServiceProvider and how is it...
If you’ve built applications using ASP.NET Core then you’ve most likely used the built-in dependency injection container from Microsoft.Extensions.DependencyInjection. This package provides an...
View ArticleGetting Started with the Roslyn APIs: Writing Code with Code
For the last few weeks, I’ve been working on designing and developing a C# code generator. In this post, I want to explain some of the core concepts that I’ve learned so far and describe how you too,...
View ArticleString Manipulation in C#: Best Practices
Last week my sixth Pluralsight course, “String Manipulation in C#: Best Practices” was released. This new course dives into creating, modifying, searching and parsing strings in .NET. Strings are one...
View ArticleGetting Started with GitHub Actions for .NET Developers
In this post, I wanted to share the steps required to get started with GitHub Actions to automate your workflows directly inside GitHub. I’ve fairly recently been learning about using GitHub actions...
View ArticleUsing DateOnly and TimeOnly in .NET 6
In .NET 6 (preview 4), two long-awaited types have been introduced as part of the core library. DateOnly and TimeOnly allow developers to represent either the date or time portion of a DateTime. These...
View ArticleHow Does the StringBuilder Work in .NET? (Part 1)
Part 1: Why do we need a StringBuilder and when should we use one? After becoming proficient in .NET and C#, developers are likely to learn that they should use a StringBuilder to optimise string...
View ArticleHow Does the StringBuilder Work in .NET? (Part 2)
Part Two: Understanding the Overhead of a StringBuilder To continue exploring how the StringBuilder works, we’ll shift focus and study its logical design. Today, we’ll start by looking at how the type...
View ArticleHow Does the StringBuilder Work in .NET? (Part 3)
Part Three: How Appending Works and the StringBuilder Expands So far in this series, we’ve learned when we should consider using StringBuilder in our code and learned about the memory overhead of...
View ArticlePlaying with System.Text.Json Source Generators
In my daily work, I’m becoming quite familiar with the ins and outs of using System.Text.Json. For those unfamiliar with this library, it was released along with .NET Core 3.0 as an in-the-box JSON...
View ArticleCustom JSON Serialisation with System.Text.Json Converters
This post is my contribution to the .NET Advent calendar. Make sure you check out the other amazing posts on the lead up to Christmas! At the time of writing, I am deep into work on some significant...
View ArticleUsing the Roslyn APIs to Analyse a .NET Solution
In a previous post “Getting Started with the Roslyn APIs: Writing Code with Code“, I demonstrated a relatively simple way to generate code using the Roslyn APIs. In this post, I want to revisit the...
View ArticleCreating, Inspecting and Decompiling the World’s (Nearly) Smallest C# Program
In this post, I thought it might be fun to create the world’s (nearly) shortest C# program and then deep dive into some of the fine details of what happens behind the scenes. This post is not intended...
View ArticleAccessing State in System.Text.Json Custom Converters
In this post, I describe several techniques that can provide additional state to custom JsonConverters when using System.Text.Json. While building the new .NET client for Elasticsearch, one of the key...
View ArticleConcurrent Hosted Service Start and Stop in .NET 8
In this post, I will describe a new feature of the Microsoft.Extensions.Hosting library coming in .NET 8 (available since preview 4) affecting hosted services. Let’s first begin with a brief recap of...
View ArticleIntroducing the new IHostedLifecycleService Interface in .NET 8
As regular readers will be aware, an area of .NET which I follow closely is Microsoft.Extensions.Hosting. I’ve already blogged about a change in .NET 8, where new concurrency options have been...
View Article