Generated by All in One SEO v5.0.0.1, this is an llms.txt file, used by LLMs to index the site. # Oleg Kyrylchuk .NET Pulse ## Sitemaps - [XML Sitemap](https://okyrylchuk.dev/sitemap.xml): Contains all public & indexable URLs for this website. ## Posts - [Efficient Bulk Updates in Entity Framework](https://okyrylchuk.dev/blog/efficient-bulk-updates-in-entity-framework/) - Learn about new bulk update and delete methods in Entity Framework Core. Find out how to use them and learn their limitations. - [How to Avoid Common EF Core Performance Pitfalls](https://okyrylchuk.dev/blog/how-to-avoid-common-ef-core-performance-pitfalls/) - Avoid slow EF Core queries! Learn how to fix N+1 issues, reduce memory usage, and speed up your app with smart data access tips. - [Logging and Diagnostics in Entity Framework](https://okyrylchuk.dev/blog/logging-and-diagnostics-in-entity-framework/) - Logging and diagnostics are vital in Entity Framework for debugging, optimizing performance, ensuring security compliance, real-time monitoring, and educating developers. Entity Framework offers several approaches to diagnosing or logging issues. - [Records in C#](https://okyrylchuk.dev/blog/records-in-csharp/) - In C#, records are a special type of reference type introduced in C# 9.0. Learn Records characteristics like immutability, value equality, nondestructive mutations and other. - [Manage API Versioning Like A Pro in ASP.NET Core](https://okyrylchuk.dev/blog/manage-api-versioning-like-a-pro-in-asp-net-core/) - Learn how to version Minimal APIs in ASP.NET Core to support multiple versions, avoid breaking changes, and evolve your API with confidence. - [Stop Unnecessary Allocations with Static Lambda in C#](https://okyrylchuk.dev/blog/stop-unnecessary-allocations-with-static-lambda-in-csharp/) - Improve C# performance with static lambdas! Reduce memory allocations, prevent unintended captures, and write faster, more efficient code with this simple trick. - [Getting Started with Azure Service Bus Emulator](https://okyrylchuk.dev/blog/getting-started-with-azure-service-bus-emulator/) - The Azure Service Bus Emulator is here! Run Service Bus locally, cut cloud costs, and speed up development. Get started with offline messaging today! - [How to Use HttpClient Properly in .NET](https://okyrylchuk.dev/blog/how-to-use-httpclient-properly-in-dotnet/) - HttpClient is a widely used typical class in .NET. However, it has a hidden pitfalls. Learn how to avoid them with HttpClientFactory. - [Boost Your .NET Development with Refit](https://okyrylchuk.dev/blog/boost-your-dotnet-development-with-refit/) - Learn how Refit can boost your .NET Development. Explore how flexible and feature-reached Refit is. - [Understanding struct vs ref struct in C#](https://okyrylchuk.dev/blog/understanding-struct-vs-ref-struct-in-csharp/) - In C#, structs are powerful tools for creating lightweight value types that offer both efficiency and simplicity. However, when dealing with scenarios requiring precise memory management and high performance, mainly where stack allocation is critical, C# introduces a specialized type known as ref struct. - [Efficient Synchronization in C# with SemaphoreSlim](https://okyrylchuk.dev/blog/efficient-synchronization-in-csharp-with-semaphoreslim/) - SemaphoreSlim in C# controls concurrent access to resources, supports async operations, and is ideal for limiting tasks or throttling in multithreaded apps. - [Guid Version 7 in .NET 9](https://okyrylchuk.dev/blog/guid-version7-in-dotnet-9/) - .NET 9 introduces a GUID version 7 implementation. Find out the differences with GUID version 4. - [Intro to Serialization with Source Generation in System.Text.Json](https://okyrylchuk.dev/blog/intro-to-serialization-with-source-generation-in-system-text-json/) - System.Text.Json serializer uses reflections for serialization and deserialization. Reflection is slow. Learn how you can serialize object using Source Generation in .NET. - [How to Become a Microsoft MVP: My Path and Tips for You](https://okyrylchuk.dev/blog/how-to-become-a-microsoft-mvp-my-path-and-tips-for-you/) - How I became a Microsoft MVP — my journey, key skills that helped me, and tips for those looking to earn the award. - [Single vs. Split Query in Entity Framework](https://okyrylchuk.dev/blog/single-vs-split-query-in-entity-framework/) - Cartesian explosion or data duplication can cause a big issue for SQL JOINS. Learn when you should split queries in Entity Framework. - [The Builder Pattern in C#: Create Objects Step by Step](https://okyrylchuk.dev/blog/the-builder-pattern-in-csharp-create-objects-step-by-step/) - Simplify complex object creation in C# with the Builder pattern. Learn how to structure required and optional properties for clean, maintainable code. - [Unlocking the Delegate's Potential in C#](https://okyrylchuk.dev/blog/unlocking-the-delegates-potential-in-csharp/) - A delegate is a type-safe function pointer that can reference on or more methods with a compatible signature. Find out how to use them. How delegates are connected with lambda expressions and events. - [Performant Compile-Time Logging in .NET](https://okyrylchuk.dev/blog/performant-compile-time-logging-in-dotnet/) - Logging is a critical part of software development. Learn how to improve logging performance, safety, and maintainability with source generator in .NET applications. - [How to Use BackgroundService in .NET for Long-Running Tasks](https://okyrylchuk.dev/blog/how-to-use-backgroundservice-in-dotnet-for-long-running-tasks/) - Learn how to implement and optimize background services in .NET to run long-running tasks efficiently, handle async operations, and follow best practices. - [How to Release Unmanaged Resources Asynchronously in .NET](https://okyrylchuk.dev/blog/how-to-release-unmanaged-resources-asynchronously-in-dotnet/) - Garbage Collector does memory management for us. Learn how to release unmanaged resources both synchronously and asynchronously in .NET. - [How to Handle Options in ASP.NET Core Better](https://okyrylchuk.dev/blog/how-to-handle-options-in-asp-net-core-better/) - Discover a better way to handle options in ASP.NET Core. Find out what is the Options Pattern and how to use it. - [Service Lifetimes in .NET](https://okyrylchuk.dev/blog/service-lifetimes-in-dotnet/) - Explore the Service Lifetimes in Dependency Injection Container in .NET. Learn the types Singleton, Scoped, and Transient. - [What's New in ASP.NET Core 9](https://okyrylchuk.dev/blog/whats-new-in-asp-net-core-9/) - ASP.NET Core 9 boosts Minimal API with lower memory use, OpenAPI generation, and small API improvements. Plus, a better HybridCache is on the way! - [Getting started with Health Checks in ASP.NET Core](https://okyrylchuk.dev/blog/getting-started-with-health-checks-in-asp-net-core/) - Getting started with health checks in ASP.NET Core is simple. Health checks provide a quick snapshot of your app’s status, monitoring dependencies like databases and external services. By configuring and exposing health endpoints, you can ensure your application remains robust and responsive to issues. - [How to Standardize Code Formatting in .NET with .editorconfig](https://okyrylchuk.dev/blog/how-to-standardize-code-formatting-in-dotnet-with-editorconfig/) - Ensure consistent code formatting in .NET with .editorconfig. Learn how to set up rules, enforce styles, and improve team collaboration effortlessly. - [What's new in C# 12](https://okyrylchuk.dev/blog/whats-new-in-csharp-12/) - Discover what is new in C# 12. Learn about Collection expressions, Primary constructors, Default lambda parameters, Alias any type, ref readonly parameters, Inline arrays, Experimental attribute, and Interceptors. - [Easy API Testing in VS Code, Visual Studio, and Rider](https://okyrylchuk.dev/blog/easy-api-testing-in-vs-code-visual-studio-and-rider/) - Streamline API testing with .http files! Send requests directly from VS Code, Visual Studio, or Rider—lightweight, fast, and version-control friendly. - [Decorator Pattern: Add Behavior Without Breaking Code](https://okyrylchuk.dev/blog/decorator-pattern-add-behavior-without-breaking-code/) - The Decorator Pattern in .NET allows you to add behavior to objects dynamically. Learn how to implement and register decorators using DI for cleaner, flexible code. - [Pattern Matching in C#](https://okyrylchuk.dev/blog/pattern-matching-in-csharp/) - Pattern matching is a C# feature that allows you to write more expressive code. You can test the expression and take action when the expression matches. It enables you to match the shape and properties of values using patterns, making it easier to work with complex data structures. - [Seamless Feature Rollouts in ASP.NET Core Using Feature Management](https://okyrylchuk.dev/blog/seamless-feature-rollouts-in-asp-net-core-using-feature-management/) - Control features dynamically in ASP.NET Core! Learn to toggle features, roll out updates, and boost agility with feature management. - [Mastering Cancellation in C# with CancellationToken](https://okyrylchuk.dev/blog/mastering-cancellation-in-csharp-with-cancellationtoken/) - Master task cancellations in C# with CancellationToken! Explore patterns, best practices, and techniques for building responsive and efficient code. - [Mastering Async and Await in C#: Best Practices](https://okyrylchuk.dev/blog/mastering-async-and-await-in-csharp-best-practices/) - Master async/await with best practices! Avoid deadlocks, optimize performance, and write cleaner, scalable C# code. - [Efficient Object Mapping with Mapperly in .NET](https://okyrylchuk.dev/blog/efficient-object-mapping-with-mapperly-in-dotnet/) - Mapperly: The compile-time object mapping library that transforms .NET development. Discover how source generators create faster, type-safe mappings with zero runtime overhead. - [High-Performance File Access in .NET with RandomAccess](https://okyrylchuk.dev/blog/high-performance-file-access-in-dotnet-with-randomaccess/) - Discover how .NET's RandomAccess boosts file I/O performance with efficient, thread-safe operations. See how it compares to FileStream. - [New APIs in .NET 9 You Should Know About](https://okyrylchuk.dev/blog/new-apis-in-dotnet-9-you-should-know-about/) - Discover new .NET APIs in .NET 9 like CountBy, Task.WhenEach, and ReadOnlySet that simplify coding and boost efficiency. Dive in to explore! - [Better Controlling Time with TimeProvider in .NET](https://okyrylchuk.dev/blog/better-controlling-time-in-dotnet/) - New TimeProvider in C# simplifies time management and testing. Say goodbye to custom abstractions—control time easily in tests with FakeTimeProvider! - [Understanding ValueTask in C#](https://okyrylchuk.dev/blog/understanding-valuetask-in-csharp/) - ValueTask is a value type that helps reduce allocations in async methods, optimizing performance for frequent synchronous completions. Learn when and how to use it! - [Handling Exceptions with IExceptionHandler in ASP.NET Core 8](https://okyrylchuk.dev/blog/handling-exceptions-in-asp-net-core-8/) - There are several ways to handle exceptions in ASP.NET Core. To make handling exceptions easier, ASP.NET Core 8 introduces a new IExceptionHandler. - [The Power of SearchValues in .NET](https://okyrylchuk.dev/blog/the-power-of-searchvalues-in-dotnet/) - The SearchValues is a new type introduced in .NET 8. It provides an immutable, read-only set of values optimized for efficient searching. - [Understanding the Circuit Breaker Pattern](https://okyrylchuk.dev/blog/understanding-the-circuit-breaker-pattern/) - The Circuit Breaker pattern is important in distributed systems, microservices architecture, and cloud-native applications. It helps improve system resilience, stability, and fault tolerance. - [Understanding the Retry Pattern](https://okyrylchuk.dev/blog/understanding-the-retry-pattern/) - In today's world of distributed systems, microservices, and cloud services, failures are inevitable. The Retry pattern is a simple yet powerful approach to handling of transient failures. - [Understanding IEnumerable and IQueryable in C#](https://okyrylchuk.dev/blog/understanding-ienumerable-and-iqueryable-in-csharp/) - Understanding IEnumerable vs. IQueryable in C# is key for performance. Learn when to use each for efficient data handling in your applications. - [What's new in System.Text.Json in .NET 9](https://okyrylchuk.dev/blog/whats-new-in-system-text-json-in-dotnet-9/) - System.Text.Json 9 brings JSON schema support, nullable reference types, custom enum names, flexible serialization, and more for .NET developers. - [How to Investigate Performance Counters in .NET](https://okyrylchuk.dev/blog/how-to-investigate-performance-counters-in-dotnet/) - Explore how to use Performance Counters in .NET. The tutorial describes the available commands. - [3 Methods to Create Middleware in ASP.NET Core](https://okyrylchuk.dev/blog/three-methods-to-create-middleware-in-asp-net-core/) - In ASP.NET Core, middleware is a component of the request-processing pipeline. Learn three methods how to create middleware in ASP.NET Core. - [A New Place To Manage Packages in .NET](https://okyrylchuk.dev/blog/new-place-to-manage-packages-in-dotnet/) - NuGet is an open-source package management system for .NET developed by Microsoft. It allows developers to create, share, and consume reusable code in packages. These packages can include compiled code (DLLs), source code, configuration files, scripts, and other content. NuGet supports versioning, allowing developers to specify which versions of a package they need and to - [When to Use Frozen Collections in .NET](https://okyrylchuk.dev/blog/when-to-use-frozen-collections-in-dotnet/) - Frozen Collections are immutable and read-only, optimized for fast lookup end enumeration. Explore benchmarks and when to use them. - [Efficient Memory Management with Span in .NET](https://okyrylchuk.dev/blog/efficient-memory-management-with-spans-in-dotnet/) - Explore Span in .NET—an essential feature for boosting performance and memory efficiency in high-performance applications - [Complex Types in Entity Framework 8](https://okyrylchuk.dev/blog/complex-types-in-entity-framework-8/) - The Complex Types are very similar to Owned Types in Entity Framework 8. Discover the difference between these types. - [What's New in C# 13](https://okyrylchuk.dev/blog/whats-new-in-charp13/) - Overview of C# 13 features. Learn params collections, new lock type, partial properties and many more. - [Minimal APIs in .NET 8](https://okyrylchuk.dev/blog/minimal-apis-in-dotnet-8/) - .NET 8 introduces new features for Minimal APIs. Explore Antiforgery tokens, binding Forms, and new IResettable interface. - [How to Work with String Literals in C#](https://okyrylchuk.dev/blog/how-to-work-with-string-literals-in-csharp/) - String literals in C# are vital for representing fixed character sequences directly within code, enhancing readability and clarity. Learn the difference between Quoted, Verbatim and Raw String Literals. How to use them with string interpolation. - [How Easily to Fan Out HTTP Requests in .NET](https://okyrylchuk.dev/blog/how-to-fan-out-http-requests-in-dotnet/) - An easy way how to fan out HTTP requests in .NET. A new method introduced in .NET 6. - [Boost Your App's Performance with .NET Benchmarking](https://okyrylchuk.dev/blog/boost-your-apps-performance-with-dotnet-benchmarking/) - Boost your .NET app’s performance with BenchmarkDotNet! Measure execution time, memory usage, and optimize your code with powerful benchmarking tools. ## Pages - [Home](https://okyrylchuk.dev/) - .NET Pulse: A free weekly newsletter about .NET. Embark on a journey of continuous learning and discovery! - [Newsletter](https://okyrylchuk.dev/blog/) ## Categories - [Uncategorized](https://okyrylchuk.dev/blog/category/uncategorized/) - [.NET](https://okyrylchuk.dev/blog/category/dotnet/) - [C#](https://okyrylchuk.dev/blog/category/csharp/) - [Patterns](https://okyrylchuk.dev/blog/category/patterns/) - [.NET 9](https://okyrylchuk.dev/blog/category/dotnet-9/) - [Tools](https://okyrylchuk.dev/blog/category/tools/) - [Performance](https://okyrylchuk.dev/blog/category/performance/) - [.NET 6](https://okyrylchuk.dev/blog/category/dotnet-6/) - [.NET 8](https://okyrylchuk.dev/blog/category/dotnet-8/) - [Entity Framework](https://okyrylchuk.dev/blog/category/entity-framework/) - [Entity Framework 7](https://okyrylchuk.dev/blog/category/entity-framework-7/) - [Entity Framework 8](https://okyrylchuk.dev/blog/category/entity-framework-8/) - [Cli](https://okyrylchuk.dev/blog/category/cli/) - [Configuration](https://okyrylchuk.dev/blog/category/configuration/) - [ASP.NET](https://okyrylchuk.dev/blog/category/asp-net/) - [Source Generators](https://okyrylchuk.dev/blog/category/source-generators/) - [JSON](https://okyrylchuk.dev/blog/category/json/) - [System.Text.Json](https://okyrylchuk.dev/blog/category/system-text-json/) - [C# 13](https://okyrylchuk.dev/blog/category/c-13/) - [ASP.NET Core 8](https://okyrylchuk.dev/blog/category/asp-net-core-8/) - [C# 12](https://okyrylchuk.dev/blog/category/c-12/) - [ASP.NET Core](https://okyrylchuk.dev/blog/category/asp-net-core/) - [Logging](https://okyrylchuk.dev/blog/category/logging/) - [Async](https://okyrylchuk.dev/blog/category/async/) - [Azure](https://okyrylchuk.dev/blog/category/azure/) - [API](https://okyrylchuk.dev/blog/category/api/) - [MVP](https://okyrylchuk.dev/blog/category/mvp/) ## Tags - [.NET](https://okyrylchuk.dev/blog/tag/dotnet/) - [C#](https://okyrylchuk.dev/blog/tag/csharp/) - [NuGet](https://okyrylchuk.dev/blog/tag/nuget/) - [Package Management](https://okyrylchuk.dev/blog/tag/package-management/) - [Transitive Pinning](https://okyrylchuk.dev/blog/tag/transitive-pinning/) - [TimeProvider](https://okyrylchuk.dev/blog/tag/timeprovider/) - [FakeTimeProvider](https://okyrylchuk.dev/blog/tag/faketimeprovider/) - [Spans](https://okyrylchuk.dev/blog/tag/spans/) - [Memory Management](https://okyrylchuk.dev/blog/tag/memory-management/) - [SearchValues](https://okyrylchuk.dev/blog/tag/searchvalues/) - [Search Values](https://okyrylchuk.dev/blog/tag/search-values/) - [Circuit Breaker](https://okyrylchuk.dev/blog/tag/circuit-breaker/) - [Pattern](https://okyrylchuk.dev/blog/tag/pattern/) - [Resilience](https://okyrylchuk.dev/blog/tag/resilience/) - [Microservices](https://okyrylchuk.dev/blog/tag/microservices/) - [.NET 9](https://okyrylchuk.dev/blog/tag/net-9/) - [Refit](https://okyrylchuk.dev/blog/tag/refit/) - [Tools](https://okyrylchuk.dev/blog/tag/tools/) - [HttpClient](https://okyrylchuk.dev/blog/tag/httpclient/) - [HttpClientFactory](https://okyrylchuk.dev/blog/tag/httpclientfactory/) - [Http](https://okyrylchuk.dev/blog/tag/http/) - [Parallel](https://okyrylchuk.dev/blog/tag/parallel/) - [ForEachAsync](https://okyrylchuk.dev/blog/tag/foreachasync/) - [Entity Framework](https://okyrylchuk.dev/blog/tag/entity-framework/) - [Entity Framework 7](https://okyrylchuk.dev/blog/tag/entity-framework-7/) - [Entity Framework 8](https://okyrylchuk.dev/blog/tag/entity-framework-8/) - [Owned Types](https://okyrylchuk.dev/blog/tag/owned-types/) - [Bulk](https://okyrylchuk.dev/blog/tag/bulk/) - [delegates](https://okyrylchuk.dev/blog/tag/delegates/) - [lambda](https://okyrylchuk.dev/blog/tag/lambda/) - [lambda expressions](https://okyrylchuk.dev/blog/tag/lambda-expressions/) - [events](https://okyrylchuk.dev/blog/tag/events/) - [action](https://okyrylchuk.dev/blog/tag/action/) - [predicate](https://okyrylchuk.dev/blog/tag/predicate/) - [performance](https://okyrylchuk.dev/blog/tag/performance/) - [counters](https://okyrylchuk.dev/blog/tag/counters/) - [cli](https://okyrylchuk.dev/blog/tag/cli/) - [command line](https://okyrylchuk.dev/blog/tag/command-line/) - [list](https://okyrylchuk.dev/blog/tag/list/) - [ps](https://okyrylchuk.dev/blog/tag/ps/) - [collect](https://okyrylchuk.dev/blog/tag/collect/) - [options](https://okyrylchuk.dev/blog/tag/options/) - [settings](https://okyrylchuk.dev/blog/tag/settings/) - [appsettings](https://okyrylchuk.dev/blog/tag/appsettings/) - [optionsbuilder](https://okyrylchuk.dev/blog/tag/optionsbuilder/) - [optionsmonitor](https://okyrylchuk.dev/blog/tag/optionsmonitor/) - [optionssnapshot](https://okyrylchuk.dev/blog/tag/optionssnapshot/) - [Retry](https://okyrylchuk.dev/blog/tag/retry/) - [Polly](https://okyrylchuk.dev/blog/tag/polly/) - [asp.net](https://okyrylchuk.dev/blog/tag/asp-net/) - [asp.net core](https://okyrylchuk.dev/blog/tag/asp-net-core/) - [health checks](https://okyrylchuk.dev/blog/tag/health-checks/) - [Frozen](https://okyrylchuk.dev/blog/tag/frozen/) - [Collection](https://okyrylchuk.dev/blog/tag/collection/) - [Collections](https://okyrylchuk.dev/blog/tag/collections/) - [FrozenCollections](https://okyrylchuk.dev/blog/tag/frozencollections/) - [read-only](https://okyrylchuk.dev/blog/tag/read-only/) - [literals](https://okyrylchuk.dev/blog/tag/literals/) - [string](https://okyrylchuk.dev/blog/tag/string/) - [verbatim](https://okyrylchuk.dev/blog/tag/verbatim/) - [quoted](https://okyrylchuk.dev/blog/tag/quoted/) - [raw string](https://okyrylchuk.dev/blog/tag/raw-string/) - [interpolation](https://okyrylchuk.dev/blog/tag/interpolation/) - [dependency injection](https://okyrylchuk.dev/blog/tag/dependency-injection/) - [singleton](https://okyrylchuk.dev/blog/tag/singleton/) - [scoped](https://okyrylchuk.dev/blog/tag/scoped/) - [transient](https://okyrylchuk.dev/blog/tag/transient/) - [Splitting](https://okyrylchuk.dev/blog/tag/splitting/) - [Cartesian explosion](https://okyrylchuk.dev/blog/tag/cartesian-explosion/) - [data duplication](https://okyrylchuk.dev/blog/tag/data-duplication/) - [SQL](https://okyrylchuk.dev/blog/tag/sql/) - [JOIN](https://okyrylchuk.dev/blog/tag/join/) - [Dispose](https://okyrylchuk.dev/blog/tag/dispose/) - [DisposeAsync](https://okyrylchuk.dev/blog/tag/disposeasync/) - [Garbage Collector](https://okyrylchuk.dev/blog/tag/garbage-collector/) - [Unmanaged Resources](https://okyrylchuk.dev/blog/tag/unmanaged-resources/) - [system.text.json](https://okyrylchuk.dev/blog/tag/system-text-json/) - [json](https://okyrylchuk.dev/blog/tag/json/) - [source generators](https://okyrylchuk.dev/blog/tag/source-generators/) - [serialization](https://okyrylchuk.dev/blog/tag/serialization/) - [deserialization](https://okyrylchuk.dev/blog/tag/deserialization/) - [struct](https://okyrylchuk.dev/blog/tag/struct/) - [ref struct](https://okyrylchuk.dev/blog/tag/ref-struct/) - [logging](https://okyrylchuk.dev/blog/tag/logging/) - [diagnostics](https://okyrylchuk.dev/blog/tag/diagnostics/) - [interceptors](https://okyrylchuk.dev/blog/tag/interceptors/) - [pattern matching](https://okyrylchuk.dev/blog/tag/pattern-matching/) - [Records](https://okyrylchuk.dev/blog/tag/records/) - [immutability](https://okyrylchuk.dev/blog/tag/immutability/) - [exception](https://okyrylchuk.dev/blog/tag/exception/) - [exceptions](https://okyrylchuk.dev/blog/tag/exceptions/) - [exception handling](https://okyrylchuk.dev/blog/tag/exception-handling/) - [iexceptionhandler](https://okyrylchuk.dev/blog/tag/iexceptionhandler/) - [middleware](https://okyrylchuk.dev/blog/tag/middleware/) - [antiforgery](https://okyrylchuk.dev/blog/tag/antiforgery/) - [binding forms](https://okyrylchuk.dev/blog/tag/binding-forms/) - [object pool](https://okyrylchuk.dev/blog/tag/object-pool/) - [complex types](https://okyrylchuk.dev/blog/tag/complex-types/) - [Features](https://okyrylchuk.dev/blog/tag/features/) - [middlewares](https://okyrylchuk.dev/blog/tag/middlewares/) - [logger](https://okyrylchuk.dev/blog/tag/logger/) - [C# 13](https://okyrylchuk.dev/blog/tag/c-13/) - [Lock](https://okyrylchuk.dev/blog/tag/lock/) - [async](https://okyrylchuk.dev/blog/tag/async/) - [valuetask](https://okyrylchuk.dev/blog/tag/valuetask/) - [benchmarking](https://okyrylchuk.dev/blog/tag/benchmarking/) - [multithreading](https://okyrylchuk.dev/blog/tag/multithreading/) - [IEnumerable](https://okyrylchuk.dev/blog/tag/ienumerable/) - [IQueryable](https://okyrylchuk.dev/blog/tag/iqueryable/) - [minimal api](https://okyrylchuk.dev/blog/tag/minimal-api/) - [await](https://okyrylchuk.dev/blog/tag/await/) - [task](https://okyrylchuk.dev/blog/tag/task/) - [APIs](https://okyrylchuk.dev/blog/tag/apis/) - [CountBy](https://okyrylchuk.dev/blog/tag/countby/) - [AggregateBy](https://okyrylchuk.dev/blog/tag/aggregateby/) - [Index](https://okyrylchuk.dev/blog/tag/index/) - [Task.WhenEach](https://okyrylchuk.dev/blog/tag/task-wheneach/) - [ReadOnlySet](https://okyrylchuk.dev/blog/tag/readonlyset/) - [File IO](https://okyrylchuk.dev/blog/tag/file-io/) - [RandomAccess](https://okyrylchuk.dev/blog/tag/randomaccess/) - [mapperly](https://okyrylchuk.dev/blog/tag/mapperly/) - [object mapping](https://okyrylchuk.dev/blog/tag/object-mapping/) - [cancellationtoken](https://okyrylchuk.dev/blog/tag/cancellationtoken/) - [feature management](https://okyrylchuk.dev/blog/tag/feature-management/) - [feature flags](https://okyrylchuk.dev/blog/tag/feature-flags/) - [feature toggles](https://okyrylchuk.dev/blog/tag/feature-toggles/) - [azure app configuration](https://okyrylchuk.dev/blog/tag/azure-app-configuration/) - [code rules](https://okyrylchuk.dev/blog/tag/code-rules/) - [code quality](https://okyrylchuk.dev/blog/tag/code-quality/) - [analyzers](https://okyrylchuk.dev/blog/tag/analyzers/) - [editorconfig](https://okyrylchuk.dev/blog/tag/editorconfig/) - [builder](https://okyrylchuk.dev/blog/tag/builder/) - [azure](https://okyrylchuk.dev/blog/tag/azure/) - [service bus](https://okyrylchuk.dev/blog/tag/service-bus/) - [emulator](https://okyrylchuk.dev/blog/tag/emulator/) - [static](https://okyrylchuk.dev/blog/tag/static/) - [perfomance](https://okyrylchuk.dev/blog/tag/perfomance/) - [zero allocation](https://okyrylchuk.dev/blog/tag/zero-allocation/)