The Curious Engineer

All blogs / C# / .NET

Steven Giesel

steven-giesel.com

Hey, I'm Steven a .NET Developer in Switzerland. I am a Microsoft MVP. Also, this blog is open source on GitHub.

C# / .NETPerformance / optimizationTesting / QA

Posts
683 from 29 Jun 2021 to 28 Oct 2026
Posting
weekly (81 in the last year)
Kind
personal blog
Feed
https://steven-giesel.com/feed.rss

2026 65

  1. Goldfish in Claude
  2. Primary constructors are more than syntactic sugar
  3. Primary constructors are more than syntactic sugar
  4. .NET
  5. A personal note: I built a running App for iOS and watchOS
  6. A personal note: I built a running App for iOS and watchOS
  7. watchOS
  8. If It Quacks - Part 2
  9. If It Quacks - Part 2
  10. Quack Quack: Duck-Typing in C# with Interceptors
  11. Quack Quack: Duck-Typing in C# with Interceptors
  12. Adding Properties with extension methods in C# 14
  13. Adding Properties with extension methods in C# 14
  14. Claude Memory Admin
  15. Claude Memory Admin
  16. Claude
  17. xUnit.v3 4.0.0 released
  18. xUnit.v3 4.0.0 released
  19. .NET Toolbox August Update
  20. .NET Toolbox August Update
  21. .NET 11 Performance Edition
  22. .NET 11 Performance Edition
  23. Adding static getter thanks to extensions
  24. Adding static getter thanks to extensions
  25. C# 14
  26. Set LogLevel of Blazor
  27. Set LogLevel of Blazor
  28. Blazor
  29. LinkedIn - What a dumbster fire
  30. LinkedIn - What a dumbster fire
  31. LinkedIn
  32. Signals in Blazor
  33. Signals in Blazor
  34. EF Core 11 makes your split queries faster
  35. EF Core 11 makes your split queries faster
  36. EF Core
  37. Zstandard compression in .NET 11
  38. Zstandard compression in .NET 11
  39. BackgroundService exceptions now propagate in .NET 11
  40. BackgroundService exceptions now propagate in .NET 11
  41. .NET 11
  42. ConfigurationIgnoreAttribute in .NET 11
  43. ConfigurationIgnoreAttribute in .NET 11
  44. Source code generated string enums with exhaustion support
  45. Source code generated string enums with exhaustion support
  46. records ToString and inheritence
  47. records ToString and inheritence
  48. FullJoin in .NET 11 - potentially
  49. FullJoin in .NET 11 - potentially
  50. Tool-Highlight: Handy
  51. Tool-Highlight: Handy
  52. Being stupid is fun: Let's create long exception messages!
  53. Being stupid is fun: Let's create long exception messages!
  54. New runtime async is hitting .NET 11 - Part 1
  55. New runtime async is hitting .NET 11 - Part 1
  56. Collection Expression Arguments in C# 15 are "out"
  57. Collection Expression Arguments in C# 15 are "out"
  58. .NET Toolbox February Update
  59. .NET Toolbox February Update
  60. Sometimes you just need extensions methods to model your stuff
  61. Sometimes you just need extensions methods to model your stuff
  62. Collection Expression Arguments in C# 15+
  63. Collection Expression Arguments in C# 15+
  64. .NET Toolbox
  65. .NET Toolbox

