Joseph Musser's Avatar

Joseph Musser

@jnm2.bsky.social

Partner and principal dev at Techsola. 7-year Microsoft MVP. Working on new C# language features. Finding perfect balance.

66 Followers  |  123 Following  |  14 Posts  |  Joined: 20.10.2023  |  1.5873

Latest posts by jnm2.bsky.social on Bluesky

That's very exciting, thanks for listening! And yes, it's a breath of fresh air to use. Feels well thought through at every turn.

22.05.2025 15:08 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

@patriksvensson.se I'm finally getting into Spectre.Console and it's spectactular, thank you!

One thing that's giving me cold feet though is that there's no support for named arguments/required options. It seems to me that named arguments are just as important in CLI scripting as in C#.

22.05.2025 13:57 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

I'm losing the feeling of "what's happening is bad" that used to pop up for me when facing difficulties. Difficulties are the pathway to heart and soul and life and flow.

09.05.2025 01:07 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Summary

This feature enables a type name to be omitted from static member access when it is the same as the target type.

This reduces construction and consumption verbosity for factory methods, nested derived types, enum values, constants, singletons, and other static members. In doing so, the way is also paved for discriminated unions to benefit from the same concise construction and consumption syntaxes.

type.GetMethod("Name", .Public | .Instance | .DeclaredOnly); // BindingFlags.Public | ...

control.ForeColor = .Red;          // Color.Red
entity.InvoiceDate = .Today;       // DateTime.Today
ReadJsonDocument(.Parse(stream));  // JsonDocument.Parse

// Production (static members on Option<int>)
Option<int> option = condition ? .None : .Some(42);

// Production (nested derived types)
CustomResult result = condition ? new .Success(42) : new .Error("message");

// Consumption (nested derived types)
return result switch
{
    .Success(var val) => val,
    .Error => defaultVal,
};

Summary This feature enables a type name to be omitted from static member access when it is the same as the target type. This reduces construction and consumption verbosity for factory methods, nested derived types, enum values, constants, singletons, and other static members. In doing so, the way is also paved for discriminated unions to benefit from the same concise construction and consumption syntaxes. type.GetMethod("Name", .Public | .Instance | .DeclaredOnly); // BindingFlags.Public | ... control.ForeColor = .Red; // Color.Red entity.InvoiceDate = .Today; // DateTime.Today ReadJsonDocument(.Parse(stream)); // JsonDocument.Parse // Production (static members on Option<int>) Option<int> option = condition ? .None : .Some(42); // Production (nested derived types) CustomResult result = condition ? new .Success(42) : new .Error("message"); // Consumption (nested derived types) return result switch { .Success(var val) => val, .Error => defaultVal, };

Discussion for a proposal I'm working on: Target-typed static member lookup
github.com/dotnet/cshar...

20.01.2025 19:10 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

No, but this looks amazing! What is it doing differently from 'nuget why' that causes the binlog viewer to show < 47k lines of output for this? Is it excluding deeper-nested packages if the package is already present at a level nearer to the project?

14.12.2024 00:51 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

There should be a word for the feeling of wrapping up from being ten layers deep into something, specifically finishing a bunch of tasks in a row as you unwind your stack, which you had been holding in memory. There's something satisfying about hitting all of them on the way out.

14.12.2024 00:22 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
'dotnet nuget why' option to show unique parent packages: --depth 1 Β· Issue #45464 Β· dotnet/sdk The problem happens when you reference a large set of deeply nested third-party packages that all have common dependencies. When you run dotnet nuget why Microsoft.CodeAnalysis.NetAnalyzers, and ge...

Have you ever run 'dotnet nuget why' and gotten a ridiculous or impossible amount of output to wade through? Would you be interested in a --depth parameter, or something similar?

github.com/dotnet/sdk/i...

13.12.2024 23:48 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

This past year has been so different for me from all other years. I'm going to summarize the theme with a single quote:

"There are three musts that hold us back: I must do well. You must treat me well. And the world must be easy." (Albert Ellis)

Nothing is holding me back.

07.12.2024 02:13 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

LDM just approved the proposal!

16.10.2024 17:58 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

In a way that will never make sense, the thing holding you back is the thing you believe you have to have.

15.10.2024 22:31 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
[Proposal]: `typeof` string constants Β· Issue #8505 Β· dotnet/csharplang Proposal added Discussed in LDM Decision in LDM Finalized (done, rejected, inactive) Spec'ed Summary For certain kinds of types, typeof(...).FullName is considered a constant value. It is allowed a...

Proposing `typeof` string constants, e.g. allowing `typeof(C).FullName` as an attribute argument: github.com/dotnet/cshar...

Would love feedback with real-world use cases, as well as real-world use cases for variants such as `fullnameof` that _aren't_ addressed by this proposal.

11.10.2024 21:24 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
[Proposal]: Open generic types in `nameof` Β· Issue #8480 Β· dotnet/csharplang Open generic types in nameof Proposed Prototype: - dotnet/roslyn#4902 and dotnet/roslyn#4907 by @CyrusNajmabadi - dotnet/roslyn#20450 by @alrz Implementation: dotnet/roslyn#75368 Specification: Not...

C# proposal to allow nameof(List<>) will be considered soon! github.com/dotnet/cshar...

Originally proposed by @jonskeet.bsky.social.

03.10.2024 21:25 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
RITUAL Album Β· Jon Hopkins Β· 2024 Β· 8 songs

open.spotify.com/album/40hWUh... by Jon Hopkins is incredibly powerful. I recommend setting aside an uninterrupted 41 minutes and lying down with headphones and an eye mask to listen.

01.09.2024 15:11 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I can't wait!

22.11.2023 18:03 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

@jnm2 is following 20 prominent accounts