• Microsoft MVP Summit 2024

    I’m back in Redmond for the 2024 Microsoft MVP Summit! I was last here in 2019 and was all booked to return in 2020, but something significant happened around that time that you might be aware of. The event pivoted to virtual in 2020, but since last year has resumed allowing in-person attendance too. I was a virtual participant last year, but this year I’ve made the big trip over the pond.

    David standing in front of the Microsoft logo

    I flew to Seattle via Sydney and San Francisco. It is a long way to come, and I didn’t sleep very much (hard to get comfortable, plus we had quite a bit of turbulence), though I did end up in a row all to myself (so at least I could stretch out a bit!)

    Narelle kindly lent me her Sony WH1000XM4 noise-cancelling headphones for the trip, and they were brilliant. Air travel can be quite noisy, and they did a great job reducing the background noise and were comfortable to wear for extended periods. Do not fear, I will return them when I get home though!

    One hiccup on the trip apparently happened while I was recharging my phone at the San Francisco airport while waiting for my connecting flight. The boarding gate opened and I grabbed my phone and charger and jumped in line. It was only later after I’d landed in Seattle and unpacked at the hotel that I discovered that my US to Australian power adapter was missing. It must still be sitting in that power point back in the San Francisco airport lounge. I put a call for help out to my fellow MVPs and not only got offers of spare adapters (huge thanks to Aussie MVP Benjamin Elias), but also some suggestions as to where I might buy a replacement (The Container Store at Bellevue had this adapter, though it is quite a bit more expensive than the $AU6.50 you’d pay for one from Bunnings). Lesson learned: Next time I travel, I’ll pack some spare adapters!

    I’m staying at The Residence Inn Seattle Bellevue. It’s really close to the Microsoft campus at Redmond (a nice walk for me when weather permits, and Seattle does have a reputation for inclement weather). Rather than a big multistory hotel, the rooms here are in one of 15 cute houses. Your space is self-contained with cooking facilities included. In previous years I stayed in downtown Bellevue (right near all the shops and services), but I like the change.

    View between Residence Inn houses

    Today (Monday) there were some pre-summit sessions on AI (they weren’t under NDA so I can tell you that!), but tomorrow the summit proper begins and by default, all content will be private.

    I’m looking forward to learning a heap, catching up with MVP friends and making new connections.

    A big thanks to SixPivot for supporting my attendance at the MVP Summit this year.

    I’ll start the homeward journey on Friday evening. As nice as it is to be here, it will be good to get home again too.

    Amazon affiliate links

  • C# 12 features: Interceptors

    Part 8 in a series on new language features in C# 12.

    C# logo

    Interceptors

    This is an experimental feature that is disabled by default. It is an enhancement that source generators will be able to take advantage of. It allows source generators to modify (replace) existing code, rather than just adding new code.

    Being an experimental feature, the implementation details are likely to change over time, and there’s no guarantee that it will necessarily ship as a regular feature in the future.

    Further reading

    https://github.com/dotnet/roslyn/blob/main/docs/features/interceptors.md

    Example source

    https://github.com/flcdrg/csharp-12/tree/main/08-interceptors

  • C# 12 features: ExperimentalAttribute

    Part 7 in a series on new language features in C# 12.

    C# logo

    Experimental attribute

    Mark a type, method, or assembly with the ExperimentalAttribute and the compiler will generate a warning. You will need to explicitly suppress this warning to consume the experimental code.

    [Experimental("DAVID01")]
    public class ExperimentalClass
    {
        public void Thing()
        {
            //
        }
    }
    

    In some ways, this feels to me like the opposite of the ObsoleteAttribute.

    Further reading

    https://learn.microsoft.com/dotnet/csharp/language-reference/attributes/general?WT.mc_id=DOP-MVP-5001655#experimental-attribute

    Example source

    https://github.com/flcdrg/csharp-12/blob/main/07-experimental/ExperimentalClass.cs

  • 1
  • 2