2025 98

  1. Task.Delay fails if you wait longer than 49.7 days
  2. Task.Delay fails if you wait longer than 49.7 days
  3. One Minute Knowledge: Is ToArrayAsync or ToListAsync faster for Entity Framework?
  4. One Minute Knowledge: Is ToArrayAsync or ToListAsync faster for Entity Framework?
  5. GitHub Runners might not be a good benchmark baseline
  6. GitHub Runners might not be a good benchmark baseline
  7. Mime Type Helper in .NET 11
  8. Mime Type Helper in .NET 11
  9. Using sortable UUID / GUIDs in Entity Framework
  10. Using sortable UUID / GUIDs in Entity Framework
  11. No more public partial class Program in .NET 10
  12. No more public partial class Program in .NET 10
  13. Capturing Console Output in xUnit.v3
  14. Capturing Console Output in xUnit.v3
  15. ArrayPool Benchmarks: We have a problem
  16. ArrayPool Benchmarks: We have a problem
  17. LinkedIn: "Are you still using new Random() everywhere?"
  18. LinkedIn: "Are you still using new Random() everywhere?"
  19. Inlining and structs in C#
  20. Inlining and structs in C#
  21. Use CancellationTokens
  22. Use CancellationTokens
  23. LinkedIn Benchmarks again
  24. LinkedIn Benchmarks again
  25. ToDictionaryAsync retrieves the whole object from the database in Entity Framework
  26. ToDictionaryAsync retrieves the whole object from the database in Entity Framework
  27. Divide and Conquer the Database
  28. Divide and Conquer the Database
  29. Quick one: Difference between collection expressions and collection initializer
  30. Quick one: Difference between collection expressions and collection initializer
  31. Two more LINQ extensions in dotnet 10
  32. Two more LINQ extensions in dotnet 10
  33. How to not return all properties in SqlRaw
  34. How to not return all properties in SqlRaw
  35. Disabling thread safety check in Entity Framework
  36. Disabling thread safety check in Entity Framework
  37. Using Architecture Tests for CancellationTokens and sealed classes
  38. Using Architecture Tests for CancellationTokens and sealed classes
  39. Why Lists are not lowered to a while loop
  40. Why Lists are not lowered to a while loop
  41. ToListAsync is fast again in Entity Framework (kind of)
  42. ToListAsync is fast again in Entity Framework (kind of)
  43. Adding test description for data-driven tests in xUnit
  44. Adding test description for data-driven tests in xUnit
  45. You can't use switch expressions in Blazor (sometimes)
  46. You can't use switch expressions in Blazor (sometimes)
  47. .NET 10 Performance Edition
  48. .NET 10 Performance Edition
  49. How to get to know the latest dotnet features - the nerdy way
  50. How to get to know the latest dotnet features - the nerdy way
  51. Why is enumerating over List faster than IList?
  52. Why is enumerating over List faster than IList?
  53. Avoiding reflection in C# in way unsafer ways!
  54. Avoiding reflection in C# in way unsafer ways!
  55. Writing new guards with extensions in C# 14
  56. Writing new guards with extensions in C# 14
  57. Clearing NuGet Caches
  58. Clearing NuGet Caches
  59. Does .NET Documentation get ads? Aka: Is Copilot in the docs something useful?
  60. Does .NET Documentation get ads? Aka: Is Copilot in the docs something useful?
  61. HttpClient improvements in .NET 10
  62. HttpClient improvements in .NET 10
  63. Extensions get an update in .NET 10
  64. Extensions get an update in .NET 10
  65. A custom 404 page in Blazor Web Apps
  66. A custom 404 page in Blazor Web Apps
  67. More LinkedIn "Tips": Dragging your whole database into memory!
  68. More LinkedIn "Tips": Dragging your whole database into memory!
  69. C# Language Mind map v14
  70. C# Language Mind map v14
  71. Solving Problems you wouldn't have if you wouldn't use Entity Framework
  72. Solving Problems you wouldn't have if you wouldn't use Entity Framework
  73. TypeScript-Go: A 10x Faster TypeScript without .NET but in Go
  74. TypeScript-Go: A 10x Faster TypeScript without .NET but in Go
  75. System.Linq.Async is part of .NET 10 - LINQ for IAsyncEnumerable
  76. System.Linq.Async is part of .NET 10 - LINQ for IAsyncEnumerable
  77. Tailwind v4 with Blazor - It just got easier
  78. Tailwind v4 with Blazor - It just got easier
  79. C# 14: Null-conditional assignment
  80. C# 14: Null-conditional assignment
  81. IEnumerable vs IEnumerator in C#: One is 2x Faster - LinkedIn Edition
  82. IEnumerable vs IEnumerator in C#: One is 2x Faster - LinkedIn Edition
  83. Managed Postgres Instance: Neon
  84. Managed Postgres Instance: Neon
  85. LINQ MindMap: .NET 10 Edition
  86. LINQ MindMap: .NET 10 Edition
  87. Validate that your DI Container can be created in ASP.NET Core
  88. Validate that your DI Container can be created in ASP.NET Core
  89. When will .NET Framework retire?
  90. When will .NET Framework retire?
  91. Cache CORS Preflight Requests
  92. Cache CORS Preflight Requests
  93. Announcing Developer Academy
  94. Announcing Developer Academy
  95. Equipping 3rd party types with debugging capabilities
  96. Equipping 3rd party types with debugging capabilities
  97. Why is Open Source important? And is it free?
  98. Why is Open Source important? And is it free?

