Logging Source Code Generators
Explains C# logging source code generators in .NET 6, detailing their benefits and usage for efficient, structured logging.
Steven Giesel is a Senior Software Engineer and Microsoft MVP with over 13 years of experience, specializing in .NET and modern backend development. He shares deep technical knowledge across topics such as C#, EF Core, RavenDB, distributed systems, and cloud-native architectures, and is an active speaker in the .NET community.
314 articles from this blog
Explains C# logging source code generators in .NET 6, detailing their benefits and usage for efficient, structured logging.
A comparison of four popular Git branching strategies: Git-Flow, GitHub-Flow, GitLab-Flow, and Trunk-Based Development, detailing their pros, cons, and use cases.
A tutorial on improving the user experience of a Blazor WebAssembly app by creating a custom loading screen with a progress bar.
An introductory guide explaining the core concepts of Git, including repositories, remotes, commits, and branches, with practical examples.
Explains the difference between abstract classes and interfaces in C# using real-world analogies like animals and ATMs.
A detailed guide to SOLID principles in C#, explaining each principle with code examples to improve code readability, maintainability, and flexibility.
Explores potential future features for the C# programming language, including compound assignments in object initializers and discriminated unions.
A guide to using Directory.Build.props to create a central NuGet package store for managing dependencies in a UNO Platform .NET 6 application.
Explains when Blazor components automatically re-render and common pitfalls to avoid, focusing on StateHasChanged, async methods, and lifecycle events.
Explains how to use TaskCompletionSource in .NET to convert event-based APIs into awaitable tasks, with examples for timers and error handling.
Explores valid use cases for the 'goto' keyword in C#, challenging its reputation as universally bad practice.
Explains the differences between C#, .NET, IL, and the JIT compiler, detailing their roles in the .NET development stack.
Explains C# delegates, including Action, Func, Predicate, and lambda expressions, and how they are used to pass methods.
Explains the .NET Garbage Collector's compacting phase, its performance benefits, and the Large Object Heap (LOH).
Explains the ObjectPool pattern in C# for performance optimization, showing how to reuse expensive objects to reduce garbage collection overhead.
A tutorial on creating an RSS feed for a blog or website using Blazor and the System.ServiceModel.Syndication package in ASP.NET Core.
A guide to unit testing applications that use the RavenDB document database in .NET, covering setup and repository patterns.
A deep dive into how the .NET Garbage Collector works, explaining its phases, generations, and impact on application performance.
Explains how to implement CancellationToken support in Blazor applications to cancel long-running tasks and manage resources when users navigate away.
Explains why using finalizers in C# is problematic and advocates for IDisposable for deterministic resource cleanup.