JetBrains .NET Day Online 2023
Session recordings of JetBrains .NET Day Online 2023.
Watch the recordings of .NET Day Online 2023!
The most influential people in the .NET space talked about topics they're passionate about, including C#, F#, performance, profiling, microservices, JSON, and many more topics.
Recreating Wolfenstein 3D in F#
James Randall
How to recreate a classic 90s game using .NET and F# using the same techniques (an actual rasterized ray caster – it's all pixels!) to run natively in both the desktop and the browser.
About the Presenter
James Randall
James Randall, CTO at Blackdot Solutions, loves bikes, his dog, and doing fun things with code. By day, James is an engineering manager who creates OSInt software using .NET, TypeScript, and the cloud. By night, he enjoys sinking himself into personal coding projects and creating fun interactive things.
How to Effectively Spy on Your Systems
Laila Bougria
OpenTelemetry has quickly become the go-to industry standard for distributed tracing, logging, and metrics. Its widespread adoption across the industry, including the .NET ecosystem, has made it a breeze to use in your applications. However, larger, more complex systems introduce challenges that require us to strengthen our understanding of observability, align on our observability goals, and better understand the full capabilities of the OpenTelemetry project.
We need to understand how to choose the right observability signal for each use case, apply a set of best practices to the telemetry we collect, manage costs through different sampling strategies, and select the optimal architecture by leveraging the OpenTelemetry Collector. In this session, you'll learn the right questions to ask and gain a deeper understanding of the available options in the observability space to become more effective in spying on your systems!
About the Presenter
Laila Bougria
Laila Bougria is a software engineer at Particular Software, maker of NServiceBus, and a Microsoft Azure MVP. She's passionate about software and always looking for patterns, both in code and in yarn. When she’s not working, she loves to knit or crochet and spend time with her kids playing whatever the day brings!
Automating Observability With Roslyn Source Generators
Denis Ekart
Collecting logs, traces, and metrics in .NET applications has become a breeze recently. With support for automatic instrumentation and an increasing number of libraries starting to generate telemetry signals, it's easier than ever to build observable software.
Manually instrumenting your existing software can be a pain, though. Instead of spending valuable time on this, what if we let the Roslyn compiler do it for us?
Join Denis in a fun coding session, where we will automate the process of instrumenting our codebase using Roslyn source generators. We will implement a well-known structural design pattern using incremental source generators and a sprinkle of OpenTelemetry.
About the Presenter
Denis Ekart
Denis Ekart is a Lead Software Engineer at 13|37. He is a highly driven and innovative engineer with nearly a decade of professional experience in software design and development. His primary interests include designing and building performant cloud-native solutions. He has extensive knowledge and understanding of the .NET ecosystem, including ample experience in cloud technologies such as Microsoft Azure.
Beyond Relational With Entity Framework
Giorgi Dalakishvili
Entity Framework Core is great for performing crud operations, but did you know you can also go beyond basic relational queries? For example, do you need to store and query unstructured data in JSON documents? Do you have hierarchical data that you wish to query with EF Core? Are you required to keep historical information about data that has been modified or maybe even deleted? If you answered "Yes" to any of the above questions, this is the talk you do not want to miss.
In this session, you will see how to achieve the above goals with EF Core. Specifically, I will step through and show how you can use EF Core for JSON documents, how to use temporal tables to keep the complete history of your data and query hierarchical data with EF Core 8.
Developers working with EF Core will learn to store data in JSON columns and how easily they can drill into the JSON data with familiar LINQ query syntax. You will see how to filter and sort results based on elements of the JSON document, project elements from JSON, and even update the JSON document. Furthermore, you will see how temporal tables can store all the historical data and how straightforward it is to query for historical records with EF Core. Finally, I will show how to query hierarchical data with the upcoming version of EF Core 8. Join me for a demo-rich session and learn about EF Core features that you can apply right after the session.
About the Presenter
Giorgi Dalakishvili
Tech Lead, Space International. Giorgi is a software developer with more than a decade of experience. He works mainly with C#, ASP.NET Core, REST, GraphQL, MAUI, Xamarin, Entity Framework Core, AWS, Azure, and SQL Server. He has also worked with many other frameworks and systems such as ASP.NET MVC, ASP.NET Web API, WCF, Avalonia, WinForms, Oracle, and many more. Giorgi is an open-source author and contributor on GitHub, InfoQ Editor, and a member of the .NET Foundation.
Understanding Microservices - A Guide For the Monolithic Developer
Layla Porter
Microservice Architecture has been thoroughly discussed, as have the reasons why you should move to it (and why you shouldn’t). If you have already decided to move over to microservices from monolithic development, then you may find the whole process a bit daunting. What aspects should you, as a developer, be concerned with? What does all the terminology mean? How do the services talk to each other?
In this session, I’ll show you how to get started with microservice architecture, answering these and many other questions. We'll look at The Tacky Tacos project, built with ASP.NET 6, and explore how the whole process fits together from a development point of view.
About the Presenter
Layla Porter
Layla Porter is a Developer Advocate at VMware serving the .NET community. She makes videos and livecodes on YouTube. She is a Microsoft MVP, a GitHub Star, Progress Ninja, and the founder of the #WomenOfDotNet Initiative. Layla loves sharing knowledge whilst having fun. No question is stupid, and beginners are always welcome.
Unleashing the Power of Cross-Platform Development With Avalonia UI and JetBrains Rider
Mike James
Join Mike as he delves into the exciting world of cross-platform .NET development, powered by Avalonia UI and JetBrains Rider! This session will demonstrate how Avalonia UI enables you to create sleek, modern applications that run seamlessly across Windows, macOS, Linux, iOS, Android, and WebAssembly. After discussing Avalonia UI, Mike will showcase how to revitalize legacy WPF applications and bring them to life on macOS and Linux using Avalonia XPF and JetBrains Rider!
Whether you're an experienced .NET developer or just starting your journey, this session is your ticket to embracing the future of cross-platform development.
About the Presenter
Mike James
Mike's career has revolved around helping developers create cross-platform apps, initially using Qt, before joining Xamarin in 2013 and later joining Microsoft. He's now leading Avalonia UI as CEO, continuing his goals of enabling developers to build better apps for every platform using .NET.
See also
Hidden Difficulties of Debugger Implementation for .NET WASM Apps
Andrii Rublov
Debug infrastructure implementation for .NET (Blazor) WebAssembly apps is challenging due to its unique execution environment. In this talk, we will dive deep into the hidden difficulties of debugger IDE frontend implementation for .NET WASM apps.
We'll start with an overview of the Blazor WASM app execution anatomy, reviewing Debug Proxy. We will then compare regular .NET debugging with Blazor debugging and introduce Rider Debugging Infrastructure. Next, we'll discuss the steps involved in debug session initialization, including how the CDP (Chrome DevTools Protocol) is used. We will also cover breakpoints and evaluation. Finally, we will have a brief discussion about hot-reload, how it works, and how it is supported from the IDE side.
This talk is essential for .NET developers working with Blazor WASM and anyone interested in understanding the complexities of debugging .NET WASM applications.
About the Presenter
Andrii Rublov
Andrii Rublov, Software Developer, JetBrains. Andrii is a software engineer whose main interest is creating tooling for programming languages. He’s also active in game development. Andrii likes to stay busy: he actively contributes to various open-source projects in his spare time. But having numerous pet projects on his plate never stops him from diving into new ones. He is the creator of the EF Core and MonoGame plugins for JetBrains Rider.
High Performance JSON Serialization With Code Generation on C# 11 and .NET 7.0
Ian Griffiths
In this talk, you will see how features added to recent versions of C# can dramatically improve parsing and generation of JSON data compared with longer-established .NET JSON handling mechanisms. You will see how to use high-performance memory-efficient techniques, and also how code generators can reduce runtime overheads. This talk will explore the tradeoff between maximizing performance and ease of use and will show you how to choose between the various options now available in modern .NET applications.
About the Presenter
Ian Griffiths
Ian Griffiths, Technical Fellow, endjin. Ian started using computers when he was six. He has worked in various aspects of computing, including computer networking, embedded real-time systems, broadcast television systems, medical imaging, and all forms of cloud computing.
The Fastest .NET Dictionary... With F#
Matthew Crews
Learn what it takes to write the fastest Dictionary for .NET. Faster than the .NET Dictionary, faster than FrozenDictionary. You will learn how to use BenchmarkDotNet, dotTrace, and vTune to tune the most performance-critical pieces of code and write optimized data structures in .NET. Whether you write C#, VB.NET, or F# you will learn how to extract the maximum performance from .NET.
About the Presenter
Matthew Crews
An Industrial Engineer turned Developer, Matthew Crews is obsessed with high-performance code for optimizing the scheduling of manufacturing systems and supply chains.
xUnit Expanded - Better Testing With xUnit
Daniel Ward
xUnit is one of the most-used testing tools for C#, yet its full capability often goes underutilized. Unfortunately, there isn't much guidance or documentation for developers in terms of what libraries to use with xUnit or some of the more uncommon functionality of xUnit itself, keeping much of its use limited to the realm of learned experience. This talk will cover some xUnit tips and tricks that come from just that: learned experience. You'll learn how to make tests easier to write and more robust, as well as other helpful libraries that can be used in tandem with xUnit to unlock its full potential.
About the Presenter
Daniel Ward
Daniel is a software consultant at Lean TECHniques who helps teams deliver high-quality software by adopting various agile and lean practices, such as CI/CD, automated testing, and cloud development. With experience in developing software and consulting teams across several industries, his titles have included Technical Coach, Agile Coach, Tech Lead, and Software Developer. He finds professional fulfillment by working with others to understand their individual problems, improve their products, and help them to enjoy their jobs. The .NET ecosystem is where Daniel feels most at home.