2024 120

  1. Authenticate videos and images in Angular
  2. Authenticate videos and images in Angular
  3. Some news about .NET 10: BackgroundServices and new String Comparer
  4. Some news about .NET 10: BackgroundServices and new String Comparer
  5. LINQ might get a "left join" operator in .net 10
  6. LINQ might get a "left join" operator in .net 10
  7. Having fun with ValueTuple
  8. Having fun with ValueTuple
  9. "Always use early returns" - LinkedIn Edition
  10. "Always use early returns" - LinkedIn Edition
  11. How to assert assumptions in code that might not be true?
  12. How to assert assumptions in code that might not be true?
  13. An awaitable Blazor Modal Dialog
  14. An awaitable Blazor Modal Dialog
  15. Be careful with ToListAsync and ToArrayAsync in Entity Framework Core
  16. Be careful with ToListAsync and ToArrayAsync in Entity Framework Core
  17. ToArray(Async) vs ToList(Async) in Entity Framework 8
  18. ToArray(Async) vs ToList(Async) in Entity Framework 8
  19. Comparing the performance between the Minimal API and classic Controllers
  20. Comparing the performance between the Minimal API and classic Controllers
  21. Git Tricks: Get the last checked out branch
  22. Git Tricks: Get the last checked out branch
  23. Centralize your packages in .NET with NuGet
  24. Centralize your packages in .NET with NuGet
  25. xUnit v3 and some stuff about TUnit
  26. xUnit v3 and some stuff about TUnit
  27. Fullstack Web Applications with .NET, Nx and Angular Seminar
  28. Fullstack Web Applications with .NET, Nx and Angular Seminar
  29. Swagger Replacement in ASP.NET 9
  30. Swagger Replacement in ASP.NET 9
  31. Managing TaskCancellationTokens in a central service in ASP.NET
  32. Managing TaskCancellationTokens in a central service in ASP.NET
  33. LINQ Joins on multiple columns in Entity Framework
  34. LINQ Joins on multiple columns in Entity Framework
  35. How to test HttpClient inside API Tests
  36. How to test HttpClient inside API Tests
  37. To Soft Delete or Not to Soft Delete
  38. To Soft Delete or Not to Soft Delete
  39. FormattableStringFactory - Creating dynamic FormattableString instances
  40. FormattableStringFactory - Creating dynamic FormattableString instances
  41. async2 - The .NET Runtime Async experiment concludes
  42. async2 - The .NET Runtime Async experiment concludes
  43. Organizing Parameters in Minimal API with the AsParametersAttribute
  44. Organizing Parameters in Minimal API with the AsParametersAttribute
  45. How many API's does .NET have?
  46. How many API's does .NET have?
  47. The state machine in C# with async/await
  48. The state machine in C# with async/await
  49. How not to benchmark!
  50. How not to benchmark!
  51. UUID v7 in .NET 9
  52. UUID v7 in .NET 9
  53. Codespaces for your open-source project
  54. Codespaces for your open-source project
  55. ReadOnlySet in .NET 9
  56. ReadOnlySet<T> in .NET 9
  57. NCronJob - June Edition
  58. NCronJob - June Edition
  59. Are my EF LINQ to SQL queries safe?
  60. Are my EF LINQ to SQL queries safe?
  61. Does an HttpClient await the Header and the body?
  62. Does an HttpClient await the Header and the body?
  63. StringBuilders magic for very large strings
  64. StringBuilders magic for very large strings
  65. Cancel WhenAny - linked CancellationTokenSource
  66. Cancel WhenAny - linked CancellationTokenSource
  67. Help my memory dump always shows me some exceptions!
  68. Help my memory dump always shows me some exceptions!
  69. MemoryCache, DistributedCache and HybridCache
  70. MemoryCache, DistributedCache and HybridCache
  71. Generate http files from a swagger definition
  72. Generate http files from a swagger definition
  73. NCronJob - Big Updates
  74. NCronJob - Big Updates
  75. .NET 9 LINQ Performance Edition
  76. .NET 9 LINQ Performance Edition
  77. Boosting Productivity with Analyzers
  78. Boosting Productivity with Analyzers
  79. Checking your solution for NuGet vulnerabilities or deprecated packages
  80. Checking your solution for NuGet vulnerabilities or deprecated packages
  81. How does a List know that you changed it while enumerating it?
  82. How does a List know that you changed it while enumerating it?
  83. Does readonly make your code faster?
  84. Does readonly make your code faster?
  85. AI Hype - Am I out of work in five years?
  86. AI Hype - Am I out of work in five years?
  87. Fluent API to await multiple calls and get their respective results
  88. Fluent API to await multiple calls and get their respective results
  89. Equip 3rd party types with a deconstructor
  90. Equip 3rd party types with a deconstructor
  91. Pattern matching and the compiler can be surprising
  92. Pattern matching and the compiler can be surprising
  93. C# 13: Allow ref and unsafe in iterators and async
  94. C# 13: Allow ref and unsafe in iterators and async
  95. NCronJob - Scheduling made easy
  96. NCronJob - Scheduling made easy
  97. bUnit v2 - The Blazor unit testing library vNext
  98. bUnit v2 - The Blazor unit testing library vNext
  99. Typesafety in xUnit with TheoryData
  100. Typesafety in xUnit with TheoryData<T>
  101. Lock statement patterns
  102. Lock statement patterns
  103. Avoid multiple boolean parameters
  104. Avoid multiple boolean parameters
  105. LINQ MindMap: .NET 9 Edition
  106. LINQ MindMap: .NET 9 Edition
  107. Garbage Collector (over)simplified
  108. Garbage Collector (over)simplified
  109. SearchValues object become better with .NET 9
  110. SearchValues object become better with .NET 9
  111. Three new LINQ methods in .NET 9
  112. Three new LINQ methods in .NET 9
  113. A replacement for BinaryFormatter in .NET 8
  114. A replacement for BinaryFormatter in .NET 8
  115. An alternative to AutoMapper
  116. An alternative to AutoMapper
  117. Const strings are not so const after all
  118. Const strings are not so const after all
  119. An asynchronous lock free ring buffer for logging
  120. An asynchronous lock free ring buffer for logging

