JetBrains .NET Days Online 2024
Session recordings of JetBrains .NET Days Online 2024.
The 2024 agenda includes topics like developing with C#, F#, .NET Aspire, Blazor, Razor, HTMX, and even ASP.NET MVC! We’ll discuss microservices, code verification, writing tests and look back at ReSharper's 20 years on the market.
You can watch the recordings here.
History and insights from 20 years of developing ReSharper
Andrew Karpov
ReSharper turned 20! Some people have been using it from the very beginning, some for just a year or two. In this talk, we’ll discuss how ReSharper has evolved over the years and what it has become.
About the Presenter
Andrew Karpov
Andrew Karpov is a Senior Software Developer at JetBrains and has been working on C# language support in ReSharper since 2016.
Crafting Blazor Components With Precision and Assurance
Mariekie Coetzee
In this session, we’ll explore Blazing Story, a template inspired by Storybook that allows developers to develop Blazor components in isolation. We’ll discuss the use of Playwright for end-to-end testing and explore the integration of an accessibility testing library to ensure that the components comply with the agreed guidelines.
About the Presenter
Mariekie Coetzee
Mariekie is a passionate software developer with over 15 years of experience. But her passion for crafting code goes beyond just the years on her resume – she still gets childlike excitement from every aspect of developing apps, from the initial concept to the final deployment.
Outside of the tech world, you'll often find Mariekie embracing the great outdoors. She has a deep love for camping, the feeling of being surrounded by nature, away from the hustle and bustle of city life. Whether immersed in code or gazing at stars, her excitement for work and the world around her remains constant.
A Homage to the Good Old MVC
Alexander Zeitler
ASP.NET was a bit behind the curve when it came to the MVC pattern. It was not until 2009 that Microsoft released the first version of ASP.NET MVC. This was a time when the MVC pattern was already well-established in the web development community. Part of the reason for this was that Microsoft was initially heavily invested in WebForms. Later, they pivoted to Silverlight as the future of web development. Aside from legacy projects, WebForms is now a thing of the past. Silverlight is also long gone.
Today, there's a lot of talk about the new and shiny Blazor. But I'm not convinced that it will fully replace ASP.NET MVC. And I'm not convinced that it should. This talk will be a homage to the good old (new) ASP.NET Core MVC. In it, I’ll explain why I think it's still a good choice for web development in 2024.
About the Presenter
Alexander Zeitler
Alexander Zeitler is a Cloud Solutions Architect and a passionate web developer. He's passionate about digital transformation in ERP, PDM, CRM, and B2B in general. He also loves to share his thoughts on Industry 4.0, the future of work, the theory of constraints, and lean startup/business practices.
Overcoming Broken Window Syndrome – Code Verification Techniques for .NET Developers
Gael Fraiteur
When coding standards, architectural guidelines, and conventions are only available in non-executable forms like documentation and diagrams, code quality tends to deteriorate over time. This deterioration leads to increased complexity, lower quality, and the accumulation of technical debt. To counteract this decline in quality, it’s essential to actively validate your source code against design rules and architectural standards as part of your DevOps pipeline.
This talk will explore several techniques for enforcing coding standards in .NET development. We’ll see how to use Reflection and Roslyn for thorough code analysis and demonstrate the implementation of architecture unit tests. We’ll also highlight the use of Roslyn analyzers and tools like NDepend and Qodana to provide real-time feedback. Additionally, we’ll introduce Metalama, a powerful tool that offers a fresh perspective on architecture enforcement, combining simplicity with real-time validation.
About the Presenter
Gael Fraiteur
Gael built his first commercial software at age 12 and has never stopped coding ever since. With an academic background rooted in engineering and mathematics, Gael is widely recognized for his pioneering work in aspect-oriented programming (AOP), particularly through his creation of the PostSharp framework. Recently, his restless passion for improving software development led to the inception of Metalama, a totally new approach to code generation and architecture validation inspired by AOP and based on Roslyn.
Gael is a devoted father of five. His musical taste oscillates between baroque, Piazzolla, and classic rock. He is a mediocre piano player and a reasonably reckless driver. He regularly speaks at developer conferences and user groups.
Enhancing ASP.NET Core Razor Pages With HTMX – A Simplicity-First Approach
Chris Woodruff
Dive into the dynamic world of web development in this engaging talk, where we explore the innovative blend of HTMX with ASP.NET Core Razor Pages. Discover how to bring simplicity back to your web applications without sacrificing power or scalability. We'll navigate through practical examples demonstrating how HTMX can make your Razor Pages more interactive with minimal JavaScript. Learn to enhance user experiences with easy-to-implement features like long polling, modals, and server-side validation that feel like the client side without a full page refresh. Whether you're a seasoned developer or new to the ASP.NET ecosystem, this talk will equip you with the knowledge to create more responsive and efficient web applications. Get ready to transform your approach to web development by leveraging the best of both worlds: the robustness of ASP.NET Core and the simplicity of HTMX.
About the Presenter
Chris Woodruff
Chris Woodruff, known as Woody, is an Architect at Real Times Technologies with nearly three decades of experience. He began his career before the first dot-com boom and is recognized for his significant contributions to software development and architecture. Woody is a regular speaker at international conferences, discussing topics from database development to APIs and web technologies. He is also a dedicated mentor, enhancing skills through his talks, writings, and the Breakpoint Show podcast and YouTube channel. Currently, Woody is writing a book on network programming with C# and .NET. Beyond his professional life, he’s a bourbon enthusiast and enjoys exploring the Bourbon Trail. Family time is important to him, and he shares professional insights on his blog.
No More SQLite – How to Write Tests With EF Core Using Testcontainers
Daniel Ward
Integration tests are crucial to ensuring your app's reliability. However, traditional options for writing these with EF Core, such as using SQLite or a real dev database, often introduce challenges both in terms of maintainability and confidence – sometimes even secretly making tests pass with false positives.
This session will offer an alternative, a library called Testcontainers, that addresses these challenges. After going through the more common options and their pitfalls, I'll introduce the Testcontainers library, the benefits it offers, and demonstrate with a coding demo how to implement it in some real integration tests using EF Core.
While this talk will be made with .NET in mind and use examples in C#, the Testcontainers library is offered in 10+ languages, and the knowledge can be transferred to other ecosystems. Attendees will be assumed to have basic knowledge of unit and integration testing.
About the Presenter
Daniel Ward
Daniel is a software consultant at Lean TECHniques who helps teams deliver high-quality software. He works with teams to adopt various agile and lean practices, such as effective CI/CD, automated testing, and product management. With experience in developing software and consulting teams across several industries, including financial, retail, and agriculture, he has fulfilled roles such as technical coach, agile coach, and tech lead, with a primary background as a software developer. He finds fulfillment in his work by working with others to understand their individual problems and working together to improve their products and professional enjoyment. The .NET ecosystem is where he is most comfortable and finds the most enjoyment.
In his free time, he also enjoys playing piano, swing dancing, and pursuing his own personal programming projects, including game development, for which he has a company called Nightcap Games that has already released one game commercially.
Building Functional DSLs for Life-Saving Applications
Roman Provaznik
We tend to call some F# language features "lifesavers", but what if I told you we actually built software for saving lives? In this talk, I'll walk you through designing custom DSLs for applications used by emergency operations center controllers with a pinch of C# and F# interop on the top of a SignalR- and Fable Compiler-powered UI renderer.
About the Presenter
Roman Provaznik
Roman Provazník is a Head of Product Engineering at Ciklum Czech Republic & Slovakia, an OSS author, a melomaniac, a speaker, and a terrible drummer. With 20+ years of experience in software development, he has tried many languages, from Pascal and Prolog to Java and C#, most of which he has since forgotten entirely.
As a big fan of the functional-first .NET language F#, he founded the Czech F# community, which he loves maintaining and growing.
Pushing 'await' to the Limits
Konstantin Saltuk
After the introduction of the await operator, C# developers can write asynchronous code in a way that looks almost like regular synchronous code. There's no more need for explicit callbacks and lambda expressions in certain scenarios. Great! However, it did not add a solution for multi-threaded programming. With the help of IAsyncDisposable, IAsyncEnumerable, and some custom task-like types, we can make multi-threading as easy as async/await. Come learn how to make async/await even more powerful and unlock the way to write multithreaded code cleanly and concisely.
About the Presenter
Konstantin Saltuk
Software developer at JetBrains and a big fan of C#.
Into the Rabbit Hole of Blazor Wasm Hot Reload
Andrii Rublov
This deep dive will reveal the magic behind how Rider seamlessly integrates with Blazor WebAssembly to provide a dynamic, real-time development experience. We'll explore the technical architecture, delve into the communication mechanisms between the IDE, the runtime, and the browser, and understand how code changes are instantly reflected without a full reload. Perfect for developers looking to enhance their knowledge of Blazor capabilities, this session will provide a thorough understanding of the behind-the-scenes processes that make hot reload a powerful tool in your Blazor Wasm development toolkit.
About the Presenter
Andrii Rublov
A software engineer mainly interested in programming languages, tooling creation, and a little bit of game dev. An active contributor to different open-source projects in his spare time, Andrii is always trying his best to finish existing pet projects and create new ones. Beyond this, Andrii is also the creator of the EF Core and MonoGame plugins for JetBrains Rider.
Orchestration vs. Choreography – The Good, the Bad, and the Trade-Offs
Laila Bougria
One of the goals of building microservice-based architectures is to reduce the complexity of individual components. In doing so, much of that complexity shifts from individual services towards interservice communication, making how we design those service interactions essential to our system design. That's where orchestration and choreography come in – two coordination techniques that can help us design complex workflows in our system.
In this session, we’ll thoroughly examine each pattern with practical examples from the banking sector that are based on almost five years of experience in this domain. By thoroughly understanding the trade-offs of each approach and understanding the right questions to ask, we can build a mental framework that helps us make well-balanced decisions about which pattern to use. Join me in this session, where we’ll transform the abstract concepts of orchestration and choreography into a tangible decision-making framework that steers you in the right direction!
About the Presenter
Laila Bougria
Laila Bougria is a Solutions Architect and Engineer with over 15 years of experience in the Microsoft .NET space. She's a keynote speaker, a Microsoft Azure MVP, and frequently shares her knowledge and insights at conferences worldwide. Currently, Laila is busy building NServiceBus at Particular Software and solving distributed riddles. When she's not immersed in complex problems or code, Laila enjoys indulging in her favorite pastime – knitting! She finds that tangling the yarn into beautiful patterns helps untangle her thoughts.
Contract Testing Made Easy – Mastering Pact for Microservices in C#
Irina Scurtu
In a forever-evolving world of microservices, with so many moving parts, we often rely on integration testing to prevent bugs and regressions.
The problem with these tests is that sometimes they become flaky, unreliable, and expensive to maintain and execute, due to the distributed nature of our system.
But what if we could ensure that our system’s components are compatible and can communicate with each other straight from the development phase?
Let’s have a look at what contract testing is and see how it can help us mitigate the risk of integration bugs before running long tests, with examples in C#.
About the Presenter
Irina Scurtu
A Microsoft MVP for Developer Technologies, Software Architect, and Microsoft Certified Trainer, Irina is on a never-ending quest to discover the latest trends and best practices in architecture, .NET, and the world around it.
Irina has delivered more than 1,000 hours of training sessions, workshops, and presentations, where she has shared her passion for .NET and the world surrounding it.
She is the founder of the DotNet Iasi User Group, where she tries to gather people who are willing to share their knowledge with others, and from time to time publishes articles on her blog.
Composing Distributed Applications With .NET Aspire
Cecil Phillip
The .NET Aspire stack bundles together an opinionated collection of libraries and tooling designed to streamline the development of distributed applications for developers. At the heart of .NET Aspire is its built-in orchestrator, which offers a code-centric approach, allowing you to effortlessly manage all the resources that make up your application – containers, executables, projects, and configurations – with the power of strong typing.
In this session, we’ll explore how you can use the API in the application model to compose the resources that make up our distributed application. We’ll get a solid understanding of what Aspire Resources are, explore some of the built-in resource types, as well as learn how we can create our own custom resources.
About the Presenter
Cecil Phillip
Cecil Phillip is a father, swimmer, podcaster, music lover, educator, and certified scuba diver. Oh, and he’s been writing software on the side for the past 15 years. He’s worked in various industries, such as finance, education, HR, and healthcare. Cecil is a lifelong learner who is continuously discovering new things both inside and outside of the technology field. Along with that inherent thirst for knowledge comes a passion for teaching and helping others realize their potential through education, too.