David Wengier
Developer at Microsoft working on Razor and Roslyn, from Australia
Melbourne, Australia
Actions
David is a developer at Microsoft, working to make your Razor and C# tooling experience better.
A developer for the last 20+ years, David has had experience in lots of different languages and environments, from cgi-bin scripts in Perl, to genetic algorithms in VB3, and Windows applications in COBOL. A series of terrible decisions, clearly, but he learnt in the end and now spends most of his time developing with .NET in C#, and enabling other developers to do the same.
David is mostly interested in C#, good design and Lego Technic and Creator Expert cars. He can be found tweeting at @davidwengier and on about a dozen different slacks and discords that he is constantly getting lost in.
Links
Area of Expertise
Topics
Contributing to Microsoft via Open Source: A story
Microsoft has embraced open source in a big way, and is one of the biggest organisations on GitHub, but that size can be imposing to outsides who want to contribute, but don't know where to start.
In this session I will take you through my personal journey from external user, to Microsoft employee working on the Roslyn team, and tell you how my personal attitude towards open source was changed by contributing. You'll also get some tips and tricks to demystify the process and hopefully encourage you to make your first contributions, whether it be contributing source code or something else entirely.
A (very) opinionated guide to MSBuild and Project Files
In a past life I was in charge of, among other things, the build systems and scripts for a large enterprise application, using and trying all of the standard choices available in the .NET world: Nant, Powershell, Cake, CruiseControl.NET and the good old Windows batch file. Since 2018 though I've been working on the .NET Project System team at Microsoft and now have a new perspective on things that I wish I had back then.
In this session I'm going to take you through how we layout our project files and associated build scripts to make things easy to manage and maintain, easy to spin up new projects, and perhaps most importantly we'll talk about the various tools and techniques to help diagnose issues in your builds should they arise. Most of the dotnet organization on GitHub follows these patterns, but even if they're not or you, hopefully learning about them will still give you one or two ideas you can apply to your projects today.
Sometimes "MSBuild" gets a bad rap, but whether you're using it directly, or using one of the alternatives I mentioned above, at the end of the day your project files are still MSBuild files and understanding a bit more about the thing you're using is never a bad thing.
How does Hot Reload even work?
Hot Reload (and Edit and Continue) are reasonably amazing technologies allowing you to apply code changes on the fly, without stopping your application, or seemingly even recompiling it. Whilst a Hot Reload demo is all well and good (and I'm happy to provide one if you like), I personally find it much more interesting to talk about how it works under the hood, why some things don't work, what things might work in future, etc.
This session will be a dive into the details of .NET DLLs, how they work, how Roslyn compiles deltas for them, and how the runtime applies them. All of that wonderful information you've always wanted to know, but were too afraid to ask! You'll learn absolutely nothing about JavaScript, microservices, or anything else your company actually uses, but at least you'll have a better understanding of what's in a .NET DLL, and a better idea of ILSpy is showing you next time you run it.
What's new in C# 11 (now with less controversy!!)
There was a bunch of news earlier in the year, you might have heard about, where a new language feature in C# 11 was added to do null parameter validation, with a lot of push back from the community. This was generally seen as the downfall of the language, and as someone with a very vested interest in C#, I was looking forward to opining about it.
Well that feature has been pulled now, so unfortunately this session will have to appeal to you simply on the grounds of being "helpful" and "informative". Personally, I really liked the "!!" feature and was hoping to capitalize on the gossip!
Anyway, instead I'll go over the new language features, explain how they work under the covers, and you can decide for yourself whether you like them, and we can have interesting discussions about minor syntax quirks.
C# Source Generators - Write code that writes code
Generating source code is not a new technology, and there are lots of different offerings out there available for you to use, or that you may in fact be using right now. Tools like PostSharp, Fody, CodeSmith, and many, many more.
What is new however, with C# 9 and .NET 5, is a formal source generation offering from Microsoft, taking advantage of a unique opportunity that only the Roslyn team can provide, that lets you run your generator inside the compiler pipeline, with access to the internal data structures the compiler produces.
In this session we'll cover source generators in general, deep dive into the C# 9 offering, and then run through some examples, talk about the possibilities, and leave you with no shortage of ideas for your own generators that you can run wild with.
When all you have is a hammer, everything looks like a nail, and with source generators in your toolbelt, you won't look at that slow old reflection code the same way ever again.
Pragmatic Performance: When to care about perf, and what to do about it.
As a developer you often here both that performance is important, but also that you shouldn't worry about performance up front, so when is the right time to think about it? And if the time is right, what are you actually supposed to do?
If you're interested to hear about a pragmatic approach to performance, this talk will explain when is the right time to think about benchmarking, but more importantly will run through how to correctly benchmark .NET code so any decisions made will be based on information about your code that is trustworthy.
Additionally you'll also find out about some of the common, and some of the unknown, performance pitfalls of the .NET Framework and we'll discuss the true meaning behind the phrase "premature optimization is the root of all evil".
Lowering in C#: What's really going on in your code?
If you're attending a dev event you probably think you know what a foreach loop does - it iterates over a collection, right?
Well... yes.
BUT do you know how? Do you know what the C# compiler does when you write a foreach loop? What about a lambda expression? Or the re-entrant magic that is a yield return statement?
In this session we'll dive into Roslyn, the C# compiler, and learn about lowering and how it helps the compiler do its job, and what it does to your code. In the process you'll gain the skills to identify some of the common performance pitfalls of .NET, as well as just get a deeper understanding of what the code you write really does.
NDC London 2020 Sessionize Event
.NET Tour Down Under - Brisbane
Part of the .NET Tour Down Under, touring 3 cities in Australia with members of the .NET team and the community, presenting on Lowering in C#.
.NET Tour Down Under - Melbourne
Part of the .NET Tour Down Under, touring 3 cities in Australia with members of the .NET team and the community, presenting on Lowering in C#.
.NET Tour Down Under - Sydney
Part of the .NET Tour Down Under, touring 3 cities in Australia with members of the .NET team and the community, presenting on Lowering in C#.
Adelaide .NET User Group
Presented at the #dotNetConf local event on performance in .NET
NDC Oslo 2019 Sessionize Event
Melbourne Alt.Net
Presented a talk on Lowering in C#
Visual Studio 2019 Launch Melbourne
Presented the keynote session highlighting new features and improvements of Visual Studio 2019
Melbourne Alt.Net
Presented a half hour talk about Contributing to Microsoft via Open Source
NDC London 2019 Sessionize Event
NDC Sydney 2018 Sessionize Event
Melbourne .NET User Group
Pragmatic Performance
Melbourne Alt.Net
Presented a half hour talk giving and introduction and overview to Span < T > in .NET
DDD By Night March 2018
DDD By Night is a series of 8 lightening talks on various tech topics. I am speaking about the Amazon Echo
Melbourne Alt.Net
Presented a half hour talk on the what and why of performance and benchmarking in .NET
2017 AACUHO Conference
Presented a technical keynote session on "Conversation as a Platform", about the rise of bots and voice assistants and the conversational UI.
StarRez Global User Conference
Presented almost every year at the annual StarRez Global User Conference in the US as a technology and product expert, variously on panels, workshops, Q&A sessions and traditional presentations.
David Wengier
Developer at Microsoft working on Razor and Roslyn, from Australia
Melbourne, Australia
Links
Actions
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top