2023 172

  1. A new lock type in .NET 9
  2. A new lock type in .NET 9
  3. The first possible new feature of C# 13: Params collection
  4. The first possible new feature of C# 13: Params collection
  5. bUnit Generators - Generate your stubs automatically
  6. bUnit Generators - Generate your stubs automatically
  7. Entity Framework - Storing complex objects as JSON
  8. Entity Framework - Storing complex objects as JSON
  9. A journey about the new interceptors of .NET 8
  10. A journey about the new interceptors of .NET 8
  11. Blazor .NET 8 - Enhanced Form Navigation
  12. Blazor .NET 8 - Enhanced Form Navigation
  13. A more flexible and enhanced way of logging in .NET 8
  14. A more flexible and enhanced way of logging in .NET 8
  15. Interactive LINQ tutorial, especially for beginners
  16. Interactive LINQ tutorial, especially for beginners
  17. Redux Pattern in Blazor
  18. Redux Pattern in Blazor
  19. Yes you can create classes on the stack!
  20. Yes you can create classes on the stack!
  21. Interfaces can have private methods
  22. Interfaces can have private methods
  23. Blazor with TailwindCSS
  24. Blazor with TailwindCSS
  25. Structured Concurrency in C#
  26. Structured Concurrency in C#
  27. .NET 8 and Blazor United / Server-side rendering
  28. .NET 8 and Blazor United / Server-side rendering
  29. Questions I asked as .NET interviewer
  30. Questions I asked as .NET interviewer
  31. Less boilerplate code with the new primary constructor in C# 12
  32. Less boilerplate code with the new primary constructor in C# 12
  33. A new way of doing reflection with .NET 8
  34. A new way of doing reflection with .NET 8
  35. Building a Minimal ASP.NET Core clone
  36. Building a Minimal ASP.NET Core clone
  37. Enabling List to store large amounts of elements
  38. Enabling List<T> to store large amounts of elements
  39. Turn on Nullability checks by default
  40. Turn on Nullability checks by default
  41. The "Weak Event" Pattern in C#
  42. The "Weak Event" Pattern in C#
  43. Expression-bodied members in properties
  44. Expression-bodied members in properties
  45. Enum.TryParse unexpected behavior
  46. Enum.TryParse unexpected behavior
  47. Creating Your Own Fakes Instead of Using Mocking Libraries
  48. Creating Your Own Fakes Instead of Using Mocking Libraries
  49. What's going on with Moq? SponsorLink and burnt soil!
  50. What's going on with Moq? SponsorLink and burnt soil!
  51. Keyed Services in the IServiceProvider in .NET 8 preview 7
  52. Keyed Services in the IServiceProvider in .NET 8 preview 7
  53. The combined power of F# and C#
  54. The combined power of F# and C#
  55. How to benchmark different .NET versions
  56. How to benchmark different .NET versions
  57. Gracefully Handling Entity Framework Exceptions with EntityFramework.Exceptions
  58. Gracefully Handling Entity Framework Exceptions with EntityFramework.Exceptions
  59. .NET Framework 4.8 to .NET 6 migration
  60. .NET Framework 4.8 to .NET 6 migration
  61. Three tricks with Dictionary
  62. Three tricks with Dictionary
  63. Overload resolution in C#
  64. Overload resolution in C#
  65. Why I like and prefer xUnit
  66. Why I like and prefer xUnit
  67. LINQ: Select.Where or Where.Select?
  68. LINQ: Select.Where or Where.Select?
  69. Missing Stack trace when eliding the await keyword
  70. Missing Stack trace when eliding the await keyword
  71. Create your own Mediator (like Mediatr)
  72. Create your own Mediator (like Mediatr)
  73. C# 12: Collection literals
  74. C# 12: Collection literals
  75. How does List work under the hood in .NET?
  76. How does List work under the hood in .NET?
  77. Span / Memory / ReadOnlySequence in C#
  78. Span / Memory / ReadOnlySequence in C#
  79. Time abstraction in .NET 8
  80. Time abstraction in .NET 8
  81. New Terminal logger for .NET 8
  82. New Terminal logger for .NET 8
  83. nameof get's a bit better in C# 12
  84. nameof get's a bit better in C# 12
  85. How does TryGetNonEnumeratedCount work?
  86. How does TryGetNonEnumeratedCount work?
  87. 6 useful extensions for IEnumerable
  88. 6 useful extensions for IEnumerable
  89. Some cool things you can do with ValueTuple
  90. Some cool things you can do with ValueTuple
  91. Becoming a Microsoft MVP
  92. Becoming a Microsoft MVP
  93. Entity Framework and ordered indexes
  94. Entity Framework and ordered indexes
  95. Controlling the log level of your application
  96. Controlling the log level of your application
  97. Verifying your DI Container
  98. Verifying your DI Container
  99. Create your own Validationattribute in ASP.NET Core
  100. Create your own Validationattribute in ASP.NET Core
  101. Domain events and the "Unit of Work" pattern
  102. Domain events and the "Unit of Work" pattern
  103. Covariance and Contravariance in C#
  104. Covariance and Contravariance in C#
  105. .NET 8 Performance Edition
  106. .NET 8 Performance Edition
  107. 5 useful extensions for Task in .NET
  108. 5 useful extensions for Task<T> in .NET
  109. Source Generators and Regular Expressions
  110. Source Generators and Regular Expressions
  111. LINQ on steroids with SIMD
  112. LINQ on steroids with SIMD
  113. Creating a ToolTip Component in Blazor
  114. Creating a ToolTip Component in Blazor
  115. C# Source Generators: How to get build information?
  116. C# Source Generators: How to get build information?
  117. Leverage 'is not' Operator for Exception Filtering!
  118. Leverage 'is not' Operator for Exception Filtering!
  119. Caching in .NET with MemoryCache
  120. Caching in .NET with MemoryCache
  121. Write your own AutoMapper in C#
  122. Write your own AutoMapper in C#
  123. LINQ // Skip and Take
  124. LINQ // Skip and Take
  125. How to write your own cron Job scheduler in ASP.NET Core (like Quartz, Hangfire, ...)
  126. How to write your own cron Job scheduler in ASP.NET Core (like Quartz, Hangfire, ...)
  127. Benchmarking - A matter of perspective
  128. Benchmarking - A matter of perspective
  129. Is a square a rectangle? Liskov substitution principle in action
  130. Is a square a rectangle? Liskov substitution principle in action
  131. The Humble Object Pattern
  132. The Humble Object Pattern
  133. Performance (ReadOnly)List vs Immutable collection types
  134. Performance (ReadOnly)List vs Immutable collection types
  135. From Testing Pyramid to Diamond
  136. From Testing Pyramid to Diamond
  137. Getting git version information in your C# code
  138. Getting git version information in your C# code
  139. error NETSDK1194: The "--output" option isn't supported when building a solution.
  140. error NETSDK1194: The "--output" option isn't supported when building a solution.
  141. A (performance) quirk with JsonSerializer
  142. A (performance) quirk with JsonSerializer
  143. What is a Middleware and how to use it in ASP.NET Core?
  144. What is a Middleware and how to use it in ASP.NET Core?
  145. Multi-Tenancy with RavenDB and ASP.NET Core
  146. Multi-Tenancy with RavenDB and ASP.NET Core
  147. C# Language Mind map
  148. C# Language Mind map
  149. Repository Pattern - A controversy explained
  150. Repository Pattern - A controversy explained
  151. Native DateOnly and TimeOnly support in Entity Framework 8 in SQL Server
  152. Native DateOnly and TimeOnly support in Entity Framework 8 in SQL Server
  153. C# Lowering
  154. C# Lowering
  155. Deep nesting - Why and how to avoid
  156. Deep nesting - Why and how to avoid
  157. C# 12: Primary Constructors
  158. C# 12: Primary Constructors
  159. Cohesion - An indicator for refactoring
  160. Cohesion - An indicator for refactoring
  161. Entity Framework 8: Raw SQL queries on unmapped types
  162. Entity Framework 8: Raw SQL queries on unmapped types
  163. Easy Pagination for Entity Framework in 3 steps
  164. Easy Pagination for Entity Framework in 3 steps
  165. No, No, No - Tasks are not threads and they are not for performance!
  166. No, No, No - Tasks are not threads and they are not for performance!
  167. Using GitHub as your portfolio
  168. Using GitHub as your portfolio
  169. .NET Tips and Tricks & ValueStringBuilder
  170. .NET Tips and Tricks & ValueStringBuilder
  171. Give your strings context with StringSyntaxAttribute
  172. Give your strings context with StringSyntaxAttribute

