JetBrains .NET Days Online 2020
Session recordings of JetBrains .NET Days Online 2020.
JetBrains .NET Days Online 2020 is a free virtual event that took place on May 13–14, 2020. We invited 12 community speakers to talk about the topics they are passionate about: from C# and F# to coding practices like refactoring, web, cloud, GraphQL, and even setting up a blog!
Watch the recordings here.
Refactoring to Patterns with ReSharper
Zoran Horvat
From the Gang of Four, we learned to value flexible designs. From Martin Fowler, Kent Beck, and others, we learned to actually flex the design and to value the axes of change. These two concepts – design patterns and refactoring – have been around for over two decades, and yet the combination of the two systems never got a grip in the industry. Why so?
In this demonstration, we will apply refactoring techniques to flex the design and meet the requirements. But as every refactoring needs an end goal that motivates it, you will learn that established design patterns can often be seen as the final design. Through a series of examples, you will learn how refactoring techniques can easily – in particular, thanks to using ReSharper – be applied to introduce design patterns into existing code.
Sample code and slides: https://github.com/zoran-horvat/conf-jetbrains-net-days-2020
About the Presenter
Zoran Horvat is Principal Consultant at Coding Helmet Consultancy, speaker and author of 100+ articles, and independent trainer on the .NET technology stack. Often found speaking at conferences and user groups, promoting object-oriented and functional development style, clean coding practices and techniques that improve longevity of complex business applications.
Website: http://codinghelmet.com
Twitter: https://twitter.com/zoranh75
Yield Return ’cause I’m Awaiting Deep Dive into Async Streams
Andrew Karpov
The C# programming language continues to evolve rapidly. The new release added support for async streams. What are they? Why do we need them? How do they work? In this talk we answer all these questions, review BCL changes, compare new features with existing ones, and take a look under the hood of the compiler.
Sample code: https://github.com/akarpov89/AsyncStreamsDemo
About the Presenter
Andrew Karpov is a Software Developer at JetBrains working on C# language support in ReSharper. Before joining JetBrains, he gained a wide range of experience, from low-level programming for infosec products to enterprise systems development and working on metrology solutions in the chip manufacturing industry. His interests include programming languages design, functional programming, static analysis, and program transformations.
Twitter: https://twitter.com/akarpov89
From C# to Python – 10 Things I Learned Along the Way
Tess Ferrandez
Sooner or later you will probably use Python in one of your projects, either for data science or scripting. Python is a very easy language to learn. It is very versatile, and non-prescriptive. This is its strength, but unfortunately it makes it incredibly easy to fall into pitfalls of writing code and structuring projects in a way that is hard to read, maintain, and test.
As a C# developer, you may be tempted to write code in a C# style, not using all the goodness Python has to offer, and writing code that is less performant and uses more resources than good Python code. This session is a journey through things I have learned over the last few years, writing production code in Python, so that you don't have to re-live my mistakes.
About the Presenter
Tess Ferrandez is Software Engineer at Microsoft currently focusing on Machine Learning.
Twitter: https://twitter.com/TessFerrandez
Formatting F# Code
Florian Verdonck
If you format F# code in Rider, a tool called Fantomas will be called to process this. Fantomas is open source and I happen to be the maintainer of this project. In this session I'd like to explain how Fantomas's high-level works, how I got involved in this project, and how it is wired into the FSharp support for Rider.
About the Presenter
Hey there, I'm Florian Verdonck from Belgium. I work as a .NET consultant, and I’m hugely passionate about F#. I frequently contribute to open source projects, and I'm interested in developing my public speaking skills.
Twitter: https://twitter.com/verdonckflorian
Starting a Blog
Khalid Abuhakmeh
Khalid Abuhakmeh walks us through building a blogging platform utilizing a static site generator, free online services, coming up with ideas, and promoting content.
More information and a writeup: https://khalidabuhakmeh.com/starting-a-blog
About the Presenter
Khalid Abuhakmeh is an experienced software developer from Harrisburg, Pennsylvania. After graduating with degrees in Computer Science and Philosophy from Millersville University in the heart of Amish Country, he worked for several organizations, honing his problem-solving skills. Currently, he works at JetBrains as a Developer Advocate.
Twitter: https://twitter.com/buhakmeh
Build a Highly Performant Interservice Communication with gRPC for ASP NET Core
Riccardo Terrell
In this session, we introduce gRPC as a modern high-performance RPC framework for ASP.NET Core and for interservice communication. We look at the difference between gRPC and REST-based communication by exploring the pros and cons that these technologies offer; for example, gRPC uses HTTP/2 as base transport protocol and ProtoBuf encoding for efficient and fast communication.
We use F# to build client and server gRPC components defining proto service definition contracts. Next, we will explore tooling for the code-gen to implement the server and client components and how to interop easily with other programming languages. By the end of this session, you will have a practical understanding of how to use gRPC to implement a fast and polyglot system.
Demo code available at: https://github.com/rikace/StockMarketGrpc
About the Presenter
Riccardo Terrell is an information systems and technology professional and architect specializing in software & systems development. He has over 20 years' experience delivering cost-effective technology solutions in a competitive business environment. Riccardo is passionate about integrating advanced technology tools to increase internal efficiency, enhance work productivity, and reduce operating costs. He is a Microsoft Most Valuable Professional (MVP) and the author of "Concurrency in .NET", which features how to develop highly scalable systems in F# & C#. Riccardo believes in polyglot programming as a mechanism for finding the right tool for the job.
Learning F# by Designing Your Own Language
Oleksii Holub
F# or any functional language can be daunting to learn. In most cases, the hardest part is to get started. Most people who are unfamiliar with F# often ask, "What kind of project would it make sense to write in it?" Well, the answer is "anything really", but it's better to start with something where functional paradigms really shine.
I personally got into F# when I needed to write a parser for a custom language for a project I was working on. Building parsers in the traditional way is tedious and complicated, but once I discovered how functional languages can help express complex grammar rules using composable functions, I was sold. This whole exercise introduced me to union types, functional composition, monads, computational expressions, which I learned to later apply in other projects as well.
Writing your own parser in F# is a perfect way to get started and learn the different aspects of the language. It is no surprise that building a parser combinator library is treated as somewhat of a "hello world" in Haskell. In this talk, I walk you through the basics of the functional combinatorics and then do a live coding session where I will show you how we can harness the power of F#, FParsec, and Rider to build a custom data-querying DSL.
Demo code available at: https://github.com/Tyrrrz/JetBrainsDotnetDay2020
About the Presenter
I'm a software developer at Svitla Systems; most of my experience is with cloud and web technologies. During my free time I do a lot of open source work, either by contributing to other projects or by maintaining my own. Sometimes I speak at conferences and write articles for my blog. I really like covering obscure or niche topics that I think are really cool and deserve more attention.
Twitter: https://twitter.com/Tyrrrz
Create Web APIs with ASP.NET Core Using Outside In TDD
Pedro Moreira Santos
In this session, I live-code a web API with ASP.NET Core from the business perspective with tests that won't get in the way. Starting from some requirements and the acceptance criteria, I write one acceptance test-driving the outer loop of our test suite. I then use it as feedback for the progress of the implementation of the feature until it is completed, using unit tests. This is a technique that I've tried several times within delivery teams in the past, achieving amazing success. AFAIK, this technique was first presented in the book "Growing Object-Oriented Software, Guided by Tests" by Steve Freeman and Nat Price.
About the Presenter
Over 25 years of experience in software, from embedded systems, aviation, media, retail, to cloud-based enterprise applications. I'm the main author of the Agile Technical practices book. In recent years, I've focused on educating, and inspiring other developers. I coach and mentor. I've spent hundreds of hours doing pairing and mobbing sessions, coaching and tutoring developers at all levels of proficiency.
Twitter: https://twitter.com/pedromsantos
TDD and The Terminator — An Introduction to Test Driven Development
Layla Porter
Getting started with Test-Driven Development (#TDD) can be very challenging. It requires a different mindset and approach to writing and developing code. However, once you are in that mindset, it is very difficult not to write tests first.
But why bother writing tests first?
In this session, we go through the reasons for writing tests before coding, look at architecture and design principles, such as SOLID, and see how it all comes together to create a more testable and maintainable application.
Layla shows you how to get started writing tests first with practical examples on how to reprogram a T800 series Terminator so you can start using TDD in your own applications (or killer robots from the future).
Hasta La Vista, badly written code!
Sample code: http://bit.ly/tdd-terminator
About the Presenter
As a former Pilates teacher and professional horseback rider, Layla changed careers and became a self-taught .NET developer. Microsoft technologies and the support of people using it became her new passion. As a Microsoft MVP, Layla organizes the .NET user group in Milton Keynes, and she helps developers all over the world as a Twilio developer evangelist.
Twitter: https://twitter.com/LaylaCodesIt
Developing with .NET Core on AWS Using Rider
Martin Beeby
In this demonstration-heavy session, we illustrate our latest techniques, tools, and libraries for developing a .NET application on AWS. From within Rider, we will look at different ways to run your .NET applications and show you how to integrate with various AWS services, including Logging, Managed SQL Server, and Machine Learning Models. We will cover ways to build and run serverless and containerized applications as well as show you how you can move legacy .NET apps to the cloud.
AWS Toolkit for Rider: https://aws.amazon.com/rider/ App modernization workshop: https://dotnet-app-modernization.workshop.aws/
About the Presenter
As a principal advocate for Amazon Web Services, Martin Beeby travels the world showcasing the transformational capabilities of AWS. In his time as an advocate, Martin has spoken at over 200 events and meetups as well as producing blogs, tutorials, and broadcasts. Martin has been developing applications since he was 16 and over the past 21 years has worked on projects with many major companies and brands. His primary focus is on .NET applications, and he has worked as a C# and VB developer since 2001. Prior to joining AWS, Martin worked for Oracle and Microsoft as a developer evangelist and software development engineer.
Twitter: https://twitter.com/thebeebs
Better Object Mapping in .NET with Dapper
Kevin Griffin
When people talk about using ORMs (Object Relational Mappers) like Entity Framework or nHibernate in their projects, often they are only looking for one fundamental feature: the ability to map SQL output to a C# object. Large ORM-based solutions add additional complexity, and black-box much of what is happening behind the scenes.
What if there was a smaller, more efficient way to do object mapping without the overhead of an EF? Dapper to the rescue! Dapper is a micro-ORM whose core function is to reduce some of the ceremony of talking to a SQL database while leaving you in complete control! In this session, we walk through many of the typical use-cases for Dapper and why you might want to consider it for your current or next project.
Slides and more: https://consultwithgriff.com/dapper
About the Presenter
Kevin Griffin is an author, teacher, mentor, and consultant focusing on software development. He is also a 10-time Microsoft MVP, specializing in ASP.NET and web development. As the owner of Swift Kick, a software training and services company, Kevin specializes in helping businesses push their technology stacks into the 21st century. You can often find Kevin speaking at conferences and user groups across the country or blogging at http://kevgriffin.com. In his spare time, Kevin is the co-host of the popular 2 Frugal Dudes podcast.
Twitter: https://twitter.com/1kevgriff
HotChocolate - An Introduction to GraphQL for ASP.NET Core
Michael Staib
GraphQL is a great way to expose your APIs, and it has changed the way we think about consuming data over HTTP. Not only does GraphQL give us the power to ask for exactly what we want, but it also exposes data in a way that is more aligned with the way we think about data.
Over the last two years GraphQL has become more and more mainstream. The ecosystem has grown phenomenally and major players like Amazon, Twitter, Facebook and more are all committed to GraphQL.
But what is GraphQL actually? What are the benefits of using GraphQL it instead of REST?
Together we have a look at the core problems that we are facing with the traditional REST service layers, which still power most of the Web.
After we have a better understanding of GraphQL, we explore how we can build a GraphQL API with Hot Chocolate on ASP.Net Core. We look at things like Prisma filters and how we can get your existing infrastructure under this new service layer. We merge data from different sources like you did not think was possible by using the power of the GraphQL resolver concept.
HotChocolate and docs: https://chillicream.com/docs/hotchocolate/
About the Presenter
Michael Staib is the author of the Hot Chocolate project a platform for building GraphQL server and clients in .NET. For the last three years this open source project is his main focus. Apart from his work in the open source community Michael works as a consultant to help companies to move to GraphQL.
Michael loves all things .NET since it came out in 2002 and when GraphQL came out in 2015 he started putting these amazing technologies together. He enjoys sharing his knowledge by speaking at .NET user groups and international conferences. Moreover, Michael is blogging about GraphQL in .NET.
Michael is a Microsoft MVP and you can follow him on Twitter https://twitter.com/michael_staib