Speaker

David Wengier

David Wengier

Developer at Microsoft working on Razor and Roslyn, from Australia

Melbourne, Australia

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.

Area of Expertise

  • Information & Communications Technology

Topics

  • .NET
  • .NET Core
  • C#
  • Visual Studio

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

January 2020 London, United Kingdom

.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#.

October 2019 Brisbane, Australia

.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#.

October 2019 Melbourne, Australia

.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#.

October 2019 Sydney, Australia

Adelaide .NET User Group

Presented at the #dotNetConf local event on performance in .NET

October 2019 Adelaide, Australia

NDC Oslo 2019 Sessionize Event

June 2019 Oslo, Norway

Melbourne Alt.Net

Presented a talk on Lowering in C#

May 2019 Melbourne, Australia

Visual Studio 2019 Launch Melbourne

Presented the keynote session highlighting new features and improvements of Visual Studio 2019

April 2019

Melbourne Alt.Net

Presented a half hour talk about Contributing to Microsoft via Open Source

February 2019 Melbourne, Australia

NDC London 2019 Sessionize Event

January 2019 London, United Kingdom

NDC Sydney 2018 Sessionize Event

September 2018 Sydney, Australia

Melbourne .NET User Group

Pragmatic Performance

September 2018 Melbourne, Australia

Melbourne Alt.Net

Presented a half hour talk giving and introduction and overview to Span < T > in .NET

May 2018 Melbourne, Australia

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

March 2018 Melbourne, Australia

Melbourne Alt.Net

Presented a half hour talk on the what and why of performance and benchmarking in .NET

August 2017 Melbourne, Australia

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.

May 2017 Hobart, Australia

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.

July 2009

David Wengier

Developer at Microsoft working on Razor and Roslyn, from Australia

Melbourne, Australia

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