2022 176

  1. C# 12: Default Parameters in Lambdas
  2. C# 12: Default Parameters in Lambdas
  3. ReadOnlySpan and strings - How not to compare them
  4. ReadOnlySpan<char> and strings - How not to compare them
  5. Structure and order your DI container
  6. Structure and order your DI container
  7. Array, List, Collection, Set, ReadOnlyList - what? A comprehensive and exhaustive list of collection-like types
  8. Array, List, Collection, Set, ReadOnlyList - what? A comprehensive and exhaustive list of collection-like types
  9. Simple DI - Container
  10. Simple DI - Container
  11. Delete a record without prior loading in Entity Framework
  12. Delete a record without prior loading in Entity Framework
  13. ChatGPT - Current state for .NET - and in general
  14. ChatGPT - Current state for .NET - and in general
  15. Check for elevated rights in .NET 8
  16. Check for elevated rights in .NET 8
  17. Abstraction vs Encapsulation
  18. Abstraction vs Encapsulation
  19. How to enumerate through a StringBuilder
  20. How to enumerate through a StringBuilder
  21. New ArgumentException and ArgumentOutOfRangeException helpers in .NET 8
  22. New ArgumentException and ArgumentOutOfRangeException helpers in .NET 8
  23. A new wave of analyzers in .NET 8
  24. A new wave of analyzers in .NET 8
  25. Frozen collections in .NET 8
  26. Frozen collections in .NET 8
  27. "Use always a StringBuilder" - Internet myths
  28. "Use always a StringBuilder" - Internet myths
  29. How to get allocations in .NET? And how big is an empty array?
  30. How to get allocations in .NET? And how big is an empty array?
  31. Anonymous test data with AutoFixture
  32. Anonymous test data with AutoFixture
  33. Design patterns explained with sketches
  34. Design patterns explained with sketches
  35. Mutable value types are evil! Sort of...
  36. Mutable value types are evil! Sort of...
  37. Marking API's as obsolete or as experimental
  38. Marking API's as obsolete or as experimental
  39. Infographics Compendium III - Exceptions, EF Sanitized, Operators, ...
  40. Infographics Compendium III - Exceptions, EF Sanitized, Operators, ...
  41. local functions vs lambda expressions
  42. local functions vs lambda expressions
  43. Throwing exceptions - Why is my stack trace lost?
  44. Throwing exceptions - Why is my stack trace lost?
  45. LiteDB - A .NET embedded NoSQL database
  46. LiteDB - A .NET embedded NoSQL database
  47. Cursed C# - Doing shenanigans in C#
  48. Infographics Compendium II - ThrowHelper, null Task and more
  49. Infographics Compendium II - ThrowHelper, null Task and more
  50. Cursed C# - Doing shenanigans in C#
  51. Low-level struct improvements in C# 11
  52. Low-level struct improvements in C# 11
  53. How does the key exchange in HTTPS work?
  54. How does the key exchange in HTTPS work?
  55. Introduction to WebApplicationFactory
  56. Introduction to WebApplicationFactory
  57. Infographics Compendium I - Generators, pure functions and more
  58. Infographics Compendium I - Generators, pure functions and more
  59. x86 vs x64 in .NET
  60. x86 vs x64 in .NET
  61. Pattern matching is awesome
  62. Pattern matching is awesome
  63. How does Pagination work?
  64. How does Pagination work?
  65. Blazor Project Structure
  66. Blazor Project Structure
  67. Memory is complicated
  68. Memory is complicated
  69. ASP.NET Core - Why async await is useful
  70. ASP.NET Core - Why async await is useful
  71. LINQ explained with sketches - the eBook
  72. LINQ explained with sketches - the eBook
  73. EF7 - Bulk updates and Bulk deletes
  74. EF7 - Bulk updates and Bulk deletes
  75. NDepend
  76. NDepend
  77. LINQ explained with sketches
  78. LINQ explained with sketches
  79. Mediator Pattern - CQRS with MediatR
  80. Mediator Pattern - CQRS with MediatR
  81. Logging Source Code Generators
  82. Logging Source Code Generators
  83. Git-Flow, GitHub-Flow, Gitlab-Flow and Trunk Based Development explained
  84. Git-Flow, GitHub-Flow, Gitlab-Flow and Trunk Based Development explained
  85. Blazor Client - Loading Screen
  86. Blazor Client - Loading Screen
  87. How does git work?
  88. How does git work?
  89. Abstract class vs interface
  90. Abstract class vs interface
  91. SOLID Principles in C#
  92. SOLID Principles in C#
  93. C# vNext - What could come
  94. C# vNext - What could come
  95. Central nuget store for your UNO Platform App
  96. Central nuget store for your UNO Platform App
  97. When does Blazor (not) render?
  98. When does Blazor (not) render?
  99. Wrap Event based functions into awaitable Tasks - Meet TaskCompletionSource
  100. Wrap Event based functions into awaitable Tasks - Meet TaskCompletionSource
  101. goto in action - The exception from the rule
  102. goto in action - The exception from the rule
  103. What is the difference between C#, .NET, IL and JIT?
  104. What is the difference between C#, .NET, IL and JIT?
  105. Delegate, Action, Func, Lambda expression - What the heck!?
  106. Delegate, Action, Func, Lambda expression - What the heck!?
  107. The garbage collector in .NET - Part 2: Compacting
  108. The garbage collector in .NET - Part 2: Compacting
  109. ObjectPool - Rent and return some instances
  110. ObjectPool - Rent and return some instances
  111. Blazor with an RSS Feed
  112. Blazor with an RSS Feed
  113. How to unit test a RavenDB
  114. How to unit test a RavenDB
  115. The garbage collector in .NET
  116. The garbage collector in .NET
  117. Blazor with CancellationToken support
  118. Blazor with CancellationToken support
  119. Stop using Finalizers in C#
  120. Stop using Finalizers in C#
  121. Tail-Recursion - Explained with the Fibonacci series
  122. Tail-Recursion - Explained with the Fibonacci series
  123. Why are sealed classes faster in C#? And should I seal them?
  124. Why are sealed classes faster in C#? And should I seal them?
  125. Passing by value or by reference - What is faster?
  126. Passing by value or by reference - What is faster?
  127. ReadOnlyCollection is not an immutable collection
  128. ReadOnlyCollection is not an immutable collection
  129. Is public const bad?
  130. Is public const bad?
  131. Modal Dialog component with Bootstrap in Blazor
  132. Modal Dialog component with Bootstrap in Blazor
  133. 4 Different ways of creating an array
  134. 4 Different ways of creating an array
  135. default(MyStruct) vs new MyStruct() - what is the difference?
  136. default(MyStruct) vs new MyStruct() - what is the difference?
  137. From Zero to Production - Generate everything with a single button
  138. From Zero to Production - Generate everything with a single button
  139. struct vs readonly struct vs ref struct vs record struct
  140. struct vs readonly struct vs ref struct vs record struct
  141. Create a low allocation and faster StringBuilder - Span in Action
  142. Create a low allocation and faster StringBuilder - Span in Action
  143. Reusable loading Bar Component in Blazor
  144. Reusable loading Bar Component in Blazor
  145. UNO Platform - Build a Todo App - Part 5
  146. UNO Platform - Build a Todo App - Part 5
  147. UNO Platform - Build a Todo App - Part 4
  148. UNO Platform - Build a Todo App - Part 4
  149. The Trie - A powerful data structure
  150. The Trie - A powerful data structure
  151. UNO Platform - Build a Todo App - Part 3
  152. UNO Platform - Build a Todo App - Part 3
  153. UNO Platform - Build a Todo App - Part 2
  154. UNO Platform - Build a Todo App - Part 2
  155. UNO Platform - Build a Todo App - Part 1
  156. UNO Platform - Build a Todo App - Part 1
  157. Using SSE in C# on the example of the sum of a list
  158. Using SSE in C# on the example of the sum of a list
  159. Decorator Pattern using the example of a cached repository
  160. Decorator Pattern using the example of a cached repository
  161. RequiredIf - Extend the validation in Blazor
  162. RequiredIf - Extend the validation in Blazor
  163. Directory.Build.props - Centralize your builds
  164. Directory.Build.props - Centralize your builds
  165. DebuggerTypeProxy - Displaying complex states in the debugger
  166. DebuggerTypeProxy - Displaying complex states in the debugger
  167. Blazor Performance Tuning - Good practices and advanced use cases
  168. Blazor Performance Tuning - Good practices and advanced use cases
  169. Heap, Stack, Boxing and Unboxing, Performance ... let's order things!
  170. Heap, Stack, Boxing and Unboxing, Performance ... let's order things!
  171. Prerendering Blazor Apps - How does it work / tips and tricks
  172. Prerendering Blazor Apps - How does it work / tips and tricks
  173. Enum.Equals - Performance analysis
  174. Enum.Equals - Performance analysis
  175. Lazy load components with Blazor - Virtualize in Action
  176. Lazy load components with Blazor - Virtualize in Action

