NDC Minnesota has been a staple in Omnitech's learning environment for the past couple of years. It's something that we look forward to, a place our developers can go to learn new and exciting skills, and to bring that knowledge back and share it with the rest of our team.
This year NDC looked a little bit different. Typically, NDC Minnesota is held in Minneapolis/St. Paul. This time, however, due to Covid-19 concerns, the conference went virtual. Instead of traveling to Minnesota, the four engineers we sent to the conference tuned in from Omnitech.
Despite the virtual setting, our engineers still learned a lot and had a great time. During the four days of the conference, they attended a variety of workshops. Topics covered included Azure, Docker, Kubernetes, Open Id Connect, Oauth, gRPC, GraphQL, Test Driven Development, new C# language features, C# memory, Cypress UI Testing, and API Management. Here are some of the key takeaways they had throughout the conference.
Throughout the conference, I attended workshops that focused on .NET Core in Azure with Docker and Kubernetes, GraphQL in .NET Core, and Authentication and Authorization in .NET Core.
The highlight of the conference for me was the two-day workshop on authentication and authorization. It was led by Brock Allen, one of the co-authors of IdentityServer. IdentityServer is a framework for .NET Core that plugs into an application's middleware pipeline and implements the OpenID Connect and OAuth 2.0 spec.
We focused on foundational concepts of identity management in web development during the first day of the workshop. We learned about cookies, sessions, roles, policies, and how .NET has handled these concepts throughout the years. Then, during the second day, we transitioned into the challenges that applications face with modern authentication requirements and how OpenID Connect and OAuth 2.0 have evolved to handle these scenarios. We learned about the different OIDC and OAuth flows and
how to setup IdentityServer4 in .NET Core. By the end, we had gained a solid understanding of how to architect distributed identity solutions.
This year's NDC was different than my previous experience. Usually, a conference is broken into two parts: pre-conference workshops and conference sessions. The workshops allow for a depth of knowledge in a narrow topic. The conference sessions allow for a breadth of knowledge across a range of topics. The sessions will enable you to get a view of trends within the industry.
Going to an all workshop format was an interesting change of pace, allowing me to deep dive into Test Driven Development, GraphQL, Docker, and Kubernetes. The Docker and Kubernetes workshop was easily my favorite as it was packed with information. I'd done some experimentation with Docker in the past and had grown frustrated with the command line errors and lack of documentation around solving them. This workshop was a refreshing re-introduction. Docker has made significant advances in the last few years, and the barrier the entry has gotten much lower with the new Linux Subsystem in Windows (WSL2).
Professionalism and engineering were two major unspoken themes at NDC Minnesota 2020. Each talk I attended informed me on new technologies in our industry and gave me some pointers on when and why I might use them. Due to COVID-19, the conference was hosted online instead of in person. Though we couldn't walk around, see new places, and meet people in the same organic fashion, we could still learn many valuable things and meet some great people.
One of the most valuable workshops I attended was .NET Core as Cloud Native. The workshop was led by Brady Gaster (Senior Program Manager for the SignalR team at Microsoft) and Scott Hunter (Director of Program Management, .NET). We learned about the new unified plan for .NET coming with .NET 5 in November 2020 and the road map for .NET 6, which is planned for November 2021. These updates included a demo Scott Hunter gave on a new tool from Microsoft called Tye that will aid in the process of deploying microservices, performance improvements that .NET 5 will bring, and new C# 9 language features.
In addition to the updates on Microsoft's development platform, we also had a workshop on integrating Docker and Kubernetes in Azure Kubernetes Service. The hands-on approach to this technology highlighted how powerful containers can be, but also the complexity of using a microservice architecture. There are many ways to configure Kubernetes and Brady said that even after a couple of years of working with it, it can still be confusing. He also insisted that "Kubernetes is not the destination." This started to resonate with me after seeing the simplicity of using Tye to deploy to Kubernetes.
The sheer amount of topics that we dove into left me with a lot of excitement on the topics of Cloud, Containers, and .NET. I have many new subjects to research and watch out for in the coming year. The Omnitech team is always looking for new ways to improve and adapt to technology's changing world. We are constantly learning new things and feeding that knowledge back into our community. I am grateful for the opportunity to learn and connect at NDC, and I am excited to bring some nuggets of knowledge back to my team and clients.