Update 13.01.2023: Added slides
In the beginning of 2020 the early bird tickets for the .NET Day Switzerland went on sale. Nobody knew of course, how early bird these tickets were, as it took two additional years until I could finally present mine, while entering the Arena cinema here in Zürich three weeks ago.
Keynote: The History of .NET
I have only listened to handful of episodes from the .NET Rocks! podcast, but it was a nice surprise to have Richard Campbell as the opening keynote speaker. It was interesting to hear about the deeper roots of .NET, especially how it fits into and shaped Microsoft’s history.
He’s still working on the History of .NET book, maybe it will be finished one day. 😉
Dependency Confusion and Its Cure
A confusing title to say the least, but Andrei Epure and his evil alter ego “Evil_Hacker” managed to entertain the audience, while also demonstrating how vulnerable an unprotected NuGet configuration can be and what to do about it. It’s most certainly the talk, I learned the most on that day.
Key take aways:
- As consumer use Package Source Mapping
- As consumer define Trusted Signers
- As publisher Reserve Package ID Prefixes
- As publisher Sign Packages with Your Certificate
Fast Feedback with Pull Request Deployments
At first I considered going to Typescript for C# Developers, as I tend to struggle in that area, but during the break I changed my plans and ended up with Marc Müller talking about pull requests deployments.
The idea being that, if you can test your feature changes as early as possible, you should be able to find bugs earlier and fix them, before they ever make it to your main branch(es). The solution is to generate deployment artifacts and automatically deploy them to a newly spun-up environment. This of course requires the magical land of Kubernetes or similar, where new instances can be grown out of thin air.
One of the more interesting points of the talks for me was the mentioning of SQL Server Data Tools (SSDT), which seems like a half-forgotten technology that I however really like. You don’t have to write schema changing DB-up scripts, copying the procedures and functions just to change a line, or figuring out a way to get a useful diff out of your schema changes. Instead you change the schema definition and let SSDT generate the necessary schema migration for you.
I’ll definitely be taking a close look at the SSDT Data Migration project Marc mentioned.
The venue isn’t the best for serving food to a large group of people. It did feel less packed than in 2019, but maybe that was much more related to my positioning and personal comfort. Either way, the food was great, especially the mini burgers.
Keynote: Moving 17 Years of Legacy Code to the Cloud
Scott Hansleman was of course the big highlight of the day. He was officially on vacation and thus also brought his children to the talk, which added to the entertainment when he was poking fun at them here and there.
Scott talked about his journey of moving hansleman.com from a computer under someone’s desk sold as virtual machine, to Azure with automated pipelines, TLS and more. Scott being Scott the technical bits of the talk were really secondary and his story telling was the main focus of the whole talk.
Creating Cross-Platform Applications with .NET MAUI
Being a bad colleague and not listening to my co-worker’s talk on Unit Testing with Blazor, I instead wanted to check out what the current new hype-train is all about with regards to .NET MAUI as presented by Mark Allibone.
As it turns out, it’s not really new at all, but has been kept back a bit to further stabilize the whole framework and has recently been released. My personal main two take away are that .NET MAUI is ready and should be preferred over Xamarin for new projects, and that MAUI can also just be an UI framework on top of which one can build an UI library, as for example Comet UI does.
Message processing failed! But what’s the root cause?
Competing with another talk by Scott Hansleman, I decided to hear what Laila Bougria had to share about message system debugging.
One of the problems with messaging systems being that when there are failures, it can be rather tricky to figure out where in the system the error occurred and which failures are just follow-up failures.
The presented solution was to introduce OpenTelemetry in the software and use any of the many support monitoring tools to analyze the data and message history. It was interesting to hear that telemetry shouldn’t replace logs, as you want more detailed logs once you located the failure component.
One point that stuck was, that a lot of frameworks supposedly offer OpenTelemetry integrations already. For those, one just needs to enable them to get additional information out of the system.
Keynote: DOOM Postmortem: A Year That Changed an Industry
Closing the day, as usual with popcorn in the Arena cinema, we got to list to John Romero himself. He talked about the creation of DOOM. As someone interested in game development, the talk was very interesting.
One of things that impressed me was, that the small team of three people at id Software only took two to three weeks to build an initial sort of working prototype. Looking at the months and years of time that go into some of the games I’ve witnessed part of their development, it’s rather amazing that the basis of such a 3D software-renderer “engine” was written just in a few weeks. Granted, Wolfenstein 3D had a lot of similarities, as such not everything was invented from scratch, but John said that the engine of Wolfenstein 3D was too limited for what they wanted to do with DOOM, thus it wasn’t directly reused.
One question from the audience was whether Romero would use existing engines like Unity or Unreal Engine or create his own custom engine, which given the history, could have been answered either way. But given that John Romero’s latest game Empire of Sin is built with Unreal Engine, the answer was to use what exists. Especially for Unreal Engine, where everyone gets access to the code and can also go and fix something before it’s fixed upstream.
It was a great day. Meeting colleagues, learning some new things and things to research later, and getting entertain, all while enjoying some good food and snacks in-between. Can’t wait for .NET Day Switzerland 2023!