Concat two enumerables

		public static IEnumerable<T> Concat<T>( this IEnumerable<T> left, IEnumerable<T> right ) {
			foreach ( var a in left ) {
				yield return a;

			foreach ( var b in right ) {
				yield return b;

Some useful C# Swap methods

public static class SwapExt
	public static void Swap<T>(ref T? left, ref T? right) => (left, right) = (right, left);

	public static (T? right, T? left) Swap<T>(this T? left, T? right) => (right, left);

	public static (T? right, T? left) Swap<T>((T? left, T? right) tuple) => (tuple.right, tuple.left);

Pay close attention to which method you think is being used. (The refs versus the tuples.)

C# null coalescing operator, ??

C# has a nice ?? operator that can be chained.
In a statement, it will return the first non-null value or null if none are found to not be null.

For example, if you had the code:

string? value1 = null;
string? value2 = nameof(value2);
string? result = value1 != null ? value1 : value2;

The last line could be simplified down to:

string result = value1 ?? value2;

As far as I know, there is no limit on how many ?? can be chained!

Dream of Peace

I had a dream… A dream last night.
I saw the world in a different light.
A place to live without despair.
Where men can breathe a clearer air.

A joy like this, I’ve never known.
It filled my heart and filled my soul.

And the dream of peace lives on..
And the dream of peace lives on!

Protiguous, 2021
Note: This song may be from my childhood, but I have been unable to find it again.

Scale of Intelligence Levels

  1. God-like – Able to change inputs and outputs
  2. Intuitive – Able to predict a sequence of outputs with missing inputs.
  3. Intelligent – Able to recognize the pattern of inputs even with missing inputs.
  4. Sentient – Able to recognize a sequence of inputs.
  5. Algorithmic – Able to activate the correct outputs in the correct sequence for a given input in the correct sequence.
  6. Logical – Able to activate the correct outputs for a given input.
  7. Moron – Unable to activate the correct outputs in the correct sequence for a given input.
  8. Idiot – Unable to activate the correct outputs for a given input.
  9. Alive – Able to respond to inputs.
  10. Lifeforms – Able to modify the inputs and create outputs.
  11. Exists – Has inputs and outputs.
  12. Nonexistent – Has zero inputs and outputs.


  1. God-like – God, Q, etc..
  2. Intuitive – Any smart woman, mothers, grandmas..
  3. Intelligent – Any above average human.
  4. Sentient – Common household pets: dogs, cats, etc..
  5. Algorithmic – Computers, smartphones, etc..
  6. Logical – calculators? complex machines?
  7. Moron – G.W.B.
  8. Idiot – D.J.T.
  9. Alive – animals, insects
  10. Lifeforms – bacteria, viruses
  11. Exists – I dunno.. sand, rocks maybe? Heheh.
  12. Nonexistent – Nothing unreal exists, according to Spock.

Just some things I was thinking about one day.
Decided to post it to get any constructive feedback.
FYI, this scale is not fully fleshed out or set in stone.
Also, some things can belong to multiple descriptions. 🙂

From my old blog,

Fix for the message “Windows is still setting up the class configuration for this device”.

So, the Hyper-V Manager stopped allowing me to open the settings on any virtual machine. It would just stay on “loading…”; the cancel button worked but the properties just would not show up.

So, I uninstalled and reinstalled all Hyper-V settings under the Control Panel “Turn Windows features on or off”. No change. The Hyper-V settings still would not load.

So, I checked the device manager. There was a yellow flag alert under one of the WiFi adapters with the message, “Windows is still setting up the class configuration for this device.”.

Okay? Sounds like the network subsystem for Windows got borked. <insert high-tech-sounding cause here>

Tried a disable/enable. No change.

So, I did a network reset. “Settings”, “Networks”, “Status”, scroll down to “Network Reset”.

Rebooted. Everything in Hyper-V works now.. You’d think there would be a more robust system for a feature many people use, right?