JetBrains .NET Days Online 2022
Session recordings of JetBrains .NET Days Online 2022.
This year's JetBrains .NET Days Online 2022 topics include C#, F#, ASP.NET, Blazor, REST, GraphQL, gRPC, stories about contributing to open-source packages, building microservices, algorithm performance and background tasks in .NET.
Watch the recordings here.
Maximising Algorithm Performance in .NET: Levenshtein Distance
James Turner
With performance tricks you may not know applied to an algorithm you may never have heard of before, be prepared to learn about my journey from different array structures to pointers and SIMD to threading, as we make the journey to maximum performance together.
About the Presenter
James Turner Director of Turner Software
James is a programmer and entrepreneur with a love of cars, music, and technology.
- Twitter: https://twitter.com/MrTurnerj
- Blog: https://turnerj.com/blog
Let's Build an incremental source generator with Roslyn
Stefan Pölz
(Incremental) source generators allow us to trade in a bit of compile time for better performance during runtime: instead of resorting to general-purpose types and methods, we may utilize auto-generated variants optimized specifically for our user code. With these at our fingertips, we can facilitate high-performance scenarios by, for example, using a Reflection-free source. If nothing else, this Roslyn-based metaprogramming relieves authors of writing repetitive patterns over and over again.
While source generators (compatible with the .NET 5 SDK) potentially cause a sluggish developer experience in huge projects and solutions, the programming model of incremental generators (added to the .NET 6 SDK) mitigates that risk. Come join me in a live coding session and witness the (test-driven) implementation of a fully operational incremental source generator. We will unveil (most of) the intricacies and benefits of incremental source generation along the way.
About the Presenter
Stefan Pölz Clean C# Coder – Test-driven .NET Developer
Stefan’s passion is to practice clean code and test-driven development in order to build maintainable software in an ever-evolving team, supported by tools from the .NET ecosystem. Stefan loves to attend and speak at public developer events and author open source projects, complementing his expertise in professional software development.
- Twitter: https://twitter.com/0x_F0
Remote Pairing
Lorraine Steyn
Remote pairing is a fabulous combination of highly engaging remote development with high people engagement and collaboration. In this live demo, we will take you through a variety of pairing tools and talk about the challenges and successes of remote pairing in each one.
Pairing solves many of the issues inherent in solo development. These include siloed development, lack of domain knowledge, poor mentoring, and insufficient upfront design. Pairing adds collaboration, knowledge sharing, real-time code review, and improved design.
We are going to role-play various dysfunctions with commonly used pairing tools, as well as present our favorite tools and better ways of working.
Whether you are new to pairing or a long-time fan, we have tons of suggestions for how to make the most of remote pairing.
About the Presenters
Lorraine Steyn Simplifier-in-chief
Lorraine founded the software development company Khanyisa Real Systems (KRS) in 1987. The company now employs around 60 technical staff, and has delivered large bespoke projects for hundreds of clients. Lorraine is a hands-on CEO who spends 3-4 days a week working on production code with her teams, mentoring, assisting with design, and driving quality and learning.
Lorraine has presented on such varied topics as Domain-Driven-Design, compassionate leadership, clean code and refactoring, women in tech, and many agile topics dear to her heart (often based in XP practices).
Lorraine is driven to find better ways of producing code, and then teaching the next generation of developers all our hard-won lessons!
- Twitter: https://twitter.com/lor_krs
- Blog: https://beingrealblog.wordpress.com/"
Alain King Problem solver at KRS
Alain is a Director and technical lead at KRS, with a love of training developers and helping them grow. He has spoken at many local meetups and conferences, on subjects including how to create internship programs, Domain-Driven Design, SQL, and many more.
Alain has over 15 years of development experience to share, and if you're not careful, he will also talk about Lego!
- Twitter: https://twitter.com/alainkingza
ASP.NET Basics for Experts
Layla Porter
People love to stay in their comfort zone and do what they've always done. But what if you could take your web applications to the next level just by getting the fundamentals right?
In this .NET 6 demo-rich session, I will show you how to make your applications more testable, maintainable, and resilient. Whether you are working with a monolith or a vast distributed application, the areas we'll cover will be applicable.
Join me and learn about the following topics and more!
- Minimal APIs, top-level statements and good design practise
- Dependency injection and inversion of control
- HTTP clients and policies
- Resiliency and circuit breakers with Polly
- Discovery clients with Steeltoe OSS
About the Presenter
Layla Porter Live Coder, Microsoft MVP, GitHub Star
Layla is a Developer Advocate at VMware serving the .NET community. She is a Live Coder on Twitch, a Microsoft MVP, a GitHub Star, and co-organiser of the MK .NET user group. Layla loves sharing knowledge whilst having fun. At her talks, there’s no such thing as a stupid question, and beginners are always welcome.
- Twitter: https://twitter.com/laylacodesit
Developing reusable components for Blazor WASM
Emanuele Bartolesi
One of the best features of Blazor is the option to turn pieces of user interface code into reusable UI controls. This feature increases your productivity, especially when you have created a lot of reusable components for different projects.
In this session, I will show how to create a library with a lot of reusable components and how to share them at your company with GitHub Packages registry.
About the Presenter
Emanuele Bartolesi Microsoft MVP & GitHub Star
Emanuele is a Microsoft 365 Architect, and he’s passionate about frontend technologies and everything related to the cloud, especially Microsoft Azure.
He currently lives in Zurich and actively participates in local and international community activities and events. Emanuele shares his love for technology through his blog.
He also became a Twitch Affiliate as a live coder, and you can follow him at https://twitch.tv/kasuken to write some code together.
Since 2014 he has been a Microsoft MVP in the Developer Technologies category. Emanuele is also a GitHub Star as of 2022.
- Twitter: https://twitter.com/kasuken
- Blog: https://dev.to/kasuken
Next level console apps with Spectre.Console
João Antunes
Even if they're not our main focus, many of us regularly create console applications in .NET, be it to test some features, run some benchmarks, or automate some tasks. In all these use cases, we get the job done, but since it’s not the main focus of our day-to-day job, things end up a bit hacky and not as easy to use as they could be. What if I told you we can have our cake and eat it too? In other words, we can create these console applications to help us, but make them more user-friendly without too much hassle.
That's exactly where Spectre.Console comes in. It’s an open source library that helps us create beautiful console applications, from parsing command-line arguments, prompting the user for information, providing progress reports, and much more!
About the Presenter
João Antunes Code, headbang, grouch, repeat!
João Antunes works as a software engineer, mostly with .NET technologies, but he likes to play around with other tech as well. His main interests are software architecture, design, and development, with more focus on the backend, but with a view of the whole stack.
João loves exploring new technologies, discovering new fringe topics to investigate, and diving into over-engineering sessions, but he always tries to remember the basics and how they're essential to everything else.
- Twitter: https://twitter.com/joaofbantunes
- Blog: https://blog.codingmilitia.com/
Building Microservices with Dapr and .NET
Cecil Phillip
Building distributed applications is not an easy thing to do. Breaking down your application into a collection of focused services comes with a completely different set of challenges. This is where DAPR can help us out. It provides a runtime and a collection of building blocks that can be used with any language or on any cloud. In this session, we’ll dive into DAPR, discuss the various building blocks it supports, and see some demos of how you can make use of it in your .NET applications.
About the Presenter
Cecil Phillip Cloud Developer Advocate at Stripe
Cecil Phillip is a software developer who’s been around the .NET space for some time. Over his career, he’s worked in different roles and created software solutions for various industries such as finance, education, HR, and healthcare. Today, he's a Developer Advocate at Stripe, where he helps developers incorporate payment processing in their applications.
- Twitter: https://twitter.com/cecilphillip
- Blog: http://cecilphillip.com/
Performance tricks I learned from contributing to open source .NET packages
Daniel Marbach
As a practical learner, I've found that performance optimizations are my biggest challenge and that I've learned the most helpful tricks from them, mostly by trial and error. It turns out the Azure .NET SDK is a perfect “playground” for learning those tricks – it's maintained by people who care and give feedback.
Over the past few years, I've contributed over fifty pull requests to the Azure .NET SDK. In this session, I'll walk you through the performance improvements I made and help you develop your own “superpowers” – spotting and avoiding closure allocations, finding opportunities for memory pooling, and more.
About the Presenter
Daniel Marbach Engineer & Solutions Architect at Particular Software
Daniel is a Software Engineer at Particular Software, the makers of NServiceBus, and a Microsoft MVP for Integration. He can bend minds and spoons with asynchronous programming and has contributed to many open-source projects.
In his free time, Daniel enjoys weightlifting, dark-roasted coffee, playing with his son, and writing more code. At least until midnight, when his self-imposed router hack kicks in.
- Twitter: https://twitter.com/danielmarbach
How to build a cloud native application with .NET and AWS
François Bouteruche
.NET has a long history on AWS. It has been supported for more than 11 years. The AWS SDK for .NET was the first-ever AWS SDK released.
When it comes to building cloud native applications with .NET, you can expect to use the full breadth and depth of AWS services to build modern applications.
In this session, I will introduce key services you can use with .NET to build cloud native applications. Then I will discuss the AWS Toolkit for Rider which brings AWS services into our favorite IDE. Finally, I will run a live demo of how to quickly bootstrap a cloud native application leveraging AWS services with .NET.
About the Presenter
François Bouteruche Senior Developer Advocate at Amazon Web Services
François is currently Senior Developer Advocate at Amazon Web Services, advocating for .NET and Java developers. He has a PhD in Computer Science. He worked several years in areas related to handwriting recognition and pen-based interfaces, so he’s very familiar with all the real stuff behind the buzzwords “AI” and “Machine Learning”. He led the R&D team at Evodia, the ancestor of Script and Go. In 2010, he joined Orange Applications for Business, a subsidiary of Orange, where he focused on application lifecycle management, agile methodologies, and then DevOps practices. He worked at the technical board of the company and reported to the CTO. After 5 years, he joined Younited Credit at the beginning of its scaling stage to help them move to a public cloud provider and set up Continuous Integration and Continuous Delivery best practices.
Then he worked 3 years at Microsoft France, helping .NET developers – at customers’ companies, at ISVs, and in meetup communities – to get the most out of Microsoft Developer Tools. He joined Amazon Web Services in 2019 to help .NET developers using AWS Cloud to build, test, and deploy efficiently and securely on AWS Cloud.
You can find more here: https://www.linkedin.com/in/francoisbouteruche
- Twitter: https://www.twitter.com/fbouteruche
REST, GraphQL and gRPC: A Comparison
Poornima Nayar
No matter the industry, applications need to talk to each other. So, developers often build bridges – Application Programming Interfaces (APIs) – to allow one system to communicate with another.
Over time, different API architectural styles have been released. Each of them has its own characteristics, patterns of data exchange, pros, and cons. REST, GraphQL and gRPC are three main options when it comes to API development and implementation. In my session, I will cover what REST, GraphQL, and gRPC are, how APIs can be implemented using each of them, and give you a comparison between them.
About the Presenter
Poornima Nayar Freelance .NET Developer, Microsoft MVP, Umbraco MVP
Poornima is a .NET developer with over 10 years of experience in .NET and Umbraco. She is passionate about learning new technologies and keeping herself up to date with the latest developments. Outside her work, Poornima enjoys music and is undergoing training in Indian Classical music. Based in Langley, UK, she has one young daughter and spends her spare time reading, cooking, and watching movies.
- Twitter: https://twitter.com/PoornimaNayar
Message processing failed! But what's the root cause?
Laila Bougria
Teams that are new to building and maintaining distributed systems with messaging are faced with challenges when it comes to investigating failure scenarios. With messages flowing through the system, it's hard to quickly identify where a failure originates from and why it's occurring. Without a call stack to guide you, we need other techniques to keep a good overview.
In this session, we'll navigate how modeling techniques, integration testing, and instrumentation with OpenTelemetry can help you create visibility for your entire distributed system.
About the Presenter
Laila Bougria Software Engineer at Particular Software and knitting addict
Laila Bougria is a software engineer at Particular Software, makers of NServiceBus. She's passionate about software and always looking for patterns, both in code and in yarn. In her free time she loves to knit or crochet and spend time with her kids playing whatever the day brings!
- Twitter: https://twitter.com/noctovis
Chaos Engineering: unleash the monkeys
Jacob Duijzer
Large online organizations like Netflix, Amazon, and LinkedIn have already been doing it for years: Chaos Engineering, i.e. injecting chaos into their production environments. And while it might sound scary (and it will be in the beginning), even you can apply some chaos to your applications. In this talk, I will demonstrate how to create chaos and how to apply resilience to work around it and create a more stable platform.
In this session we will look at the Chaos Monkey pizza shop, an event-driven, microservice oriented web application where you can order pizzas. The application will be running on Kubernetes, have a frontend, a GraphQL API, RabbitMQ, and a few .NET microservices. When everything is running smoothly, we will apply chaos on different components and try to resolve this chaos in different scenarios.
While trying to manage the application, it will become apparent that it is not only logging that is important but also traceability and metrics.
About the Presenter
Jacob Duijzer Team Lead / Software Architect / Principal Software Developer at Team Rockstars IT
Jacob is a Software Engineer with a passion for quality, testing, and sharing knowledge. He likes organizing Coding Dojos or even Code Retreats to help teams grow and learn to develop qualitative software.
- Twitter: https://www.twitter.com/jacobduijzer
- Blog: https://blog.duijzer.com
Reducing the environmental footprint in nautical transport with F# & Serverless
Roman Provazník
In this talk, I'll walk you through an amazing journey that started more than two years ago. We wanted to use artificial intelligence to predict the most fuel-efficient way to operate a vessel in the North and Baltic Seas, lowering carbon footprint. We were able to develop a robust solution with the right choice of cloud-based services combined with a subtle and effective .NET language. I'm going to show you how all this was possible.
About the Presenter
Roman Provazník Principal Technical Lead .NET at CN Group CZ
Roman Provazník is a Principal Technical Lead .NET & Architect of CN Group CZ, OSS author, melomaniac, speaker, and a terrible drummer. With 20+ years of experience with software development, he tried many languages from Pascal and Prolog to Java and C#, but successfully forgot most of them.
As a big fan of the functional-first .NET language F#, he founded the Czech F# community which he loves to maintain and grow.
- Twitter: https://twitter.com/dzoukr
F# for Performance Critical Code
Matthew Crews
F# is a language that stretches across many boundaries (web, backend, domain modeling, etc.) and paradigms (functional, imperative, procedural, object-based) while being simple, succinct, and performant.
But there's more to it! In this session, we'll see why F# is also my favorite imperative, procedural programming language when it comes to performance.
We'll explore why chose F# as the language for our new Discrete-Rate Simulation engine, and how we achieved a >100x speedup over other simulation engines in our industry. All with just F# and .NET.
About the Presenter
Matthew Crews Fast F#
An industrial engineer turned developer, Matthew is obsessed with high-performance code to optimize the scheduling of manufacturing systems and supply chains.
- Twitter: https://twitter.com/McCrews
- Blog: https://matthewcrews.com/
The Background on Background Tasks in .NET 6
Scott Sauber
Need to run a task in the background in .NET 6? There are lots of scenarios for background tasks, ranging from a task that runs for a long time to perhaps an operation that needs to be retried multiple times if it fails, and many other scenarios in between. While there are lots of scenarios for background tasks, there are also lots of solutions to this problem – so many, in fact, that .NET developers can sometimes be unsure of which one to choose. Such solutions include IHostedServices, BackgroundServices, Worker Services, Hangfire, and more. In this talk, we'll break down all these solutions, go over their pros and cons, and discuss when to choose one over the other. We’ll also take a deep dive to see how they all work under the hood.
About the Presenter
Scott Sauber Director of Engineering at Lean TECHniques Inc
Scott is a software consultant and primarily does web development using ASP.NET Core and JavaScript. His second dev passion behind web development is building DevOps pipelines and automating everything automatable. He’s a Friend of Redgate and co-organizes the Iowa .NET User Group. You can find Scott on Twitter or on his blog at scottsauber.com.
- Twitter: https://twitter.com/scottsauber
- Blog: https://scottsauber.com