2021 52

  1. Generator-Function in C# - What does yield do?
  2. Generator-Function in C# - What does yield do?
  3. Task vs ValueTask - The what's, when's and how's
  4. Task vs ValueTask - The what's, when's and how's
  5. Lifetime Scope in Blazor Client and Server Apps
  6. Lifetime Scope in Blazor Client and Server Apps
  7. Branch Prediction - How much does an if cost?
  8. Branch Prediction - How much does an if cost?
  9. ILGPU - Processing Data on your GPU (CUDA / OpenCL in C#)
  10. ILGPU - Processing Data on your GPU (CUDA / OpenCL in C#)
  11. static abstract interfaces and generic math
  12. static abstract interfaces and generic math
  13. A better enumeration - Type safe from start to end
  14. A better enumeration - Type safe from start to end
  15. git hook - prefix your commit message with your JIRA ticket
  16. git hook - prefix your commit message with your JIRA ticket
  17. API Versioning in ASP.NET Core made easy
  18. API Versioning in ASP.NET Core made easy
  19. git - useful aliases
  20. git - useful aliases
  21. IEnumerable vs IQueryable - What's the difference
  22. IEnumerable vs IQueryable - What's the difference
  23. How to hunt down bugs with git bisect
  24. How to hunt down bugs with git bisect
  25. How to rebase onto a different branch with git
  26. How to rebase onto a different branch with git
  27. Tactical Design Patterns in C# - Part 1: Creational
  28. Tactical Design Patterns in C# - Part 1: Creational
  29. struct Performance
  30. struct Performance
  31. Shorts: foreach on type without IEnumerable
  32. Shorts: foreach on type without IEnumerable
  33. Task.WhenAny - How to cancel other tasks
  34. Task.WhenAny - How to cancel other tasks
  35. A story about boxing / unboxing and string interpolation in C#
  36. A story about boxing / unboxing and string interpolation in C#
  37. EF Core 6 - New Features
  38. EF Core 6 - New Features
  39. Tutorial Unit and E2E Testing in Blazor - Part 2 Playwright Introduction
  40. Tutorial Unit and E2E Testing in Blazor - Part 2 Playwright Introduction
  41. Quickly asked: Should I use unsigned integers (uint, uint8, ...) in C#?
  42. Quickly asked: Should I use unsigned integers (uint, uint8, ...) in C#?
  43. Async Await Pitfalls / Guidelines - .NET User Group Zurich Presentation
  44. Async Await Pitfalls / Guidelines - .NET User Group Zurich Presentation
  45. Tutorial Unit and E2E Testing in Blazor - Part 1
  46. Upcoming .NET User Forum Zurich / 6th July 2021
  47. Tutorial Unit and E2E Testing in Blazor - Part 1
  48. Blazor Improvements in .NET 6
  49. Blazor Improvements in .NET 6
  50. Upcoming .NET User Forum Zurich / 6th July 2021
  51. My first Post
  52. My first Post