Abstracts

.NET Musings

Abstracts

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.

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 all of the people who decided to hang out a shingle as a coach, it can be hard to remember what is 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.

Survive the Waterfall

Scrum and XP have found a strong following in the development community. But most non-development groups (such as Web Administrators, Production Support, Security, Testing, and Users/Stake Holders) inside the enterprise are not only far from agile, they are not trying to be more agile. In this session, I use real experiences from large enterprise development projects to teach you how to effectively work with non-agile teams. Instead of trying to "convert" them, I discuss strategies to adapt to their needs while remaining agile in the development realm.

  • How to work with traditional PMO
  • How to work with dev-ops and infrastructure teams
  • Moving QA, designers, etc. to agile

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, I will show you several design patterns, their C# implementation, and when and how they should be used in modern software development.

  • Get a better understanding of SOLID
  • Leverage Design Patterns to solve common problems
  • See specific implementations of various Design Patterns and how they support SOLID development

10 Software Design Patterns for Everyday Life

In this session, I show 10 software design patterns, their C# implementation, and discuss they should be used in modern software development.

  • 10 design patterns
  • Leverage Design Patterns to solve common problems
  • See specific implementations of various Design Patterns and how they support SOLID development

C#

What's New in C# 7.X with a touch of C# 8

C# 7, 7.1, 7.2 and 7.3 brought great features into the language. In this session, I show you all of the new features and when to use them. I also cover what's coming in C# 8.

  • Pattern Matching
  • Tuples
  • Local Functions
  • And more!

Web Development

Moving to ASP.NET Core 2.x

In this session I show you how ASP.NET Core implements the Model View Controller pattern for Web Applications and the Model Controller pattern for Restful services. I cover convention over configuration, implementing Controllers and Action methods, Views (including partial views and layouts), Routing, and much more. This session is designed for developers new to the ASP.NET MVC and WebAPI frameworks.

  • The ASP.NET Core Model View Controller pattern
  • Implementing the HTTP Pipeline
  • Implementing Controllers and Actions
  • Views, Layouts and Partials
  • Plus much, much more!

Diving Deep Into ASP.NET Core 2.x

ASP.NET Core has changed development of web applications and Restful services in revolutionary ways.  In this session I show you what you need to know to move to ASP.NET Core.

  • New ASP.NET Core features such as tag helpers and view components
  • Using DI with MVC
  • Creating RESTful services with ASP.NET Core

Securing ASP.NET Core Apps with ASP.NET Identity

One topic often pushed to the side when talking about developing web application and services is security. The reality is you need to secure your application from the client and server side. In this session, you will learn about what you can and can't do with security in ASP.NET Core Web Applications and ASP.NET Core Restful Services.

  • The new Razor Page library for ASP.NET Identity
  • Customizing the Identity Entities
  • Third party authentication
  • Two factor authentication

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

Versioning ASP.NET Core APIS

Building an API with ASP.NET MVC in .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. During this session, you'll see how easy it is now to version APIs using functionality built into ASP.NET Core.

  • Why versioning an API is important
  • How ASP.NET Core supports API Versioning
  • How to decide what schemes for versioning are the best fit for your company/API

JavaScript for the C# (and Java) Developer

Yes, it has curly braces. Yes, it has semi colons. And you can write C# like code in JavaScript. But should you? JavaScript programming has many paradigms that make it very different than writing typical managed code.  In this session I show you, the C# programmer, what you need to know to take your JavaScript to the next level.

  • Core features in JavaScript
  • Important differences between JavaScript and C#
  • Key similarities in JavaScript and C#
  • Common pitfalls for those new to JavaScript

Workshop: Develop an ASP.NET Core 2 and Entity Framework Core 2 App in a Day

In this full day workshop, we will build an application in a day using Entity Framework Core 2 code first for data access, create a ASP.NET Core 2 Web Service to surface the data, and an ASP.NET Core 2 Web Application to present it.

  • Use Entity Framework Core 2 to build the data access layer
  • Use ASP.NET Core 2 to build a RESTful service
  • Use ASP.NET Core 2 to build a web application

Hands on Lab: Develop an ASP.NET Core 2.x and EF Core 2.x App in a Day

