Keynotes
Leaders Are Made, Not Born
Leaders aren't born, they aren't hatched, and they don't apparate. Leadership is a journey, one that involves hard work, practice, and a deep understanding of not only your team members but also yourself. I've led teams large and small throughout my 30-year career and certainly made plenty of mistakes on the way, But I've learned to fail fast, iterate, and continuously improve to create high-performing teams across multiple verticals. In this session, I share what I have learned over the years being a leader and being led.
What you will learn:
- Qualities of effective leaders
- Ways to become an effective leader
- Mitigation for leadership blockers
Agile: You Keep Using That Word...
Much like the DOTCOM boom when everyone declared themselves a programmer, once David Norton (Gartner Research) declared agile mainstream on August 26, 2009, you can’t throw a stone without hitting someone who claims to be an Agilista. From the proliferation of “agile” frameworks and certifications to everyone who decided to hang out a shingle as a coach, it can be hard to remember the essence of being agile. In this talk, I remove the fluff and hyperbole and get down to the roots of what it means to be agile.
What you will learn:
- The four aspects of little "a" agile
- How to improve on being agile
- Mitigation of blockers
One Band - One Song: Building High-Performing Teams
Like the progression of a band moving from 5th grade to university, teams go through a series of growth steps. In this talk, I discuss the different phases of team dynamics, how to facilitate that growth, and what to watch out for. Plus, we will discuss some of the animals that can prevent that growth as well as how to corral them.
What you will learn:
- Tuckman's Forming, Storming, Norming, and Performing
- How teams improve to the next level
- How to mitigate blockers
Architecture
SOLID Design Patterns for Mere Mortals
Software design patterns have been around long before the MVC Framework gained momentum. In this session, we will start with a review of Robert C. Martin's (Uncle Bob) SOLID macronym. After building the proper foundation, we cover several design patterns, their C# implementation, and when and how they should be used in modern software development.
What you will learn:
- Get a better understanding of SOLID
- Leverage Design Patterns to solve common problems
- Specific implementations of SOLID Design Patterns
10 Software Design Patterns for Everyday Life
Software design patterns have been around long before the MVC Framework gained momentum. In this session, we cover 10 software design patterns and their C# implementation, and discuss how they should be used in modern software development.
What you will learn:
- 10 design patterns
- Leverage Design Patterns to solve common problems
- See specific implementations of various Design Patterns and how they support SOLID development
Web Development
Building Web Applications with ASP.NET Core MVC
n this session, I show how to build web applications with ASP.NET Core using the Model View Controller pattern. I cover .NET Core fundamentals, configuration, dependency injection, routing, controllers and action methods, model binding, validation, views, tag helpers, and much more.
- ASP.NET Core Fundamentals (DI, Configuration, Environmental Awareness, etc.)
- Data binding and validation, Routing, Controllers, and Action methods
- Views, Layouts, Templates, and much more!
Building Web Applications with ASP.NET Core Razor Pages
In this session, I will show you how to develop web applications using ASP.NET Core Razor Pages. I cover .NET Core fundamentals, configuration, dependency injection, routing, pages and action methods, model binding, validation, tag helpers, and much more.
- ASP.NET Core Fundamentals (DI, Configuration, Environmental Awareness, etc.)
- Data binding and validation, Routing and Page Handlers
- Views, Layouts, Templates, and much more!
Building RESTful Services with ASP.NET Core
In this session, we cover the power of building RESTful services with ASP.NET Core. From building and configuring the web host, dependency injection and the options pattern, environmental awareness and configuration, controllers and routing, implicit model binding and validation, followed by detailing functionality added when using the ApiController attribute, including binding source parameter inference and how to customize the provided behavior.
- Controlling the HTTP pipeline and returned JSON
- DI, Configuration, Environmental Awareness, Options Pattern
- the API Controller attribute, filters, plus much, much more!
Versioning and Documenting ASP.NET Core Services
Building an API with ASP.NET Core is only half the job. If you're API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it. During this session, you'll see how easy it is now to version and document APIs.
- Why and how to version APIs
- Using OPENAPI to document APIs
- Handling deprecations and updates to APIs
Building and Versioning RESTful Services with ASP.NET Core Deep Dive
In this two-part deep dive session, Phil will show you the power of building RESTful services with ASP.NET Core. We start at the top, with the philosophy of .NET 6 and ASP.NET 6. I then cover building and configuring the web host, dependency injection and the options pattern, environmental awareness and configuration, logging with Serilog, and controllers and routing. Phil will then cover explicit and implicit model binding and validation, followed by detailing functionality added when using the ApiController attribute, including binding source parameter inference and how to customize the provided behavior. The next major topics that he covers are versioning APIs, documentation with Open API, and making sure the two work well together.
- Foundations of ASP.NET Core
- Building RESTful services with ASP.NET Core
- Versioning and Documenting ASP.NET Core APIs
Securing Web Apps and APIs with IdentityServer
IdentityServer is an open source framework for building authorization servers that support a bunch of different authentication and authorization protocols, most importantly OAuth, OpenID Connect, and ADFS. In this session, you will learn about IdentityServer capabilities, how to set up IdentityServer to support a single ASP.NET Web Site or Web API, or to set it up as a central authentication server enabling Single Sign On (SSO) from all your client apps.
- How to set up and configure IdentityServer as a Single Sign On authentication server
- How to set up authentication and authorization in your Web APIs and MVC pages based on an IdentityServer sign in and access control tokens
- The options for different degrees of authorization logic in your apps
Workshop: Develop an ASP.NET Core Service and Website with EF Core
Interested in ASP.NET Core and Entity Framework Core, but not sure where to start? Start here with a full day workshop where you learn about building ASP.NET Core Web applications with the Model View Controller pattern and ASP.NET Core Restful services as well as building a data access layer with EF Core.
- Core features in JavaScript
- Important differences between JavaScript and C#
- Key similarities in JavaScript and C#
- Common pitfalls for those new to JavaScript
Hands on Lab: Develop an ASP.NET Core and EF Core App in a Day
Interested in ASP.NET Core and Entity Framework Core but not sure where to start? Start here with an all day Hands on Lab where you will build a complete solution using the latest development technology from Microsoft. Using Visual Studio 2019 and .NET 6 (or greater), you will build a data access library using Entity Framework Core, complete with repos and migrations. Next, you will build a ASP.NET Core web application, leveraging all of the latest that ASP.NET Core has to offer, including Tag Helpers, View Components, Dependency Injection, and more!
You will learn:
- The new project structure for .NET Apps
- Creating a data access layer with Entity Framework Core
- Initializing data for testing with EF Core
- Building a website with ASP.NET Core
- Configuring the HTTP pipeline and routing
- Using and creating Tag Helpers
- Creating and using View Components
- Leveraging Dependency Injection
Two Day Hands on Lab: Develop an ASP.NET Core Service and Web App with EF Core
Interested in ASP.NET Core and Entity Framework Core, but not sure where to start? Start here with a two day Hands on Lab where you will build a complete solution using the latest development technologies from Microsoft. You will build a data access library using Entity Framework Core, complete with repos and migrations. Next, you will build an ASP.NET Core Restful service, and finally you will build an ASP.NET Core web application, leveraging all of the latest that ASP.NET Core has to offer, including Tag Helpers, View Components, Dependency Injection, and more!
- Use Entity Framework Core to build the data access layer
- Use ASP.NET Core to build a RESTful service
- Use ASP.NET Core to build a web application
Entity Framework
Diving Deep Into Entity Framework Core
Entity Framework Core is the rewrite of Entity Framework, and is both evolutionary and revolutionary. In this session, we dive deep into using EF Core in real world applications.
- Key EF Core Features
- Deeper understanding of how EF Core works
- How best to utilize EF Core in applications
Agile - Processes and Engineering
Agile Failures: Stories From The Trenches
When agile first burst on the scene, there was a lot of discussion about how agile is not just a silver bullet, but THE silver bullet. But is it really? Even after the "mainstreaming" of agile, projects continue to fail. In this talk we look at a series of failed projects, examining the root causes, and the lessons learned from those failures. Fast failure and careful retrospectives is the best way to continuously improve.
Visualizing the Backlog with User Story Mapping
User Story Mapping is a process the visualizes your project, enhances transparency, and helps resolve scope contention. In this hands on exercise, we will jointly create a user map, clearly defining order, minimal marketable features, and release plans.
- Why user story mapping matters
- How to story map
- How to build sprint/release plans from story maps
Testing Code From The Pit Of Despair
Michael Feathers defines Legacy Code as any code that doesn’t have automated tests, and you agree that automated tests are an important facet of successful software development. Then it happens – you get your next assignment, and it’s your worst nightmare! You have to maintain and enhance a large application that has no tests in place, and there are parts that are just plain scary. Where do you start? Traditional Test Driven Development techniques don’t typically work, since they focus on an inside-out development paradigm.
I will show you the patterns and practices that will help you turn the scary big ball of mud into a tested code base.
Unit Testing for Mere Mortals
As a developer you take pride in your work (as you should). So it's frustrating when bugs happen. How do you prevent them? Well, the honest answer, is you can't - at least not 100%. But you can make sure your code does what you expect it to do! In this session, I show you TDD (Test Driven Development), BDD (Behavior Driven Development), and TED (Test Eventual Development). I will also show you their strengths and weakness, and how to decide which type (or combination of types) to use in different scenarios.
Mocks, Stubs, and Dependency Injection, Oh My!
So you aren't writing any code without having tests in place…well, except for those tricky things like web services, database calls, and that section of code that no one wants to touch since it's a pile of spaghetti. I start with a big ball of mud and refactor that using dependency injection, fakes, stubs, and mocks. I will show you how to use Mocks and Stubs to isolate the system under test and write cleaner, more effective tests.