Archive (255 posts)
- How to assert assumptions in code that might not be true? (Nov 18, 2024)
- An awaitable Blazor Modal Dialog (Nov 11, 2024)
- Be careful with ToListAsync and ToArrayAsync in Entity Framework Core (Nov 04, 2024)
- ToArray(Async) vs ToList(Async) in Entity Framework 8 (Oct 28, 2024)
- Comparing the performance between the Minimal API and classic Controllers (Oct 21, 2024)
- Git Tricks: Get the last checked out branch (Oct 14, 2024)
- Centralize your packages in .NET with NuGet (Oct 07, 2024)
- xUnit v3 and some stuff about TUnit (Sep 30, 2024)
- Fullstack Web Applications with .NET, Nx and Angular Seminar (Sep 27, 2024)
- Swagger Replacement in ASP.NET 9 (Sep 23, 2024)
- Managing TaskCancellationTokens in a central service in ASP.NET (Sep 16, 2024)
- LINQ Joins on multiple columns in Entity Framework (Sep 09, 2024)
- How to test HttpClient inside API Tests (Sep 02, 2024)
- To Soft Delete or Not to Soft Delete (Aug 26, 2024)
- FormattableStringFactory - Creating dynamic FormattableString instances (Aug 19, 2024)
- async2 - The .NET Runtime Async experiment concludes (Aug 12, 2024)
- Organizing Parameters in Minimal API with the AsParametersAttribute (Aug 05, 2024)
- How many API's does .NET have? (Jul 29, 2024)
- The state machine in C# with async/await (Jul 22, 2024)
- How not to benchmark! (Jul 15, 2024)
- UUID v7 in .NET 9 (Jul 08, 2024)
- Codespaces for your open-source project (Jul 02, 2024)
- ReadOnlySet<T> in .NET 9 (Jun 26, 2024)
- NCronJob - June Edition (Jun 21, 2024)
- Are my EF LINQ to SQL queries safe? (Jun 17, 2024)
- Does an HttpClient await the Header and the body? (Jun 10, 2024)
- StringBuilders magic for very large strings (Jun 03, 2024)
- Cancel WhenAny - linked CancellationTokenSource (May 28, 2024)
- Help my memory dump always shows me some exceptions! (May 23, 2024)
- MemoryCache, DistributedCache and HybridCache (May 20, 2024)
- Generate http files from a swagger definition (May 16, 2024)
- NCronJob - Big Updates (May 13, 2024)
- .NET 9 LINQ Performance Edition (May 09, 2024)
- Boosting Productivity with Analyzers (May 06, 2024)
- Checking your solution for NuGet vulnerabilities or deprecated packages (May 02, 2024)
- How does a List know that you changed it while enumerating it? (Apr 29, 2024)
- Does readonly make your code faster? (Apr 23, 2024)
- AI Hype - Am I out of work in five years? (Apr 19, 2024)
- Fluent API to await multiple calls and get their respective results (Apr 15, 2024)
- Equip 3rd party types with a deconstructor (Apr 08, 2024)
- Pattern matching and the compiler can be surprising (Apr 01, 2024)
- C# 13: Allow ref and unsafe in iterators and async (Mar 25, 2024)
- NCronJob - Scheduling made easy (Mar 18, 2024)
- bUnit v2 - The Blazor unit testing library vNext (Mar 11, 2024)
- Typesafety in xUnit with TheoryData<T> (Mar 05, 2024)
- Lock statement patterns (Feb 27, 2024)
- Avoid multiple boolean parameters (Feb 20, 2024)
- LINQ MindMap: .NET 9 Edition (Feb 14, 2024)
- Garbage Collector (over)simplified (Feb 11, 2024)
- SearchValues object become better with .NET 9 (Feb 02, 2024)
- Three new LINQ methods in .NET 9 (Jan 27, 2024)
- A replacement for BinaryFormatter in .NET 8 (Jan 20, 2024)
- An alternative to AutoMapper (Jan 16, 2024)
- Const strings are not so const after all (Jan 10, 2024)
- An asynchronous lock free ring buffer for logging (Jan 03, 2024)
- A new lock type in .NET 9 (Dec 27, 2023)
- The first possible new feature of C# 13: Params collection (Dec 20, 2023)
- bUnit Generators - Generate your stubs automatically (Dec 17, 2023)
- Entity Framework - Storing complex objects as JSON (Dec 14, 2023)
- A journey about the new interceptors of .NET 8 (Nov 28, 2023)
- Blazor .NET 8 - Enhanced Form Navigation (Nov 22, 2023)
- A more flexible and enhanced way of logging in .NET 8 (Nov 15, 2023)
- Interactive LINQ tutorial, especially for beginners (Nov 10, 2023)
- Redux Pattern in Blazor (Nov 04, 2023)
- Yes you can create classes on the stack! (Nov 01, 2023)
- Interfaces can have private methods (Oct 25, 2023)
- Blazor with TailwindCSS (Oct 18, 2023)
- Structured Concurrency in C# (Oct 11, 2023)
- .NET 8 and Blazor United / Server-side rendering (Oct 04, 2023)
- Questions I asked as .NET interviewer (Sep 29, 2023)
- Less boilerplate code with the new primary constructor in C# 12 (Sep 24, 2023)
- A new way of doing reflection with .NET 8 (Sep 19, 2023)
- Building a Minimal ASP.NET Core clone (Sep 14, 2023)
- Enabling List<T> to store large amounts of elements (Sep 07, 2023)
- Turn on Nullability checks by default (Sep 01, 2023)
- The "Weak Event" Pattern in C# (Aug 27, 2023)
- Expression-bodied members in properties (Aug 21, 2023)
- Enum.TryParse unexpected behavior (Aug 17, 2023)
- Creating Your Own Fakes Instead of Using Mocking Libraries (Aug 12, 2023)
- What's going on with Moq? SponsorLink and burnt soil! (Aug 09, 2023)
- Keyed Services in the IServiceProvider in .NET 8 preview 7 (Aug 07, 2023)
- The combined power of F# and C# (Aug 02, 2023)
- How to benchmark different .NET versions (Jul 30, 2023)
- Gracefully Handling Entity Framework Exceptions with EntityFramework.Exceptions (Jul 24, 2023)
- .NET Framework 4.8 to .NET 6 migration (Jul 19, 2023)
- Three tricks with Dictionary (Jul 13, 2023)
- Overload resolution in C# (Jul 08, 2023)
- Why I like and prefer xUnit (Jul 03, 2023)
- LINQ: Select.Where or Where.Select? (Jun 29, 2023)
- Missing Stack trace when eliding the await keyword (Jun 25, 2023)
- Create your own Mediator (like Mediatr) (Jun 21, 2023)
- C# 12: Collection literals (Jun 17, 2023)
- How does List work under the hood in .NET? (Jun 13, 2023)
- Span / Memory / ReadOnlySequence in C# (Jun 08, 2023)
- Time abstraction in .NET 8 (Jun 04, 2023)
- New Terminal logger for .NET 8 (May 31, 2023)
- nameof get's a bit better in C# 12 (May 28, 2023)
- How does TryGetNonEnumeratedCount work? (May 26, 2023)
- 6 useful extensions for IEnumerable (May 23, 2023)
- Some cool things you can do with ValueTuple (May 18, 2023)
- Becoming a Microsoft MVP (May 13, 2023)
- Entity Framework and ordered indexes (May 08, 2023)
- Controlling the log level of your application (May 03, 2023)
- Verifying your DI Container (Apr 30, 2023)
- Create your own Validationattribute in ASP.NET Core (Apr 27, 2023)
- Domain events and the "Unit of Work" pattern (Apr 22, 2023)
- Covariance and Contravariance in C# (Apr 17, 2023)
- .NET 8 Performance Edition (Apr 13, 2023)
- 5 useful extensions for Task<T> in .NET (Apr 10, 2023)
- Source Generators and Regular Expressions (Apr 05, 2023)
- LINQ on steroids with SIMD (Apr 01, 2023)
- Creating a ToolTip Component in Blazor (Mar 31, 2023)
- C# Source Generators: How to get build information? (Mar 27, 2023)
- Leverage 'is not' Operator for Exception Filtering! (Mar 24, 2023)
- Caching in .NET with MemoryCache (Mar 21, 2023)
- Write your own AutoMapper in C# (Mar 18, 2023)
- LINQ // Skip and Take (Mar 14, 2023)
- How to write your own cron Job scheduler in ASP.NET Core (like Quartz, Hangfire, ...) (Mar 11, 2023)
- Benchmarking - A matter of perspective (Mar 08, 2023)
- Is a square a rectangle? Liskov substitution principle in action (Mar 05, 2023)
- The Humble Object Pattern (Mar 02, 2023)
- Performance (ReadOnly)List vs Immutable collection types (Feb 27, 2023)
- From Testing Pyramid to Diamond (Feb 25, 2023)
- Getting git version information in your C# code (Feb 22, 2023)
- error NETSDK1194: The "--output" option isn't supported when building a solution. (Feb 19, 2023)
- A (performance) quirk with JsonSerializer (Feb 15, 2023)
- What is a Middleware and how to use it in ASP.NET Core? (Feb 10, 2023)
- Multi-Tenancy with RavenDB and ASP.NET Core (Feb 07, 2023)
- C# Language Mind map (Feb 05, 2023)
- Repository Pattern - A controversy explained (Feb 02, 2023)
- Native DateOnly and TimeOnly support in Entity Framework 8 in SQL Server (Jan 30, 2023)
- C# Lowering (Jan 26, 2023)
- Deep nesting - Why and how to avoid (Jan 21, 2023)
- C# 12: Primary Constructors (Jan 18, 2023)
- Cohesion - An indicator for refactoring (Jan 15, 2023)
- Entity Framework 8: Raw SQL queries on unmapped types (Jan 12, 2023)
- Easy Pagination for Entity Framework in 3 steps (Jan 11, 2023)
- No, No, No - Tasks are not threads and they are not for performance! (Jan 08, 2023)
- Using GitHub as your portfolio (Jan 06, 2023)
- .NET Tips and Tricks & ValueStringBuilder (Jan 03, 2023)
- Give your strings context with StringSyntaxAttribute (Jan 01, 2023)
- C# 12: Default Parameters in Lambdas (Dec 30, 2022)
- ReadOnlySpan<char> and strings - How not to compare them (Dec 29, 2022)
- Structure and order your DI container (Dec 20, 2022)
- Array, List, Collection, Set, ReadOnlyList - what? A comprehensive and exhaustive list of collection-like types (Dec 15, 2022)
- Simple DI - Container (Dec 12, 2022)
- Delete a record without prior loading in Entity Framework (Dec 10, 2022)
- ChatGPT - Current state for .NET - and in general (Dec 08, 2022)
- Check for elevated rights in .NET 8 (Dec 07, 2022)
- Abstraction vs Encapsulation (Dec 05, 2022)
- How to enumerate through a StringBuilder (Dec 03, 2022)
- New ArgumentException and ArgumentOutOfRangeException helpers in .NET 8 (Dec 01, 2022)
- A new wave of analyzers in .NET 8 (Nov 27, 2022)
- Frozen collections in .NET 8 (Nov 24, 2022)
- "Use always a StringBuilder" - Internet myths (Nov 22, 2022)
- How to get allocations in .NET? And how big is an empty array? (Nov 20, 2022)
- Anonymous test data with AutoFixture (Nov 19, 2022)
- Design patterns explained with sketches (Nov 15, 2022)
- Mutable value types are evil! Sort of... (Nov 06, 2022)
- Marking API's as obsolete or as experimental (Nov 03, 2022)
- Infographics Compendium III - Exceptions, EF Sanitized, Operators, ... (Nov 02, 2022)
- local functions vs lambda expressions (Oct 30, 2022)
- Throwing exceptions - Why is my stack trace lost? (Oct 21, 2022)
- LiteDB - A .NET embedded NoSQL database (Oct 20, 2022)
- Cursed C# - Doing shenanigans in C# (Oct 15, 2022)
- Infographics Compendium II - ThrowHelper, null Task and more (Oct 15, 2022)
- Low-level struct improvements in C# 11 (Oct 11, 2022)
- How does the key exchange in HTTPS work? (Oct 08, 2022)
- Introduction to WebApplicationFactory (Oct 05, 2022)
- Infographics Compendium I - Generators, pure functions and more (Oct 02, 2022)
- x86 vs x64 in .NET (Sep 30, 2022)
- Pattern matching is awesome (Sep 27, 2022)
- How does Pagination work? (Sep 25, 2022)
- Blazor Project Structure (Sep 23, 2022)
- Memory is complicated (Sep 21, 2022)
- ASP.NET Core - Why async await is useful (Sep 17, 2022)
- LINQ explained with sketches - the eBook (Aug 25, 2022)
- EF7 - Bulk updates and Bulk deletes (Aug 21, 2022)
- NDepend (Aug 17, 2022)
- LINQ explained with sketches (Aug 10, 2022)
- Mediator Pattern - CQRS with MediatR (Aug 06, 2022)
- Logging Source Code Generators (Jul 28, 2022)
- Git-Flow, GitHub-Flow, Gitlab-Flow and Trunk Based Development explained (Jul 23, 2022)
- Blazor Client - Loading Screen (Jul 15, 2022)
- How does git work? (Jul 11, 2022)
- Abstract class vs interface (Jul 08, 2022)
- SOLID Principles in C# (Jul 04, 2022)
- C# vNext - What could come (Jun 30, 2022)
- Central nuget store for your UNO Platform App (Jun 27, 2022)
- When does Blazor (not) render? (Jun 23, 2022)
- Wrap Event based functions into awaitable Tasks - Meet TaskCompletionSource (Jun 20, 2022)
- goto in action - The exception from the rule (Jun 18, 2022)
- What is the difference between C#, .NET, IL and JIT? (Jun 14, 2022)
- Delegate, Action, Func, Lambda expression - What the heck!? (Jun 10, 2022)
- The garbage collector in .NET - Part 2: Compacting (Jun 03, 2022)
- ObjectPool - Rent and return some instances (Jun 02, 2022)
- Blazor with an RSS Feed (May 30, 2022)
- How to unit test a RavenDB (May 24, 2022)
- The garbage collector in .NET (May 21, 2022)
- Blazor with CancellationToken support (May 18, 2022)
- Stop using Finalizers in C# (May 15, 2022)
- Tail-Recursion - Explained with the Fibonacci series (May 13, 2022)
- Why are sealed classes faster in C#? And should I seal them? (May 12, 2022)
- Passing by value or by reference - What is faster? (May 07, 2022)
- ReadOnlyCollection is not an immutable collection (Apr 26, 2022)
- Is public const bad? (Apr 21, 2022)
- Modal Dialog component with Bootstrap in Blazor (Apr 19, 2022)
- 4 Different ways of creating an array (Apr 14, 2022)
- default(MyStruct) vs new MyStruct() - what is the difference? (Apr 13, 2022)
- From Zero to Production - Generate everything with a single button (Apr 11, 2022)
- struct vs readonly struct vs ref struct vs record struct (Apr 08, 2022)
- Create a low allocation and faster StringBuilder - Span in Action (Apr 03, 2022)
- Reusable loading Bar Component in Blazor (Mar 31, 2022)
- UNO Platform - Build a Todo App - Part 5 (Mar 26, 2022)
- UNO Platform - Build a Todo App - Part 4 (Mar 23, 2022)
- The Trie - A powerful data structure (Mar 20, 2022)
- UNO Platform - Build a Todo App - Part 3 (Mar 16, 2022)
- UNO Platform - Build a Todo App - Part 2 (Mar 13, 2022)
- UNO Platform - Build a Todo App - Part 1 (Mar 10, 2022)
- Using SSE in C# on the example of the sum of a list (Mar 07, 2022)
- Decorator Pattern using the example of a cached repository (Feb 19, 2022)
- RequiredIf - Extend the validation in Blazor (Feb 15, 2022)
- Directory.Build.props - Centralize your builds (Feb 13, 2022)
- DebuggerTypeProxy - Displaying complex states in the debugger (Feb 10, 2022)
- Blazor Performance Tuning - Good practices and advanced use cases (Feb 05, 2022)
- Heap, Stack, Boxing and Unboxing, Performance ... let's order things! (Jan 24, 2022)
- Prerendering Blazor Apps - How does it work / tips and tricks (Jan 19, 2022)
- Enum.Equals - Performance analysis (Jan 11, 2022)
- Lazy load components with Blazor - Virtualize in Action (Jan 02, 2022)
- Generator-Function in C# - What does yield do? (Dec 16, 2021)
- Task vs ValueTask - The what's, when's and how's (Dec 05, 2021)
- Lifetime Scope in Blazor Client and Server Apps (Nov 24, 2021)
- Branch Prediction - How much does an if cost? (Nov 09, 2021)
- ILGPU - Processing Data on your GPU (CUDA / OpenCL in C#) (Oct 28, 2021)
- static abstract interfaces and generic math (Oct 17, 2021)
- A better enumeration - Type safe from start to end (Oct 03, 2021)
- git hook - prefix your commit message with your JIRA ticket (Sep 23, 2021)
- API Versioning in ASP.NET Core made easy (Sep 21, 2021)
- git - useful aliases (Sep 10, 2021)
- IEnumerable vs IQueryable - What's the difference (Sep 06, 2021)
- How to hunt down bugs with git bisect (Aug 21, 2021)
- How to rebase onto a different branch with git (Aug 17, 2021)
- Tactical Design Patterns in C# - Part 1: Creational (Aug 09, 2021)
- struct Performance (Aug 01, 2021)
- Shorts: foreach on type without IEnumerable (Jul 24, 2021)
- Task.WhenAny - How to cancel other tasks (Jul 18, 2021)
- A story about boxing / unboxing and string interpolation in C# (Jul 14, 2021)
- EF Core 6 - New Features (Jul 12, 2021)
- Tutorial Unit and E2E Testing in Blazor - Part 2 Playwright Introduction (Jul 11, 2021)
- Quickly asked: Should I use unsigned integers (uint, uint8, ...) in C#? (Jul 08, 2021)
- Async Await Pitfalls / Guidelines - .NET User Group Zurich Presentation (Jul 07, 2021)
- Tutorial Unit and E2E Testing in Blazor - Part 1 (Jul 06, 2021)
- Blazor Improvements in .NET 6 (Jul 03, 2021)
- Upcoming .NET User Forum Zurich / 6th July 2021 (Jul 01, 2021)
- My first Post (Jun 29, 2021)