It's one of the paradoxes of blogging that most every blogger (including myself) is sharing what they know right now (let's quietly ignore those who blog purely for traffic and visibility). Since everyone is learning, this can result in poor or misleading information being shared just as much as good information. Keep this in mind as you read any blog - how experienced is the writer and how well do they really know what they're talking about.
I'm just as flawed as other bloggers, so you should feel encouraged to check my ideas for yourself. Keep the date in mind as well - in our fast moving field, even good ideas can become obsolete.
To recap from last time, we want to create a simple library that allows us to express validation in a straightforward way, allowing us to concentrate on the rules we’re checking, not the boilerplate needed to make it work.
Saturday, July 14 2018 visual-studio
In an earlier post, I detailed how I converted a personal project across to the new csproj file format - it turns out that I made a few mistakes in the process.
The state of validation in C# leaves something to be desired. Recently I was writing some code in the same old classic styles and the frustration got to me - surely there must be a better approach that doesn’t involve great lists of strings, the use of exceptions for flow control, and brittle unit tests.
Saturday, June 30 2018 csharp
A question came up in an online discussion about the relative performance of using a bare primitive type vs wrapping that type into a struct. Wrapping the type is a common technique used to avoid runtime errors, enlisting the compiler to enforce the correct semantics at compile time instead. But, sometimes people worry about the performance cost of doing this.
Saturday, June 23 2018 debugging
So far, I’ve identified that the version of
System.Reflection found in the NuGet package is version 188.8.131.52 and the version in the global assembly cache is version 184.108.40.206 - so where is the version that the build process is choosing?
|Equality in .NET||7|
|Killing the Utility Class||5|
|Instance validation in C#||2|
|Troubleshooting Assembly Load Issues with the MSBuild Structured Log Viewer||16 Jun 2018|
|Troubleshooting Assembly Loading with the Assembly Binding Log Viewer||09 Jun 2018|
|Sharpen The Saw #37||04 Jun 2018|
|Converting projects to new csproj||02 Jun 2018|
|Avoid hardcoded wait times||26 May 2018|
|Sharpen The Saw #36||21 May 2018|
|Guaranteed Progression||19 May 2018|
|Always fix it twice||12 May 2018|
|Even longer than that||05 May 2018|
|Sharpen The Saw #35||30 Apr 2018|
|A simple fix takes longer than you think||28 Apr 2018|
|Sharpen The Saw #34||23 Apr 2018|
|How long is a simple fix?||21 Apr 2018|
|Sharpen The Saw #33||16 Apr 2018|
|Types behaving badly||14 Apr 2018|
|Implementing Value Equality||07 Apr 2018|
|Sharpen The Saw #32||02 Apr 2018|
|Implementing Entity Equality||31 Mar 2018|
|Sharpen The Saw #31||26 Mar 2018|
|Equality and GetHashCode||24 Mar 2018|
|Equality has Symmetry||17 Mar 2018|
|Types of Equality||10 Mar 2018|
|Why is Equality important in .NET?||03 Mar 2018|
|Sharpen The Saw #30||19 Feb 2018|
|A Tale of Minification||17 Feb 2018|
|Sharpen The Saw #29||12 Feb 2018|
|A Productivity Prompt for PowerShell||10 Feb 2018|
|Sharpen The Saw #28||05 Feb 2018|
|Prefer declarative method names||03 Feb 2018|
|Sharpen The Saw #27||29 Jan 2018|