Interested in ASP.NET Core 2.x and Entity Framework Core 2.x, 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 2017 (15.8 or greater) and .NET Core 2.1 (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 Core 2.x Apps
  • Creating a data access layer with Entity Framework Core 2.x
  • Initializing data for testing with EF Core 2.x
  • Building a website with ASP.NET Core 2.x
  • Configuring the HTTP pipeline and routing
  • Using and creating Tag Helpers
  • Creating and using View Components
  • Leveraging Dependency Injection
    Attendee Requirements:
  • You must provide your own laptop computer for this hands-on lab.
  • You will need to have Visual Studio 2017 version 15.8+ installed (any edition). Visual Studio 2017 15.8+ Community Edition can be downloaded from https://www.visualstudio.com/downloads/. When installing, make sure to select the "ASP.NET and web development” and “.NET Core cross-platform development" workloads.
  • You will need to install the x64 versions of the SDK and Runtime (2.1.300+).  They can be downloaded from https://www.microsoft.com/net/download/core. Confirm the install by opening a command prompt, enter "dotnet --version" (without the quotes) - you should see 2.1.300 (or greater). Note: The trailing zeros (0) are required. Confirm the runtime version by typing "dotnet --list-runtimes" (without the quotes) and look for "2.1.0" (or greater).
  • You also will need to have SQL Server Express 2014 or later. Visual Studio 2017 15.8+ installs SQL Server Express LocalDb by default, and this is perfect for this HOL. If you need to install SQL Server Express you can install from here: https://msdn.microsoft.com/en-us/library/hh510202.aspx
  • Optionally, install SQL Server Management Studio (SSMS) installed. SSMS can be installed from the SQL Server 2016 Express installer, located here: https://msdn.microsoft.com/en-us/library/hh510202.aspx.
  • Finally, you need to download the starter files and Lab documents for this HOL, located in https://github.com/skimedic/dotnetcore_hol/tree/master/2.1.

2 Day Hands on Lab: Develop an ASP.NET Core 2.x Service and Website with EF Core 2.x

Interested in ASP.NET Core 2.x and Entity Framework Core 2.x, 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 technology from Microsoft. Using Visual Studio 2017 (15.8 or greater) and .NET Core 2.1 (or greater), 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!

    You will learn:
  • The new project structure for .NET Core 2.x Apps
  • Creating a data access layer with Entity Framework Core 2.x
  • Initializing data for testing with EF Core 2.x
  • Building a Restful Service with ASP.NET Core 2.x
  • Building a website with ASP.NET Core 2.x
  • Configuring the HTTP pipeline and routing
  • Using and creating Tag Helpers
  • Creating and using View Components
  • Leveraging Dependency Injection
    Attendee Requirements:
  • You must provide your own laptop computer for this hands-on lab.
  • You will need to have Visual Studio 2017 version 15.8+ installed (any edition). Visual Studio 2017 15.8+ Community Edition can be downloaded from https://www.visualstudio.com/downloads/. When installing, make sure to select the "ASP.NET and web development” and “.NET Core cross-platform development" workloads.
  • You will need to install the x64 versions of the SDK and Runtime (2.1.300+).  They can be downloaded from https://www.microsoft.com/net/download/core. Confirm the install by opening a command prompt, enter "dotnet --version" (without the quotes) - you should see 2.1.300 (or greater). Note: The trailing zeros (0) are required. Confirm the runtime version by typing "dotnet --list-runtimes" (without the quotes) and look for "2.1.0" (or greater).
  • You also will need to have SQL Server Express 2014 or later. Visual Studio 2017 15.8+ installs SQL Server Express LocalDb by default, and this is perfect for this HOL. If you need to install SQL Server Express you can install from here: https://msdn.microsoft.com/en-us/library/hh510202.aspx
  • Optionally, install SQL Server Management Studio (SSMS) installed. SSMS can be installed from the SQL Server 2016 Express installer, located here: https://msdn.microsoft.com/en-us/library/hh510202.aspx.

Entity Framework

Moving to Entity Framework Core 2.x

Writing data access code is tedious and mundane.  The simple act of creating the CRUD (Create, Read, Update, Delete) operations doesn't add business value to your application, but it is an absolute necessity.  In this session, I show you the core features of EF Core 2 and how it can save you valuable time that is much better spent on providing business value and compelling features into your applications. This session is designed for developers new to Entity Framework and ORMs

  • Getting started with Entity Framework Core 2
  • Querying databases with LINQ
  • Creating, Updating, and Deleting records with EF Core
  • Handling Concurrency and Transient Errors
  • Plus much more!

Diving Deep Into Entity Framework Core 2.x

Entity Framework Core is the rewrite of Entity Framework, and is both evolutionary and revolutionary. In this session, I show you the core features of EF Core 2.x, how (and when) to leverage the new features, and to move to the improved features from Entity Framework 6. This session is designed for developers familiar with Entity Framework or ORMs in general.

  • Feature comparison between EF 6 and EF Core
  • Changes to features carried over from EF 6
  • New features introduced in EF Core
  • Improvements in performance over EF 6

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.

Workshop - Applied Agile Workshop

“You got your agile processes in my engineering practices!” “Well, you got your engineering practices in my project management!” All too often teams working towards agility stand divided between the processes (such as Scrum and Kanban) and the engineering practices (such as Extreme Programming) and completely forget what agile is really about. Agile is more than the latest methodology or certification. I will show you that the way to be truly agile is to blend concepts together into a single great harmony.

  • The ABC's agile and what it really means
  • The pluses and minus of popular agile methodologies
  • Answers to the questions that you put forth

Soft Skills

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.

Windows Client Development

Windows Presentation Foundation for Developers

WPF has now been out for almost 10 years. Microsoft is ramping up the WPF team, and there's a renewed interest in WPF development.  After all, what else are you going to use to build client applications for Windows users?  If you've looked at WPF, you know it is vastly different than Winforms.  In this session, I dive into what’s important to developers, including Layout, Commands, and a deep dive into Binding and Validation.

  • Learn the strengths of WPF and when to use it
  • Learn the different layouts in WPF
  • Learn how to maximize data binding in WPF

Implementing M-V-VM (Model-View-View Model) for WPF

Now you are writing WPF applications, and wondering – what is all this code in the code behind? Shouldn’t we be doing something different? Our cousins working with ASP.NET MVC don’t even have a code behind! The answer is YES – you should indeed be doing it differently. The M-V-VM pattern is a refinement of the Presentation Model pattern (first documented by Martin Fowler). I will show you what you need to know to implement M-V-VM pattern in WPF for building SOLID WPF applications that are testable, reusable, and maintainable. Additionally, I'll show you how to implement MVVM with generated code, such as Entity Framework.

  • What the MVVM Pattern is and when it should be used
  • How the WPF framework supports the MVVM pattern
  • How to implement MVVM in generated code, such as from Entity Framework
Managed Windows Shared Hosting by OrcsWeb