All posts by category
.NET
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 8 - Compressor Implementation - Thu, 24 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 7 - Sequence Verification With Moq - Wed, 23 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 6 - Mocking & Behaviour Tests - Tue, 22 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 5 - Component Implementation - Mon, 21 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 4 - Types & Contracts - Sun, 20 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 3 - Project Setup - Sat, 19 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 2 - Basic Requirements - Fri, 18 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 1 - Introduction - Thu, 17 April
- Resolve IPAddress From Domain In C# - Wed, 16 April
- Beware - Environment.NewLine Is Not A Silver Bullet - Mon, 14 April
- Using State Machines In .NET - Part 12 - State Activation & Entry - Wed, 9 April
- Tip - Initialzing Large Arrays With A Known Value - Tue, 8 April
- Using State Machines In .NET - Part 11 - Logic Based On How A State Was Transitioned - Mon, 7 April
- Using State Machines In .NET - Part 10 - Generating State Diagrams - Sun, 6 April
- Using State Machines In .NET - Part 9 - Calling Asynchronous Methods - Sat, 5 April
- Using State Machines In .NET - Part 8 - Firing Events Before State Change - Wed, 2 April
- Using State Machines In .NET - Part 7 - Conditional State Transitions - Mon, 31 March
- Using State Machines In .NET - Part 6 - Firing Events On State Change - Sun, 30 March
- Tip - Adding Projects To Solutions Via Command Line - Sat, 29 March
- Using State Machines In .NET - Part 5 - Using Complex & Nested States - Fri, 28 March
- Using State Machines In .NET - Part 4 - Using Multiple Triggers - Thu, 27 March
- Using State Machines In .NET - Part 3 - Setting Initial State - Wed, 26 March
- Using State Machines In .NET - Part 2 - Basic Usage - Tue, 25 March
- Using State Machines In .NET - Part 1 - Introduction - Mon, 24 March
- Collection Expressions & Dictionaries - Sun, 23 March
- SLNX - New .NET Solution File Format - Thu, 20 March
- Organizing .NET Projects With Solutions - Wed, 19 March
- Changing The Port Of An ASP.NET Web Application Or API - Sun, 16 March
- Controlling Publishing Of Satellite Resource Assemblies - Sat, 15 March
- Dapper Part 15 - Using the IN Clause - Wed, 12 March
- Dapper Part 14 - Multithreading - Tue, 11 March
- Dapper Part 13 - Using Transactions - Mon, 10 March
- Dapper Part 12 - Alternative Bulk Insert Technique - Sat, 8 March
- Dapper Part 11 - Using Inheritance - Fri, 7 March
- Dapper Part 10 - Handling Cancellations - Thu, 6 March
- Dapper Part 9 - Using Dynamic Types - Wed, 5 March
- Dapper Part 8 - Controlling Database Timeouts - Tue, 4 March
- Dapper Part 7 - Adding DateOnly & TimeOnly Support - Mon, 3 March
- Dapper Part 6 - Returning Multiple Sets Of Results - Sun, 2 March
- Dapper Part 5 - Passing Data In Bulk To The Database - Sat, 1 March
- Dapper Part 4 - Passing Data To And From The Database - Fri, 28 February
- Dapper Part 3 - Executing Queries - Thu, 27 February
- Dapper Part 2 - Querying The Database - Wed, 26 February
- Simpler .NET Data Access With Dapper - Part 1 - Tue, 25 February
- How SQL Injection Works - Part 2 - Mon, 24 February
- How SQL Injection Works - Part 1 - Sun, 23 February
- Using Case Insensitive Dictionary Keys In C# & .NET - Sat, 22 February
- Configuring JSON Responses With ASP.NET - Fri, 21 February
- Enums & Enum Flags In C# & .NET For Dummies - Thu, 20 February
- Some Useful Integer Helper Methods In .NET - Wed, 19 February
- Creating Reproducible Builds With global.json - Mon, 17 February
- Using Frozen Collections For Immutability - Sat, 15 February
- Getting The Executing .NET Version - Fri, 14 February
- Using Base64 To Encode Binary Data - Wed, 12 February
- Is That String Null, Empty, Or WhiteSpace? - Tue, 11 February
- Executing Actions In Parallel With Parallel.Invoke - Mon, 10 February
- Immutable Types In C# & .NET - Sun, 9 February
- Pipelining Task Results With Task.WhenEach - Sat, 8 February
- Parallelizing Work With C# & .NET - Fri, 7 February
- Using Deconstructors In C# - Wed, 5 February
- Using LINQ Repeat To Generate Copies Of Objects - Tue, 4 February
- Using LINQ Concat To Merge Collections - Mon, 3 February
- Using LINQ UnionBy To Merge Collections - Sun, 2 February
- Scheduling Tasks With The PeriodicTimer - Sat, 1 February
- Lazy Initialization With System.Lazy - Thu, 30 January
- Using Indexes With LINQ - Wed, 29 January
- Set Operations With LINQ - Tue, 28 January
- Using LINQ Zip To Combine Collections - Mon, 27 January
- Using LINQ Aggregate & AggregateBy To Perform Aggregate Computations - Sun, 26 January
- Using LINQ SelectMany To Flatten Collections - Sat, 25 January
- Using LINQ GroupJoin To Perform Grouped Joins - Fri, 24 January
- Using A LINQ Pipeline To Solve Problems - Mon, 20 January
- Using Groups To Apply Common Functionality To WebAPI EndPoints - Sun, 19 January
- Primary Constructors - And Their Pitfalls - Fri, 17 January
- Locale & Culture Support For Kenyan Languages In .NET - Wed, 15 January
- Unit Testing Fractional Values In C# & .NET - Fri, 10 January
- Dependency Injection In C# & .NET Part 10 - Conclusion - Thu, 9 January
- Dependency Injection In C# & .NET Part 9 - Life Cycles - Wed, 8 January
- Dependency Injection In C# & .NET Part 8 - Types Of Dependency Injection - Tue, 7 January
- Dependency Injection In C# & .NET Part 7 - Integration Testing - Mon, 6 January
- Dependency Injection In C# & .NET Part 6 - Implementation Testing - Sun, 5 January
- Dependency Injection In C# & .NET Part 5 - Making All Implementations Available - Sat, 4 January
- Dependency Injection In C# & .NET Part 4 - Making Implementations Hot-Pluggable - Fri, 3 January
- Dependency Injection In C# & .NET Part 3 - Making Implementations Pluggable - Thu, 2 January
- Dependency Injection In C# & .NET Part 2 - Making Implementations Swappable - Wed, 1 January
- Dependency Injection In C# & .NET Part 1 - Introduction & Basic Implementation - Tue, 31 December
- Correctly Processing CSV Files In C# & .NET - Wed, 25 December
- Check If You Have The Latest .NET SDK - Tue, 24 December
- Customizing Object Equality In C# & .NET - Thu, 19 December
- Loading & Using Application Settings In .NET - Wed, 11 December
- LinqPad For OSX Beta Is Out - Tue, 10 December
- Truncating Numbers In C# - Thu, 28 November
- Storing Common Application Settings For A .NET Application In MacOS OSX - Mon, 25 November
- Pretty Printing Unformatted Json In C# - Sun, 24 November
- Determining The Operating System C# .NET Program Is Running Under - Sat, 23 November
- Running Multiple .NET Versions In MacOS OSX - Fri, 22 November
- Using Inheritance With FluentValidation - Sat, 6 April
- Correctly Setting HttpClient BaseAddress - Sun, 17 March
- Tip - Don't Log Exceptions With Log.Information - Fri, 23 February
- Tip - Using JsonSerializationOptions With Refit - Wed, 2 August
- Fix - HttpClient Changes Case Of x-request-id Header - Fri, 21 July
- Projecting Named Tuples In Entity Framework Core - Mon, 17 July
- Tip - Fluent Validation With Null Values - Thu, 6 July
- Writing Maintainable, Testable Code That Depends On The Current Time - Wed, 3 May
- How To Use C# List Pattern Matching Practically - Tue, 28 March
- Required Keyword In C# 11 & .NET 7 - Sat, 12 November
- Building URLs In C# Without Concatenation Or Interpolation - Mon, 15 August
- Using HttpClient To Post JSON In C# & .NET - Mon, 1 August
- Fix - SSL Provider, error 0 - The certificate chain was issued by an authority that is not trusted - Mon, 16 May
- About curl And PowerShell - Tue, 10 May
- Tip - HttpUtility.UrlEncode vs WebUtility.UrlEncode - Thu, 7 April
- Tip - Updating The Nuget Client - Thu, 31 March
- 30 Days Of .NET 6 - Day 30 - Simplified Argument Null Checks - Tue, 21 December
- 30 Days Of .NET 6 - Day 29 - Writing Raw JSON Using Utf8JsonWriter - Mon, 6 December
- 30 Days Of .NET 6 - Day 28 - JSON Serialization To & From Streams - Mon, 29 November
- 30 Days Of .NET 6 - Day 27 - Extended Property Patterns - Fri, 19 November
- 30 Days Of .NET 6 - Day 26 - Sealed ToString() In Records - Fri, 12 November
- 30 Days Of .NET 6 - Day 25 - Hot Reload - Tue, 9 November
- .NET 6 Release - Tue, 9 November
- 30 Days Of .NET 6 - Day 24 - Parallel.ForEachAsync - Mon, 8 November
- 30 Days Of .NET 6 - Day 23 - Nullable References - Thu, 4 November
- 30 Days Of .NET 6 - Day 22 - LINQ Default Parameters - Tue, 2 November
- 30 Days Of .NET 6 - Day 21 - Constant Interpolated Strings - Mon, 1 November
- 30 Days Of .NET 6 - Day 20 - Json Property Ordering - Wed, 27 October
- 30 Days Of .NET 6 - Day 19 - Record Structs - Thu, 21 October
- .NET 6 Release Candidate 2 Out - Mon, 18 October
- 30 Days Of .NET 6 - Day 18 - File Scoped Namespaces - Mon, 18 October
- 30 Days Of .NET 6 - Day 17 - New Timer - PeriodicTimer - Tue, 12 October
- 30 Days Of .NET 6 - Day 16 - HTTP/3 Support - Thu, 7 October
- Installing .NET 6 On Linux - Thu, 7 October
- 30 Days Of .NET 6 - Day 15 - SOCKS Proxy Support - Tue, 5 October
- 30 Days Of .NET 6 - Day 14 - Implicit Usings - Fri, 1 October
- 30 Days Of .NET 6 - Day 13 - LINQ Improvements - Chunk - Wed, 29 September
- 30 Days Of .NET 6 - Day 12 - Collection Count Performance Improvement - Tue, 28 September
- 30 Days Of .NET 6 - Day 11 - LINQ Improvements - Range Support - Fri, 24 September
- 30 Days Of .NET 6 - Day 10 - SDK & Runtime Version Checking - Thu, 23 September
- 30 Days Of .NET 6 - Day 9 - LINQ Improvements - DistinctBy - Wed, 22 September
- 30 Days Of .NET 6 - Day 8 - Control Of Serialization Of Object Cycles - Tue, 21 September
- .NET 6 Release Candidate 1 Out - Tue, 21 September
- 30 Days Of .NET 6 - Day 7 - Simpler Web Application Development - Tue, 14 September
- 30 Days Of .NET 6 - Day 6 - Priority Queue - Mon, 13 September
- 30 Days Of .NET 6 - Day 5 - Mathematics API Additions - Fri, 10 September
- 30 Days Of .NET 6 - Day 4 - LINQ Improvements - MaxBy & MinBy - Thu, 9 September
- 30 Days Of .NET 6 - Day 3 - TimeOnly Type - Wed, 8 September
- 30 Days Of .NET 6 - Day 2 - Friendly To Newcomers - Tue, 7 September
- 30 Days Of .NET 6 - DateOnly Type - Mon, 6 September
- Fix - .NET 6 Not Being Recognized After Install - Fri, 3 September
- Conditional Logic In MSBuild - Thu, 12 November
- Getting Now Playing Information From WQXR In .NET - Mon, 9 November
- Posting Messages To Microsoft Teams With Code - Wed, 4 November
- Joining Strings - Part 4 : String.Format - Wed, 1 July
- Joining Strings - Part 3 : StringBuilder - Mon, 22 June
- Joining Strings - Part 2 : String.Concat - Mon, 15 June
- Joining Strings - Part 1 : The + Operator - Thu, 28 May
- Decimals, Precision And Scale - Tue, 28 April
- Controlling Creation Of .NET Core Projects - Wed, 25 March
.NET 7
.NET 9
30 Days Of .NET 6
- 30 Days Of .NET 6 - Day 30 - Simplified Argument Null Checks - Tue, 21 December
- 30 Days Of .NET 6 - Day 29 - Writing Raw JSON Using Utf8JsonWriter - Mon, 6 December
- 30 Days Of .NET 6 - Day 28 - JSON Serialization To & From Streams - Mon, 29 November
- 30 Days Of .NET 6 - Day 27 - Extended Property Patterns - Fri, 19 November
- 30 Days Of .NET 6 - Day 26 - Sealed ToString() In Records - Fri, 12 November
- 30 Days Of .NET 6 - Day 25 - Hot Reload - Tue, 9 November
- 30 Days Of .NET 6 - Day 24 - Parallel.ForEachAsync - Mon, 8 November
- 30 Days Of .NET 6 - Day 23 - Nullable References - Thu, 4 November
- 30 Days Of .NET 6 - Day 22 - LINQ Default Parameters - Tue, 2 November
- 30 Days Of .NET 6 - Day 21 - Constant Interpolated Strings - Mon, 1 November
- 30 Days Of .NET 6 - Day 20 - Json Property Ordering - Wed, 27 October
- 30 Days Of .NET 6 - Day 19 - Record Structs - Thu, 21 October
- 30 Days Of .NET 6 - Day 18 - File Scoped Namespaces - Mon, 18 October
- 30 Days Of .NET 6 - Day 17 - New Timer - PeriodicTimer - Tue, 12 October
- 30 Days Of .NET 6 - Day 16 - HTTP/3 Support - Thu, 7 October
- 30 Days Of .NET 6 - Day 15 - SOCKS Proxy Support - Tue, 5 October
- 30 Days Of .NET 6 - Day 14 - Implicit Usings - Fri, 1 October
- 30 Days Of .NET 6 - Day 13 - LINQ Improvements - Chunk - Wed, 29 September
- 30 Days Of .NET 6 - Day 12 - Collection Count Performance Improvement - Tue, 28 September
- 30 Days Of .NET 6 - Day 11 - LINQ Improvements - Range Support - Fri, 24 September
- 30 Days Of .NET 6 - Day 10 - SDK & Runtime Version Checking - Thu, 23 September
- 30 Days Of .NET 6 - Day 9 - LINQ Improvements - DistinctBy - Wed, 22 September
- 30 Days Of .NET 6 - Day 8 - Control Of Serialization Of Object Cycles - Tue, 21 September
- 30 Days Of .NET 6 - Day 7 - Simpler Web Application Development - Tue, 14 September
- 30 Days Of .NET 6 - Day 6 - Priority Queue - Mon, 13 September
- 30 Days Of .NET 6 - Day 5 - Mathematics API Additions - Fri, 10 September
- 30 Days Of .NET 6 - Day 4 - LINQ Improvements - MaxBy & MinBy - Thu, 9 September
- 30 Days Of .NET 6 - Day 3 - TimeOnly Type - Wed, 8 September
- 30 Days Of .NET 6 - Day 2 - Friendly To Newcomers - Tue, 7 September
- 30 Days Of .NET 6 - DateOnly Type - Mon, 6 September
API
ASP.NET
- Fix - Content Negotiation With Post Request - Expected a supported JSON media type but got "" - Tue, 1 April
- Improving ASP.NET Content Negotiation XML Serialization Performance Using A RecyclableMemoryStream - Fri, 21 March
- Conditionally Output CSV Using ASP.NET Minimal API - Tue, 18 March
- Conditionally Output XML Or JSON Using ASP.NET Minimal API - Mon, 17 March
- Changing The Port Of An ASP.NET Web Application Or API - Sun, 16 March
- Configuring JSON Responses With ASP.NET - Fri, 21 February
- Using Groups To Apply Common Functionality To WebAPI EndPoints - Sun, 19 January
- Downloading Files With ASP.NET Core Minimal API - Mon, 30 December
- Uploading Files With ASP.NET Core Minimal API - Sun, 29 December
- Writing Minimal APIs For HEAD Requests - Mon, 9 December
ASP.NET Core
Algorithms
Amazon
Architecture
- Dependency Injection In C# & .NET Part 10 - Conclusion - Thu, 9 January
- Dependency Injection In C# & .NET Part 9 - Life Cycles - Wed, 8 January
- Dependency Injection In C# & .NET Part 8 - Types Of Dependency Injection - Tue, 7 January
- Dependency Injection In C# & .NET Part 7 - Integration Testing - Mon, 6 January
- Dependency Injection In C# & .NET Part 6 - Implementation Testing - Sun, 5 January
- Dependency Injection In C# & .NET Part 5 - Making All Implementations Available - Sat, 4 January
- Dependency Injection In C# & .NET Part 4 - Making Implementations Hot-Pluggable - Fri, 3 January
- Dependency Injection In C# & .NET Part 3 - Making Implementations Pluggable - Thu, 2 January
- Dependency Injection In C# & .NET Part 2 - Making Implementations Swappable - Wed, 1 January
- Dependency Injection In C# & .NET Part 1 - Introduction & Basic Implementation - Tue, 31 December
Art Of Software
Azure
Business Of Software
- How Long Is A String - Sun, 17 March
- Why Doesn't Windows Have A Built In Dictionary? - Tue, 16 May
- Punched In The Face Or In The Stomach - Tue, 19 July
- Conmen, Charlatans And Software Developers - Mon, 20 June
- What Amazon AWS Local Zones Mean For ICT In Kenya - Mon, 18 April
- If Your Grandmother Had Wheels - She Wouldn't Be A Bicycle - Its ALWAYS Harder Than You Think - Sat, 12 March
- Standing In A Garage Doesn't Make You A Car - Why You Cant Just "Hire Developers" - Thu, 10 February
- Coding Is Easy - Any Monkey Can Do It. Software, However Is Very Hard - Mon, 17 January
- All Sons Are Handsome; All Daughters Are Beautiful - Pitching Enterprise Software - Mon, 10 January
- About Software Bloat - Mon, 30 August
- The Value Of Good Documentation - Sat, 3 July
- On Career Progression - Tue, 22 June
- The Cost Of Adding Features To Software - Thu, 10 June
- What Do You Actually Agree To When You Accept All Cookies - Wed, 30 December
- Should all bugs be fixed? - Sun, 19 April
C#
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 8 - Compressor Implementation - Thu, 24 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 7 - Sequence Verification With Moq - Wed, 23 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 6 - Mocking & Behaviour Tests - Tue, 22 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 5 - Component Implementation - Mon, 21 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 4 - Types & Contracts - Sun, 20 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 3 - Project Setup - Sat, 19 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 2 - Basic Requirements - Fri, 18 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 1 - Introduction - Thu, 17 April
- Resolve IPAddress From Domain In C# - Wed, 16 April
- Beware - Environment.NewLine Is Not A Silver Bullet - Mon, 14 April
- Using State Machines In .NET - Part 12 - State Activation & Entry - Wed, 9 April
- Tip - Initialzing Large Arrays With A Known Value - Tue, 8 April
- Using State Machines In .NET - Part 11 - Logic Based On How A State Was Transitioned - Mon, 7 April
- Using State Machines In .NET - Part 10 - Generating State Diagrams - Sun, 6 April
- Using State Machines In .NET - Part 9 - Calling Asynchronous Methods - Sat, 5 April
- Using State Machines In .NET - Part 8 - Firing Events Before State Change - Wed, 2 April
- Using State Machines In .NET - Part 7 - Conditional State Transitions - Mon, 31 March
- Using State Machines In .NET - Part 6 - Firing Events On State Change - Sun, 30 March
- Tip - Adding Projects To Solutions Via Command Line - Sat, 29 March
- Using State Machines In .NET - Part 5 - Using Complex & Nested States - Fri, 28 March
- Using State Machines In .NET - Part 4 - Using Multiple Triggers - Thu, 27 March
- Using State Machines In .NET - Part 3 - Setting Initial State - Wed, 26 March
- Using State Machines In .NET - Part 2 - Basic Usage - Tue, 25 March
- Using State Machines In .NET - Part 1 - Introduction - Mon, 24 March
- Collection Expressions & Dictionaries - Sun, 23 March
- Threading Issue When Populating MemoryCache - Sat, 22 March
- Improving ASP.NET Content Negotiation XML Serialization Performance Using A RecyclableMemoryStream - Fri, 21 March
- Conditionally Output CSV Using ASP.NET Minimal API - Tue, 18 March
- Conditionally Output XML Or JSON Using ASP.NET Minimal API - Mon, 17 March
- Changing The Port Of An ASP.NET Web Application Or API - Sun, 16 March
- Controlling Publishing Of Satellite Resource Assemblies - Sat, 15 March
- Beware - Order Of DataTable Column Definitions Matters For User Defined Table Type Mapping - Thu, 13 March
- Dapper Part 15 - Using the IN Clause - Wed, 12 March
- Dapper Part 14 - Multithreading - Tue, 11 March
- Dapper Part 13 - Using Transactions - Mon, 10 March
- Dapper Part 12 - Alternative Bulk Insert Technique - Sat, 8 March
- Dapper Part 11 - Using Inheritance - Fri, 7 March
- Dapper Part 10 - Handling Cancellations - Thu, 6 March
- Dapper Part 9 - Using Dynamic Types - Wed, 5 March
- Dapper Part 8 - Controlling Database Timeouts - Tue, 4 March
- Dapper Part 7 - Adding DateOnly & TimeOnly Support - Mon, 3 March
- Dapper Part 6 - Returning Multiple Sets Of Results - Sun, 2 March
- Dapper Part 5 - Passing Data In Bulk To The Database - Sat, 1 March
- Dapper Part 4 - Passing Data To And From The Database - Fri, 28 February
- Dapper Part 3 - Executing Queries - Thu, 27 February
- Dapper Part 2 - Querying The Database - Wed, 26 February
- Simpler .NET Data Access With Dapper - Part 1 - Tue, 25 February
- Using Case Insensitive Dictionary Keys In C# & .NET - Sat, 22 February
- Configuring JSON Responses With ASP.NET - Fri, 21 February
- Enums & Enum Flags In C# & .NET For Dummies - Thu, 20 February
- Some Useful Integer Helper Methods In .NET - Wed, 19 February
- View Request & Response Headers For HTTP Requests In C# & .NET - Sun, 16 February
- Using Frozen Collections For Immutability - Sat, 15 February
- Getting The Executing .NET Version - Fri, 14 February
- Determining The Largest (& Smallest) Values For Numeric Types In .NET - Thu, 13 February
- Using Base64 To Encode Binary Data - Wed, 12 February
- Is That String Null, Empty, Or WhiteSpace? - Tue, 11 February
- Executing Actions In Parallel With Parallel.Invoke - Mon, 10 February
- Immutable Types In C# & .NET - Sun, 9 February
- Pipelining Task Results With Task.WhenEach - Sat, 8 February
- Parallelizing Work With C# & .NET - Fri, 7 February
- Using LINQ OfType To Filter Collections By Type - Thu, 6 February
- Using Deconstructors In C# - Wed, 5 February
- Using LINQ Repeat To Generate Copies Of Objects - Tue, 4 February
- Using LINQ Concat To Merge Collections - Mon, 3 February
- Using LINQ UnionBy To Merge Collections - Sun, 2 February
- Scheduling Tasks With The PeriodicTimer - Sat, 1 February
- Beware - Mapping Classes With ReadOnly Properties Using Dapper With VB.NET, C# & F# - Fri, 31 January
- Lazy Initialization With System.Lazy - Thu, 30 January
- Using Indexes With LINQ - Wed, 29 January
- Set Operations With LINQ - Tue, 28 January
- Using LINQ Zip To Combine Collections - Mon, 27 January
- Using LINQ Aggregate & AggregateBy To Perform Aggregate Computations - Sun, 26 January
- Using LINQ SelectMany To Flatten Collections - Sat, 25 January
- Using LINQ GroupJoin To Perform Grouped Joins - Fri, 24 January
- Performance Issues With Guid Primary Keys - Tue, 21 January
- Using A LINQ Pipeline To Solve Problems - Mon, 20 January
- Using Groups To Apply Common Functionality To WebAPI EndPoints - Sun, 19 January
- Primary Constructors - And Their Pitfalls - Fri, 17 January
- Locale & Culture Support For Kenyan Languages In .NET - Wed, 15 January
- Validating .NET Settings Part 4 - Validating Using IValidateOptions - Tue, 14 January
- Validating .NET Settings Part 3 - Validating Using Data Annotations - Mon, 13 January
- Validating .NET Settings Part 2 - Validating Using FluentValidation - Sun, 12 January
- Validating .NET Settings Part 1 - Manual Validation - Sat, 11 January
- Unit Testing Fractional Values In C# & .NET - Fri, 10 January
- Dependency Injection In C# & .NET Part 10 - Conclusion - Thu, 9 January
- Dependency Injection In C# & .NET Part 9 - Life Cycles - Wed, 8 January
- Dependency Injection In C# & .NET Part 8 - Types Of Dependency Injection - Tue, 7 January
- Dependency Injection In C# & .NET Part 7 - Integration Testing - Mon, 6 January
- Dependency Injection In C# & .NET Part 6 - Implementation Testing - Sun, 5 January
- Dependency Injection In C# & .NET Part 5 - Making All Implementations Available - Sat, 4 January
- Dependency Injection In C# & .NET Part 4 - Making Implementations Hot-Pluggable - Fri, 3 January
- Dependency Injection In C# & .NET Part 3 - Making Implementations Pluggable - Thu, 2 January
- Dependency Injection In C# & .NET Part 2 - Making Implementations Swappable - Wed, 1 January
- Dependency Injection In C# & .NET Part 1 - Introduction & Basic Implementation - Tue, 31 December
- Downloading Files With ASP.NET Core Minimal API - Mon, 30 December
- Uploading Files With ASP.NET Core Minimal API - Sun, 29 December
- Correctly Getting The Week Number In C# - Sat, 28 December
- Using The Lock In C# & .NET 9 - Fri, 27 December
- Correctly Processing CSV Files In C# & .NET - Wed, 25 December
- Check If You Have The Latest .NET SDK - Tue, 24 December
- Advanced Customization Of The Display Of Dates In C# - Mon, 23 December
- Caching In .NET Applications & The Hybrid Cache - Sun, 22 December
- Using The u8 String Literal - Sat, 21 December
- How To Work With Different Numbering Systems In C# - Fri, 20 December
- Customizing Object Equality In C# & .NET - Thu, 19 December
- Using AggregateBy In C# & .NET 9 - Wed, 18 December
- Checking Collections Have The Same Elements - Tue, 17 December
- Handing JSON Deserialization In The Wild - Mon, 16 December
- Using LINQ CountBy In .NET 9 - Sat, 14 December
- Determining The Number Of Days In A Year In C# - Fri, 13 December
- Loading & Using Application Settings In .NET - Wed, 11 December
- Writing Minimal APIs For HEAD Requests - Mon, 9 December
- Sending & Receiving JSON With A HttpClient In C# - Sun, 8 December
- Sending a HTTP HEAD Request With A HttpClient In C# - Sat, 7 December
- Required Properties vs Constructors In Domain Objects - Fri, 6 December
- Ordered Dictionary Improvements In .NET 9 - Thu, 5 December
- Removing Items From A Priority Queue - Wed, 4 December
- Using LINQ Index - Tue, 3 December
- Truncating Numbers In C# - Thu, 28 November
- Storing Common Application Settings For A .NET Application In MacOS OSX - Mon, 25 November
- Pretty Printing Unformatted Json In C# - Sun, 24 November
- Determining The Operating System C# .NET Program Is Running Under - Sat, 23 November
- Running Multiple .NET Versions In MacOS OSX - Fri, 22 November
- A Rose By Any Other Name - Short Circuiting - Wed, 5 June
- Using Inheritance With FluentValidation - Sat, 6 April
- Correctly Setting HttpClient BaseAddress - Sun, 17 March
- Tip - Don't Log Exceptions With Log.Information - Fri, 23 February
- Defining Relationships With Enum Attributes For Enum Values In C# - Fri, 18 August
- Tip - Using JsonSerializationOptions With Refit - Wed, 2 August
- Fix - HttpClient Changes Case Of x-request-id Header - Fri, 21 July
- Projecting Named Tuples In Entity Framework Core - Mon, 17 July
- Writing Maintainable, Testable Code That Depends On The Current Time - Wed, 3 May
- How To Use C# List Pattern Matching Practically - Tue, 28 March
- Building Directory Paths In C# - Tue, 14 February
- Writing A Custom DateOnly JSON Deserializer - Tue, 13 December
- Handling Null And Empty Strings With System.Text.Json - Part 2 - Mon, 21 November
- Required Keyword In C# 11 & .NET 7 - Sat, 12 November
- Microsecond Precision In .NET - Sat, 15 October
- How To Order Classes And Records In C# - Fri, 14 October
- Tip - Simpler LINQ Ordering In .NET 7 - Thu, 13 October
- Tip - Using LINQ To Filter A List Of Strings Containing Words In Another List - Tue, 4 October
- Building URLs In C# Without Concatenation Or Interpolation - Mon, 15 August
- Using HttpClient To Post JSON In C# & .NET - Mon, 1 August
- Beware - Mapping Inherited Immutable Classes Using Dapper - Wed, 25 May
- Fix - SSL Provider, error 0 - The certificate chain was issued by an authority that is not trusted - Mon, 16 May
- About curl And PowerShell - Tue, 10 May
- Adding Multiple Items To A HashSet In C# - Thu, 28 April
- Tip - HttpUtility.UrlEncode vs WebUtility.UrlEncode - Thu, 7 April
- Cleaner Code With Switch Expressions In C# - Tue, 29 March
- Maintainability Of Code - Fri, 11 March
- 30 Days Of .NET 6 - Day 30 - Simplified Argument Null Checks - Tue, 21 December
- 30 Days Of .NET 6 - Day 29 - Writing Raw JSON Using Utf8JsonWriter - Mon, 6 December
- 30 Days Of .NET 6 - Day 28 - JSON Serialization To & From Streams - Mon, 29 November
- 30 Days Of .NET 6 - Day 27 - Extended Property Patterns - Fri, 19 November
- 30 Days Of .NET 6 - Day 26 - Sealed ToString() In Records - Fri, 12 November
- 30 Days Of .NET 6 - Day 25 - Hot Reload - Tue, 9 November
- .NET 6 Release - Tue, 9 November
- 30 Days Of .NET 6 - Day 24 - Parallel.ForEachAsync - Mon, 8 November
- 30 Days Of .NET 6 - Day 23 - Nullable References - Thu, 4 November
- 30 Days Of .NET 6 - Day 22 - LINQ Default Parameters - Tue, 2 November
- 30 Days Of .NET 6 - Day 21 - Constant Interpolated Strings - Mon, 1 November
- 30 Days Of .NET 6 - Day 20 - Json Property Ordering - Wed, 27 October
- Saving Collections Of Primitives In Entity Framework Core - Thu, 21 October
- 30 Days Of .NET 6 - Day 19 - Record Structs - Thu, 21 October
- .NET 6 Release Candidate 2 Out - Mon, 18 October
- 30 Days Of .NET 6 - Day 18 - File Scoped Namespaces - Mon, 18 October
- 30 Days Of .NET 6 - Day 17 - New Timer - PeriodicTimer - Tue, 12 October
- 30 Days Of .NET 6 - Day 16 - HTTP/3 Support - Thu, 7 October
- Installing .NET 6 On Linux - Thu, 7 October
- 30 Days Of .NET 6 - Day 15 - SOCKS Proxy Support - Tue, 5 October
- 30 Days Of .NET 6 - Day 14 - Implicit Usings - Fri, 1 October
- 30 Days Of .NET 6 - Day 13 - LINQ Improvements - Chunk - Wed, 29 September
- 30 Days Of .NET 6 - Day 12 - Collection Count Performance Improvement - Tue, 28 September
- 30 Days Of .NET 6 - Day 11 - LINQ Improvements - Range Support - Fri, 24 September
- 30 Days Of .NET 6 - Day 10 - SDK & Runtime Version Checking - Thu, 23 September
- 30 Days Of .NET 6 - Day 9 - LINQ Improvements - DistinctBy - Wed, 22 September
- 30 Days Of .NET 6 - Day 8 - Control Of Serialization Of Object Cycles - Tue, 21 September
- .NET 6 Release Candidate 1 Out - Tue, 21 September
- 30 Days Of .NET 6 - Day 7 - Simpler Web Application Development - Tue, 14 September
- 30 Days Of .NET 6 - Day 6 - Priority Queue - Mon, 13 September
- 30 Days Of .NET 6 - Day 5 - Mathematics API Additions - Fri, 10 September
- 30 Days Of .NET 6 - Day 4 - LINQ Improvements - MaxBy & MinBy - Thu, 9 September
- 30 Days Of .NET 6 - Day 3 - TimeOnly Type - Wed, 8 September
- 30 Days Of .NET 6 - Day 2 - Friendly To Newcomers - Tue, 7 September
- 30 Days Of .NET 6 - DateOnly Type - Mon, 6 September
- Tip - Get Current Date In C# - Sat, 7 August
- Reducing Bugs And Improving Maintainability Through Better Domain Design - Thu, 29 July
- Tip - TimeSpan Minutes vs TotalMinutes - Fri, 11 June
- About Default Interface Impementations - Mon, 24 May
- The Other Integer Types - Mon, 24 May
- Fix For The string argument propertyNames cannot be empty - Sun, 25 April
- Fix For Cannot use LINQ in MatchCollection Regex with .NET Standard 2 - Wed, 10 March
- Handling Null And Empty Strings With System.Text.Json - Tue, 9 March
- Inheritance In Business Logic Is Likely A Code Smell - Part 1 - Sat, 6 March
- Handling Exceptions With Refit - Sun, 28 February
- Fix - error CS8805 Program using top-level statements must be an executable - Wed, 10 February
- Improving HttpClient Requests - Mon, 21 December
- Beware of HttpClient Header Validations - Mon, 14 December
- Remote Debugging In VS Code - Thu, 3 December
- HTTP Redirects Using HttpClient - Mon, 23 November
- Refactoring With Records In C# - Sat, 21 November
- Getting Now Playing Information From WQXR In .NET - Mon, 9 November
- Posting Messages To Microsoft Teams With Code - Wed, 4 November
- Disable SSL Certificate Validation In .NET - Sat, 31 October
- Querying & Extracing Data From YouTrack - Fri, 30 October
- Count vs Length vs Any - Checking Collection Emptiness - Tue, 14 April
- Properties Under The Hood - Fri, 10 April
- Arguments Handling Across Paradigms - Sun, 5 April
- Fun With Tuples In C# 7 & Above - Sat, 21 March
- AsReadOnly() May Not Be Doing What You Think! - Wed, 11 March
CSV
CSVHelper
Caching
Career
Carter
Configuration
Dapper
- Dapper Part 15 - Using the IN Clause - Wed, 12 March
- Dapper Part 14 - Multithreading - Tue, 11 March
- Dapper Part 13 - Using Transactions - Mon, 10 March
- Dapper Part 12 - Alternative Bulk Insert Technique - Sat, 8 March
- Dapper Part 11 - Using Inheritance - Fri, 7 March
- Dapper Part 10 - Handling Cancellations - Thu, 6 March
- Dapper Part 9 - Using Dynamic Types - Wed, 5 March
- Dapper Part 8 - Controlling Database Timeouts - Tue, 4 March
- Dapper Part 7 - Adding DateOnly & TimeOnly Support - Mon, 3 March
- Dapper Part 6 - Returning Multiple Sets Of Results - Sun, 2 March
- Dapper Part 5 - Passing Data In Bulk To The Database - Sat, 1 March
- Dapper Part 4 - Passing Data To And From The Database - Fri, 28 February
- Dapper Part 3 - Executing Queries - Thu, 27 February
- Dapper Part 2 - Querying The Database - Wed, 26 February
- Simpler .NET Data Access With Dapper - Part 1 - Tue, 25 February
- Beware - Mapping Classes With ReadOnly Properties Using Dapper With VB.NET, C# & F# - Fri, 31 January
- Beware - Mapping Inherited Immutable Classes Using Dapper - Wed, 25 May
Database
- Dapper Part 15 - Using the IN Clause - Wed, 12 March
- Dapper Part 14 - Multithreading - Tue, 11 March
- Dapper Part 13 - Using Transactions - Mon, 10 March
- Dapper Part 12 - Alternative Bulk Insert Technique - Sat, 8 March
- Dapper Part 11 - Using Inheritance - Fri, 7 March
- Dapper Part 10 - Handling Cancellations - Thu, 6 March
- Dapper Part 9 - Using Dynamic Types - Wed, 5 March
- Dapper Part 8 - Controlling Database Timeouts - Tue, 4 March
- Dapper Part 7 - Adding DateOnly & TimeOnly Support - Mon, 3 March
- Dapper Part 6 - Returning Multiple Sets Of Results - Sun, 2 March
- Dapper Part 5 - Passing Data In Bulk To The Database - Sat, 1 March
- Dapper Part 4 - Passing Data To And From The Database - Fri, 28 February
- Dapper Part 3 - Executing Queries - Thu, 27 February
- Dapper Part 2 - Querying The Database - Wed, 26 February
- Simpler .NET Data Access With Dapper - Part 1 - Tue, 25 February
- Performance Issues With Guid Primary Keys - Tue, 21 January
Dates & Times
Design
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 8 - Compressor Implementation - Thu, 24 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 7 - Sequence Verification With Moq - Wed, 23 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 6 - Mocking & Behaviour Tests - Tue, 22 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 5 - Component Implementation - Mon, 21 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 4 - Types & Contracts - Sun, 20 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 3 - Project Setup - Sat, 19 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 2 - Basic Requirements - Fri, 18 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 1 - Introduction - Thu, 17 April
- Required Properties vs Constructors In Domain Objects - Fri, 6 December
- Writing Maintainable, Testable Code That Depends On The Current Time - Wed, 3 May
- Maintainability Of Code - Fri, 11 March
- Reducing Bugs And Improving Maintainability Through Better Domain Design - Thu, 29 July
- Using System.Text.Json To Enforce API Logic - Sat, 20 March
- Inheritance In Business Logic Is Likely A Code Smell - Part 1 - Sat, 6 March
Did You Know
Docker
Documentation
Domain Design
- Dependency Injection In C# & .NET Part 10 - Conclusion - Thu, 9 January
- Dependency Injection In C# & .NET Part 9 - Life Cycles - Wed, 8 January
- Dependency Injection In C# & .NET Part 8 - Types Of Dependency Injection - Tue, 7 January
- Dependency Injection In C# & .NET Part 7 - Integration Testing - Mon, 6 January
- Dependency Injection In C# & .NET Part 6 - Implementation Testing - Sun, 5 January
- Dependency Injection In C# & .NET Part 5 - Making All Implementations Available - Sat, 4 January
- Dependency Injection In C# & .NET Part 4 - Making Implementations Hot-Pluggable - Fri, 3 January
- Dependency Injection In C# & .NET Part 3 - Making Implementations Pluggable - Thu, 2 January
- Dependency Injection In C# & .NET Part 2 - Making Implementations Swappable - Wed, 1 January
- Customizing Object Equality In C# & .NET - Thu, 19 December
EasyNetQ
Entity Framework Core
Epiphanies
Excel
F#
- Beware - Mapping Classes With ReadOnly Properties Using Dapper With VB.NET, C# & F# - Fri, 31 January
- Random Sampling In F# - Mon, 2 December
- Choosing From A Collection In F# - Sun, 1 December
- Improved Collection Shuffling In F# - Fri, 29 November
- Beware - F# Doesn't Support C# Types Using Init Modifiers - Fri, 2 July
- Extracting Bytes From A F# String - Sat, 25 April
- Arguments Handling Across Paradigms - Sun, 5 April
- FizzBuzz In F# - Wed, 1 April
- Using Nuget In F# Scripts - Sun, 29 March
Fails
Fixes
- Fix - Visual Studio Code Auto-Creates A Solution File - Thu, 23 January
- Fix - Python - Warning- Ignoring Invalid Distribution - Wed, 25 May
- Fix - SSL Provider, error 0 - The certificate chain was issued by an authority that is not trusted - Mon, 16 May
- Fix - Docker For Windows Not Running - Wed, 9 June
- Fix For The string argument propertyNames cannot be empty - Sun, 25 April
- Fix For Cannot use LINQ in MatchCollection Regex with .NET Standard 2 - Wed, 10 March
- Fix - error CS8805 Program using top-level statements must be an executable - Wed, 10 February
- Fix For Entity Framework Core Not Generating Indexes & Constraints - Thu, 14 January
- Fix For Entity Framework Tools Error - Tue, 12 January
- Fix For pgAdmin Not Loading - Mon, 11 January
FluentAssertions
FluentValidation
Git
Gitlab
Globalization
Google
HttpClient
Human Nature
Insomnia
IntelliJ
Interop
JSON
Java
LINQ
- Using LINQ Repeat To Generate Copies Of Objects - Tue, 4 February
- Using LINQ Concat To Merge Collections - Mon, 3 February
- Using LINQ UnionBy To Merge Collections - Sun, 2 February
- Using Indexes With LINQ - Wed, 29 January
- Set Operations With LINQ - Tue, 28 January
- Using LINQ Zip To Combine Collections - Mon, 27 January
- Using LINQ Aggregate & AggregateBy To Perform Aggregate Computations - Sun, 26 January
- Using LINQ SelectMany To Flatten Collections - Sat, 25 January
- Using LINQ GroupJoin To Perform Grouped Joins - Fri, 24 January
- Using A LINQ Pipeline To Solve Problems - Mon, 20 January
- Using AggregateBy In C# & .NET 9 - Wed, 18 December
- Using LINQ CountBy In .NET 9 - Sat, 14 December
- Using LINQ Index - Tue, 3 December
- How To Order Classes And Records In C# - Fri, 14 October
- Tip - Simpler LINQ Ordering In .NET 7 - Thu, 13 October
- Tip - Using LINQ To Filter A List Of Strings Containing Words In Another List - Tue, 4 October
- Tip - Grouping Correctly In LINQ With VB.NET - Sun, 2 October
- Fix For Cannot use LINQ in MatchCollection Regex with .NET Standard 2 - Wed, 10 March
Languages
LazyCache
Libraries
LinqPad
Linux
Lisp
MSBuild
Maintainability
MemoryCache
Meta
Microsoft Teams
Minimal API
Moq
NET
NUnit
Nuget
OSX
Office
OpenSource
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 8 - Compressor Implementation - Thu, 24 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 7 - Sequence Verification With Moq - Wed, 23 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 6 - Mocking & Behaviour Tests - Tue, 22 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 5 - Component Implementation - Mon, 21 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 4 - Types & Contracts - Sun, 20 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 3 - Project Setup - Sat, 19 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 2 - Basic Requirements - Fri, 18 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 1 - Introduction - Thu, 17 April
People
Performance
Personal Development
PostgreSQL
PowerShell
PowerUser
Python
REST
RabbitMQ
Records
RedGate
Refit
Regex
Rider
Ruby
SQL
SQL Server
- Beware - Order Of DataTable Column Definitions Matters For User Defined Table Type Mapping - Thu, 13 March
- Beware - Handling Of 2 Digit Years In SQL Server T-SQL - Thu, 26 December
- Accessing SQL Server Configuration Manager - Mon, 22 May
- How To Index A NVarchar(MAX) Column In SQL Server - Sat, 26 November
- Enabling TCP/IP For SQL Server - Sat, 19 November
- Tip - SQL Server Management Studio - Constructing Dates - Mon, 24 October
- Tip - SQL Server Management Studio - Reorder Lines - Thu, 20 October
- Tip - SQL Server Management Studio - Duplicate Tab - Mon, 17 October
- Tip - SQL Server Management Studio - Server Colouring - Mon, 17 October
- Tip - SQL Server Management Studio - Reorder Results - Mon, 17 October
- Fix - SSL Provider, error 0 - The certificate chain was issued by an authority that is not trusted - Mon, 16 May
- Using 'TRUE' and 'FALSE' For Bit Types In SQL Server - Sat, 12 March
- Tip - SQL Server User Defined Table Types - Column Order Matters - Wed, 24 November
- Decimals, Precision And Scale - Tue, 28 April
SQL Server Management Studio
Security
Serilog
Software
Source Control
StarLibrary
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 8 - Compressor Implementation - Thu, 24 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 7 - Sequence Verification With Moq - Wed, 23 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 6 - Mocking & Behaviour Tests - Tue, 22 April
- Using State Machines In .NET - Part 12 - State Activation & Entry - Wed, 9 April
- Using State Machines In .NET - Part 11 - Logic Based On How A State Was Transitioned - Mon, 7 April
- Using State Machines In .NET - Part 10 - Generating State Diagrams - Sun, 6 April
- Using State Machines In .NET - Part 9 - Calling Asynchronous Methods - Sat, 5 April
- AwesomeAssertions - Drop-In Replacement For FluentAssertions - Fri, 4 April
- Using State Machines In .NET - Part 8 - Firing Events Before State Change - Wed, 2 April
- Using State Machines In .NET - Part 7 - Conditional State Transitions - Mon, 31 March
- Using State Machines In .NET - Part 6 - Firing Events On State Change - Sun, 30 March
- Using State Machines In .NET - Part 5 - Using Complex & Nested States - Fri, 28 March
- Using State Machines In .NET - Part 4 - Using Multiple Triggers - Thu, 27 March
- Using State Machines In .NET - Part 3 - Setting Initial State - Wed, 26 March
- Using State Machines In .NET - Part 2 - Basic Usage - Tue, 25 March
- Using State Machines In .NET - Part 1 - Introduction - Mon, 24 March
- Threading Issue When Populating MemoryCache - Sat, 22 March
- Improving ASP.NET Content Negotiation XML Serialization Performance Using A RecyclableMemoryStream - Fri, 21 March
- Conditionally Output CSV Using ASP.NET Minimal API - Tue, 18 March
- Conditionally Output XML Or JSON Using ASP.NET Minimal API - Mon, 17 March
- Correctly Getting The Week Number In C# - Sat, 28 December
- Correctly Processing CSV Files In C# & .NET - Wed, 25 December
Stateless
- Using State Machines In .NET - Part 12 - State Activation & Entry - Wed, 9 April
- Using State Machines In .NET - Part 11 - Logic Based On How A State Was Transitioned - Mon, 7 April
- Using State Machines In .NET - Part 10 - Generating State Diagrams - Sun, 6 April
- Using State Machines In .NET - Part 9 - Calling Asynchronous Methods - Sat, 5 April
- Using State Machines In .NET - Part 8 - Firing Events Before State Change - Wed, 2 April
- Using State Machines In .NET - Part 7 - Conditional State Transitions - Mon, 31 March
- Using State Machines In .NET - Part 6 - Firing Events On State Change - Sun, 30 March
- Using State Machines In .NET - Part 5 - Using Complex & Nested States - Fri, 28 March
- Using State Machines In .NET - Part 4 - Using Multiple Triggers - Thu, 27 March
- Using State Machines In .NET - Part 3 - Setting Initial State - Wed, 26 March
- Using State Machines In .NET - Part 2 - Basic Usage - Tue, 25 March
- Using State Machines In .NET - Part 1 - Introduction - Mon, 24 March
System.Text.Json
T-SQL
Teams
Testing
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 8 - Compressor Implementation - Thu, 24 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 7 - Sequence Verification With Moq - Wed, 23 April
- Designing, Building & Packaging A Scalable, Testable .NET Open Source Component - Part 6 - Mocking & Behaviour Tests - Tue, 22 April
- Using Serilog & Structured Logging In Testing - Part 3 - Testing Log Messages - Sun, 13 April
- Using Serilog & Structured Logging In Testing - Part 2 - Configuring Logging Destinations - Sat, 12 April
- Using Serilog & Structured Logging In Testing - Part 1 - Logging Test Output - Fri, 11 April
- AwesomeAssertions - Drop-In Replacement For FluentAssertions - Fri, 4 April
- FluentAssertions - A Pragmatic Roadmap To What Next - Wed, 22 January
- Evaluating Multiple Test Assertions At Once With FluentAssertions - Sat, 18 January
- There Be Dragons - FluentAssertions 8 New Licensing - Thu, 16 January
- Unit Testing Fractional Values In C# & .NET - Fri, 10 January
- Better Assertion Testing With FluentAssertions - Sun, 25 July
The Business Of Software
Threading
Time
Tips
- Tip - Adding Projects To Solutions Via Command Line - Sat, 29 March
- Verifying File Hashes With PowerShell (Update) - Wed, 13 March
- Tip - Don't Log Exceptions With Log.Information - Fri, 23 February
- Tip - Fluent Validation With Null Values - Thu, 6 July
- Tip - SQL Server Management Studio - Constructing Dates - Mon, 24 October
- Tip - SQL Server Management Studio - Reorder Lines - Thu, 20 October
- Tip - SQL Server Management Studio - Duplicate Tab - Mon, 17 October
- Tip - SQL Server Management Studio - Server Colouring - Mon, 17 October
- Tip - SQL Server Management Studio - Reorder Results - Mon, 17 October
- Tip - Simpler LINQ Ordering In .NET 7 - Thu, 13 October
- Tip - Using LINQ To Filter A List Of Strings Containing Words In Another List - Tue, 4 October
- Tip - Grouping Correctly In LINQ With VB.NET - Sun, 2 October
- Tip - HttpUtility.UrlEncode vs WebUtility.UrlEncode - Thu, 7 April
- Tip - Updating The Nuget Client - Thu, 31 March
- Tip - Get Current Date In C# - Sat, 7 August
- Tip - Locating Commands In The Path On Windows - Mon, 14 June
- Tip - TimeSpan Minutes vs TotalMinutes - Fri, 11 June
- Tip - Making Use Of Windows Terminal Tab Captions - Tue, 4 May
- Remember To Encode QueryString Data - Tue, 2 February
- Be Clearer With TimeSpans - Tue, 2 February
- Extracting Bytes From A F# String - Sat, 25 April
Tools
UI
UI Fails
UX
Under The Hood
VB.NET
VS Code
Validation
Visual Studio
Visual Studio Code
WSL
WebAPI
Windows
Windows Terminal
XML
XUnit
YouTrack
xUnit