Why a great deal of technical documentation on the internet is useless.

I am reading the Configuration providers in .NET page in order to learn how to load application settings from a JSON file in .NET 6. This page is a perfect example of why a great deal of technical documentation on the internet is useless.

The JSON configuration provider section of this page attempts to explain how to load load application settings from a JSON file using the JsonConfigurationProvider Class.

The following code block comes from that section.

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using ConsoleJson.Example;

// PROBLEM 1
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);

builder.Configuration.Sources.Clear();

IHostEnvironment env = builder.Environment;

builder.Configuration
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", true, true);

TransientFaultHandlingOptions options = new();
builder.Configuration.GetSection(nameof(TransientFaultHandlingOptions))
    .Bind(options);

Console.WriteLine($"TransientFaultHandlingOptions.Enabled={options.Enabled}");
Console.WriteLine($"TransientFaultHandlingOptions.AutoRetryDelay={options.AutoRetryDelay}");

using IHost host = builder.Build();

// PROBLEM 2
// Application code should start here.

// PROBLEM 3
await host.RunAsync();

Note: In the above code block I added PROBLEM comments that I reference below.

Problem 1

The line that follows this comment uses the args variable, however the args variable is not declared prior to use., In order to find out what this variable is you have to open the Host.CreateApplicationBuilder Method page and go to the CreateApplicationBuilder(String[]) section. There you will learn that the args variable should be set to “The command line arguments”.

This should never happen! Your readers should never need to go to another page on your website to find out what a variable is.

Problem 2

What does “Application code should start here” mean? If this was the very last line of code in the code block it would be easy to interpret this example. It would mean place all code above this comment at the very beginning of you entry function.

The problem is that comment is not the very last line of the code block.

Problem 3

There is another line of code after the “Application code should start here” comment. What is the purpose of this line of code? Is it clean up code? Or was the afore mentioned “Application code should start here” comment misplaced. Should this extra line of code be placed above that comment?

Conclusion

Because of Problem 2 and Problem 3 I have no idea how to modify an application to load application settings from a JSON file in .NET 6 after reading this page.

A complete working application would solve these problems!

A much better resource is the Basic example section of the Configuration in .NET page. After reading this, I was able to complete my current task.

On providing information without being an asshole.

What is wrong with the following quote found in the article How to set up the debugger for Chrome extension in Visual Studio Code?

Here’s a sample attach configuration.

Note: If you do not set the “url” option, a list will be prompted with your open tabs.

This extension have a lot of very useful options that you can use to adapt the configurations to your project. You can read the documentation of some of them here.

First, there is no link in the the first sentence. Second, that sentence is the only sentence in the entire paragraph. By the time the reader gets to the end of this paragraph without seeing the promised information they are pissed off and perhaps even screaming in rage.

Then the next paragraph is a seemingly unrelated note. When the reader sees this they are convinced that you are an asshole and a liar because you are never going to provide the information you promised.

Then in the following paragraph you seemingly change subjects and start talking about an extension. Yes, the very last word in this paragraph is a link that in fact leads to the information you promised in the first sentence but by the time the reader sees that link it is very likely too late. The best case scenario is a pissed off reader who is hoping to find the information you promised from another source. The worst case scenario is a pissed off reader plotting your untimely demise.

Do not do this. If you promise to provide a piece of information do it before the end of the paragraph, if not before the end of the sentence, in which you made the promise.

Featured

More advice on how to organize an article

The Upcoming changes to Google Drive sync clients page is another excellent example of how not to organize an article.

The section How Backup and Sync users can start using Drive for desktop begins as follows: “To get started with Drive for desktop, you can move your accounts and settings from Backup and Sync to Google Drive for desktop”. At this point the more impatient readers will have already started screaming at the author of this page because no information at all on how to get started was provided. Just above this paragraph is a link to “download Drive for Desktop” so you can assume that by the time your reader gets to this point on the page they have downloaded the software and they are continuing to read the page in order to find out what to do next.

To be more precise, at this point the reader has two questions that they are eager to learn the answer to.

  1. Do I uninstall Backup and Sync first?
  2. Or do I just install Drive for Desktop without first uninstalling Backup and Sync?

In the sentence “To get started with Drive for desktop, you can move your accounts and settings from Backup and Sync to Google Drive for desktop” you have not provided an answer to that question. You have instead annoyed the hell out of your reader. The reader is now screaming “But exactly how do I get started” at the top of their lungs.

The second sentence does not make matters any better: “During the process, you’ll review and confirm the settings for the folders on your computer you’re backing up and syncing with the cloud through Backup and Sync”. The reader is now two thirds of the way through the paragraph and they still have no idea what the answers to the above two questions are.

The final sentence does provide an answer to the question but only indirectly: “Backup and Sync will be automatically uninstalled after you’ve moved your accounts to Drive for desktop”. This sentence implies the answers to the two questions are as follows.

  1. Do I uninstall Backup and Sync first?: No
  2. Or do I just install Drive for Desktop without first uninstalling Backup and Sync?: Yes

The problem is that the impatient reader may have rage quit reading the page before getting this fare because of the issues with the first two sentences in the paragraph. I know that the first time I read this page, while I did manage to restrain myself from screaming, I did rage quit reading the page before I got to this critical sentence. It was not until I returned to the page the following day that I was able to answer my questions.

If a single sentence were added to the start of this paragraph things would be much better for the impatient reader: “You do not need to uninstall Backup and Sync before installing Drive for desktop”.

If the How Backup and Sync users can start using Drive for desktop section were rewritten as follows, this page would be far more useful and far easier to read.

How Backup and Sync users can start using Drive for desktop

You do not need to uninstall Backup and Sync before installing Drive for desktop. To get started with Drive for desktop simply run the Google Drive for desktop installer, GoogleDriveSetup.exe. After the installation of Drive for desktop completes a Move accounts to Drive for desktop form will be displayed to allow you to move your accounts and settings from Backup and Sync to Google Drive for desktop. During the process, you’ll review and confirm the settings for the folders on your computer you’re backing up and syncing with the cloud through Backup and Sync. Backup and Sync will be automatically uninstalled after you’ve moved your accounts to Drive for desktop.