In this issue from September 2017: Writing useful git commit messages; a NuGet feature for Visual Studio 2017; things to do before you commit; how to spot a phishing attack; weird commits in the Linux kernel; and a video on government mandated cryptographic insecurity.

Sharpen the Saw is a somewhat delayed repost of a semi-regular newsletter of information I publish for the professional development of software developers. While targeted primarily at developers working with the Microsoft technology stack, content will cover a wider range of topics.

To subscribe, send me an email and I’ll put you on the list. Membership is moderated.


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

How to Write a Git Commit Message

Commit messages are far more important in git than they were in earlier version control tools like svn. Here are seven guidelines for writing commit messages that work with the various git tools to help developers (re)establish context when reviewing the history of the code.

  • Separate subject from body with a blank line
  • Limit the subject line to 50 characters
  • Capitalize the subject line
  • Do not end the subject line with a period
  • Use the imperative mood in the subject line
  • Wrap the body at 72 characters
  • Use the body to explain what and why vs. how

Bonus tip: Learn to love the command line. Leave the IDE behind.

Read more

Software and Updates

A new or upgraded tool can be a beautiful thing.

Visual Studio 2017 can automatically recommend NuGet packages for unknown types

The latest update of Visual Studio 2017 includes a nifty new feature - if you write code that references unknown types, it can automagically suggest the right NuGet package for you. The feature is turned off by default - this post from Scott Hanselman details how to turn it on and how it works.

Read more

Being Professional

A great developer does more than just write great code.

Things Everyone Forgets Before Committing Code

With the common git mantra of making frequent small commits, it can be easy to lose track of all the other things that need to be done before we can declare code as done.

In this post, originally from the NDepend blog, Erik Dietrich suggests a number of things that you should be doing, ideally before every commit, but at the very least before you merge your branch or create a PR.

Read more

Staying Secure

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

Something’s phishy: How to detect phishing attempts

Telling the difference between a genuine message and a phishing attempt is becoming harder and harder. Unfortunately, gone are the days when you could rely on missing images, spelling mistakes, and poor grammar when trying to tell the difference.

From the MalwareBytes blog, this post looks at the different kinds of phishing attacks and how to be safe.

Read more


Sometimes the answer is random.

The Biggest and Weirdest Commits in Linux Kernel Git History

The distributed nature of git is one its most defining features, with its content-addressable object store being a key implementation detail. As one of the largest and oldest git repos, the Linux Kernel project (with over 650k commits) has a few oddities. Discover more - and learn a little about how git works under the hood - in this interesting post from Destroy All Software

Read more

Video of the Week

Take some time to feed your mind.

Ross Anderson - Keys Under Doormats

This is a fascinating talk about the history of cryptography and of cryptographic policy since World War II, presented by Ross Anderson from the Mathematics Faculty of Cambridge University. He particularly highlights the tensions between academia and government.

Watch now


blog comments powered by Disqus
Next Post
How long is a simple fix?  21 Apr 2018
Prior Post
Types behaving badly  14 Apr 2018
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
April 2018