In todays post: Jon Skeet lies to his compiler; the Visual Studio Code team talks about strict null checking and why they turned it on; more information about nullability in C# 8; the 10 commandments of code reviewing; blocking the worst passwords with HIBP; new Surface hardware for Christmas 2020; and Mariana Atencio talks about what makes you special.

Sharpen the Saw used to be an email newsletter of information I published for the professional development of software developers. Now it’s a series of blog posts. While targeted primarily at developers working with the Microsoft technology stack, content covers a wider range of topics.


Always a way to improve the code you write every day.

Lying to the compiler

The famous Jon Skeet found an interesting edge case in the new C# 8 feature Nullable Reference Types. I don’t want to give any spoilers - go have a read.

Read more

Strict null checking Visual Studio Code

Good advice from the Visual Studio Code team, talking about why they decided to turn on strict null checking, how they found a way to get there step by step (avoiding the need for a big bang migration), and how their approach generalises to other codebases.

Two significant quotes from the article:

We realized that we needed to start understanding our bugs in a new way, not as isolated events but as symptoms/signals of larger problems.


When you encounter a bug or something else that is slowing you down, rather than rushing in a fix and moving on to the next issue, stop for a moment to really explore what caused it.

Read more

Software & Updates

A new or upgraded tool can be a beautiful thing.

NullableAttribute and C# 8

In the next version of C#, we’re going to be gaining some powerful tools to address Peter Coad’s Billion Dollar mistake - null values. Jon Skeet is starting to experiment with the new compiler and has some interesting thoughts to share about the impact on Nodatime.

Read more

Being Professional

A great developer does more than just write great code.

The 10 commandments of navigating code reviews

I’ve come to believe that Code reviews are essential to the process of turning out high quality software - as important as writing unit tests and having a good design aesthetic. But how do you ensure that code reviews go well? This article by Angie Jones gives some good advice.

Read now


Staying safe online and writing secure systems are both harder than we think.

Pwned passwords in practice: real world examples of blocking the worst passwords

As a part of the Have I Been Pwned website, Troy Hunt is running a service that allows other sites to proactively (security and safely) block poor passwords, pushing their users into safer security practices. In this post from May 2018, Troy gives some examples where this service has been integrated and put to good use.

Read now


Sometimes the answer is random.

Microsoft teases new Surface hardware for Christmas 2020

In a major event this week, Microsoft launched new Surface hardware and teased what’s coming for Christmas next year. The sparkle videos for the Surface Neo and Surface Duo are spectacular. I can’t wait to see what the production hardware looks - and feels - like.


Take some time to feed your mind.

What makes you special?

Quoting from the Ted Talk page:

When journalist Mariana Atencio was seven, her father sent her from her home in Venezuela to a summer camp in Brainerd, Minnesota. Unsurprisingly, she was treated like an outsider. Over the course of many more such camps and a senior year in an American high school, she discovered that the best way to belong was to embrace the qualities that made her different. In this deeply personal talk, Atencio describes how these early lessons helped her succeed as an immigrant and as a journalist.

Length: 18m
Audience: Everyone

Watch now


blog comments powered by Disqus
Next Post
Nullable types redux  12 Oct 2019
Prior Post
C# 8 and .NET Core 3.0  28 Sep 2019
Related Posts
Browsers and WSL  31 Mar 2024
Factory methods and functions  05 Mar 2023
Using Constructors  27 Feb 2023
An Inconvenient API  18 Feb 2023
Method Archetypes  11 Sep 2022
A bash puzzle, solved  02 Jul 2022
A bash puzzle  25 Jun 2022
Improve your troubleshooting by aggregating errors  11 Jun 2022
Improve your troubleshooting by wrapping errors  28 May 2022
Keep your promises  14 May 2022
October 2019