IMPORTANT: Workshops are an optional addition to the standard attendee ticket. Adding a workshop to your registration incurs an additional $90 charge.

Workshop sessions are on Wednesday, October 18th and are either all-day sessions or half-day sessions starting at 8:00am. Please be respectful of the speaker and other attendees by showing up on time and attending the workshop you selected during registration.


Angular Performance Checklist

Speaker: Paul Spears

Half Day Workshop - Afternoon

Want to see Angular animate 2500 objects at 60 FPS? 

Angular is incredibly fast. However, its power is easy to misuse, often resulting in slow user interfaces. In this workshop we'll examine Angular's performance capabilities by turning a sluggish application into a buttery smooth thing of beauty.

Did I mention that the template for animating the 2500 objects is only 10 lines long?

One of the first traps that students encounter when building applications to scale is performance. Angular is packed with all manner of features that developers can leverage to get the most out of their applications. We'll take a look at some examples of how fast Angular renders changes and push the limits of its change detection mechanism. Then we'll experiment with some code to demonstrate first hand how developers can improve their applications. Along the way we'll touch:

  • Optimizing Observables by picking the right operators
    • share()
    • distinctUntilChanged()
    • take()
    • withLatestFrom()
  • Change detection strategies
    • OnPush
    • changeDetectorRef
  • Template binding strategies
    • ngFor trackBy
    • warnings on custom pipes
    • precomputing data bindings
  • Building with AOT and prod mode

Building Your First Skill for Alexa

Speaker: Jeff Blankenburg

Half Day Workshop - Afternoon

The Amazon Echo has become incredibly popular as the "device in your kitchen." It can set timers, calculate ounces to tablespoons, and play music, all from interactions with your voice. What you may not have noticed, however, is that you can also build your own skills for Alexa, using node.js!  The Amazon Alexa team will be on-site at DevUp to help you bring your very first voice skill to life. We will show you how to think about voice design, and what a conversational user interface looks like. You'll leave this pre-compiler with a working Alexa skill that is ready to submit for publication, but more importantly, the knowledge you need to build the next one. This session will be very hands-on and technical, but anyone should be able to participate.

Before you arrive, you will need to set up a couple of things:

  1. An account at http://developer.amazon.com (we recommend using the same credentials you use at Amazon.com)
  2. An account at http://aws.amazon.com
  3. A laptop with a browser.

Developing API's with C# and ASP.NET Core

Speaker: Kevin Grossnicklaus

Full Day Workshop

This all-day workshop will walk developers through the design and implementation of a robust API layer using Visual Studio 2017, C#, and the ASP.NET Core stack. Today's client-centric architectures frequently involve a mix of UI frameworks such as Angular, React, or even native mobile apps targeting iOS, Android, or Windows devices. One common requirement for each of these modern application frameworks is the need to communicate data back to the server via an easily accessible API layer. As developers who frequently work on both the API and the client, the overall development process needs to support the ability to quickly add code to both layers and to have an efficient debugging experience. This class will walk all attendees through designing such an API on the Microsoft stack that is flexible, easy to debug, easy to extend, and supports a number of advanced features commonly required by today's architectures. As the class progresses we will work through the full implementation of a secure API that demonstrates a wide variety of real-world scenarios. We will discuss and demonstrate a clean, back-end architecture isolating all data access into an organized repository layer utilized by higher-level business services. We will also demonstrate how this API can be utilized across a number of UI frameworks including an SPA written in Angular and a cross-platform mobile application developed in Xamarin. The focus will be on setting up an efficient development process between these clients and the API. All students will be encouraged to implement all features locally and the overall content will be presented in a very "hands on" manner. All code and sample projects will also be provided via a public GitHub repository so that attendees can leverage the core concepts in their own projects upon completion of the course.

API topics to be covered and demonstrated include:

  • API Structure and Architectural Considerations
  • Security
  • Json Serialization
  • Visual Studio Project Setup
  • Dependency Injection
  • ViewModels and Mapping
  • API Documentation
  • Caching
  • Data Access Patterns
  • State Management
  • Versioning
  • Debugging APIs
  • Unit Testing APIs
  • Deployment and Hosting

Gaining the Knowledge of the Open Data Protocol (OData) v4

Speaker: Chris Woodruff

Full Day Workshop

The Open Data Protocol (OData) is an open protocol for sharing data. It provides a way to break down data silos and increase the shared value of data by creating an ecosystem in which data consumers can interoperate with data producers in a way that is far more powerful than currently possible, enabling more applications to make sense of a broader set of data. Every producer and consumer of data that participates in this ecosystem increases its overall value.

OData is consistent with the way the Web works -- it makes a deep commitment to URIs for resource identification and commits to an HTTP-based, uniform interface for interacting with those resources (just like the Web). This commitment to core Web principles allows OData to enable a new level of data integration and interoperability across a broad range of clients, servers, services, and tools.

In this workshop Chris Woodruff will provide an in depth knowledge to this protocol and how to implement an OData service on Windows using ASP.NET Web API.


Getting Your Team Unstuck! Tips and Tricks for Blasting Through Common Setbacks and Becoming More Agile

Speaker: Angela Dugan

Half Day Workshop - Morning

Whether you've been working on an agile team for 6 months, or 6 years, the same obstacles tend to arise to trip us up over and over. Maybe your retrospectives feel more like a death march and no one is participating any more, or your daily stand-ups have bloated into 25 team member status meetings, or you have a QA team that feels buried by your fast-paced development team. These situations are unfortunately very common, and they lower team morale, lead to abandoned transformation initiatives, and ultimately your product and customers suffer because of it. But there's a better way! As an agile coach and consultant, I help software organizations stop the bleeding, mature their process, and develop into high functioning agile teams. And to be clear, I've made mistakes as well! I'd like to share with the audience my own experiences, including strategies that succeeded and failed in hopes of leading them down the path to getting their own teams "unstuck". I'll also give attendees an opportunity to share their own challenges, so that we can leverage those strategies to give them ideas for blasting through their own roadblocks.

Learning points:

  • Recognizing when your process, product, or people have gone off the rails by identifying "smells"
  • Review some tools and strategies that teams can leverage when they need a cognitive reset to get them back on track
  • How to apply tools and strategies in your own unique environments.

Going all in with functional C#

Speaker: Ed Charbeneau

Half Day Workshop - Morning

In this workshop attendees will learn about functional C# by building a poker scoring game using C# 6 features. We'll learn what new features were added in C# 6 to support functional programming. The pros/cons of functional vs. imperative programming will be explored to understand the strengths of each style

In this workshop we'll learn:

  • Immutable Types
  • Basic LINQ concepts
  • Advanced LINQ concepts (Yeild)
  • Func Delegates
  • Expression Bodied Members
  • Extension methods and pipe-lining
  • Thread Safe Collections

Hands on Lab: Develop an Entity Framework Core and ASP.NET Core MVC App in a Day

Speaker: Philip Japikse

Full Day Workshop

Interested in .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 2017, you will build a data access library using Entity Framework Core, complete with repos and migrations. Then you will package the data access library into a custom NuGet package for distribution. Next, you will build a Core MVC site, leveraging all of the latest that Core MVC has to offer, including Tag Helpers, View Components, Dependency Injection, and more!

You will learn:

  • The new project structure for .NET Core Apps
  • Creating a data access layer with Entity Framework Core
  • Initializing data for testing with EF Core
  • Creating NuGet packages from .NET Core projects
  • Building a website with ASP.NET Core MVC
  • 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 Installed (any edition).
  • You also need to have .NET Core 1.1 installed.The tooling installs with Visual Studio 2017, but the SDK must  be downloaded from https://www.microsoft.com/net/download/core#/current. The "Current" version and not the LTS (Long Term Support) version is needed for this HOL.
  • Finally, you will need to have SQL Server Express 2016 Local DB installed. This is installed with VS2017 by default, but can also be installed from the SQL Server 2016 Express installer, located here: https://msdn.microsoft.com/en-us/library/hh510202.aspx.
  • Although not necessary to download beforehand, the starter files for this HOL are located in https://github.com/skimedic/dotnetcore_hol (one of my GITHUB repos)

Introduction to UX Research Methods

Speaker: Danielle Cooley

Full Day Workshop

In this course, we will cover the following:

  • The difference between formative and evaluative UX research
  • Why formative research is important
  • Different types of bias and how to avoid introducing them into any research method
  • Formative Research Methods:
  • Fundamentals of survey design, including exercises
  • Best practices for one-on-one interviews, including practice interviews
  • Various protocols for diary studies (also known as journaling studies)
  • Card Sorting - what it is and how to execute one, including hands-on setup of a study in OptimalSort
  • Tree Testing - what it is and how to execute one, including hands-on setup of a study in TreeJack
  • The importance of field observation, different subtypes of fieldwork, and practical tips and tricks for conducting field studies
  • Analysis and reporting techniques for all of the above
  • Typical management challenges to the need for UX research and counterarguments

Playing with Fire : Build a real-time application with Firebase

Speaker: Michael Dowden

Full Day Workshop

Firebase is a Google Platform as a Service (PaaS) which makes writing and deploying web and mobile applications faster and easier than ever. Now a front-end web developer can create fully-featured applications without needing to manage servers or infrastructure.

Come learn how easy it can be to take your app idea from concept to production, using the fully-featured Firebase platform

In this workshop you will build your own Twitter-like social messaging application, start to finish, as you learn how to:

  • Use the Firebase real-time object database
  • Implement Firebase security rules
  • Organize your data to take advantage of the Firebase strengths
  • Add authentication using an OAuth provider
  • Use the Firebase CLI to deploy a web application

Refactoring Legacy Code

Speaker: Michael "Doc" Norton

Full Day Workshop

You know that area of the code nobody wants to touch? It's been sitting there forever, just doing it's thing. It is a functioning shanty town of code. And you know, as everyone on the team knows, that there is no such thing as a simple change to this code. Because the "solution" is coupled in the strangest ways, code seemingly separate from the module you're working on breaks when you make the most mundane of changes.

But today, you picked up a user story that, try as you might, you cannot figure out a way to implement without either digging into the internals of the shanty town or bolting another hovel onto the side. You can't keep adding onto this mess. You're going to have to roll up your sleeves and fix it. But how? One change breaks 2 other things, which when modified each break 2 more. You're destined for a path of exponential brokenness that will take weeks to fix and when it's all done, you have to make one huge commit.

No tests. Crappy Code. And a story you can't seem to jam into the thing without breaking it (more).

Ugh.

In this hands-on workshop, you will work with others to establish a Golden Master, Create some Characterization Tests, and use the Mikado Method to refactor messy legacy systems. Along the way, you'll explore common refactoring patterns and other techniques for dealing with legacy code systems.


Up and Running with Angular

Speaker: Justin James

Full Day Workshop

If you have ever wanted to code an application with Angular this is your chance. Join us for a fun filled day of learning Angular in this hands-on workshop. You will go from 0 to 60 with your Angular knowledge and be able to create our own Angular applications by the end of this workshop. We will start with a new project and continue to build up the project until we have a full application at the end.

Topics Covered

  • What is Angular and the different parts that make up Angular?
  • Angular CLI Overview
  • Angular project layout overview
  • Creating common components like headers, footers, and menus.
  • Applying CSS to just a single component vs the whole site
  • Creating new components (pages)
  • Routing between components (pages)
  • Calling an external http service
  • Preparing your application for deployment
  • Adding authorization checks to routes (if time permits)
  • Testing overview (if time permits and our brains aren't already full with Angular knowledge)

Pre-Requisite Knowledge:

  • Html and CSS
  • Understanding of how events like click work in Html/JavaScript
  • TypeScript is helpful but we will cover the needed knowledge if you do not have any TypeScript experience

Pre-Work:

  • Node LTS 6.x (https://nodejs.org)
  • Visual Studio Code (https://code.visualstudio.com)
  • Angular CLI (npm install -g @angular/cli)
  • Create a new Angular project using the Angular CLI
    • Open Command Prompt or Terminal
    • Navigate to c:\ on Windows and ~/ on Osx
    • Run: mkdir projects
    • Run: cd projects
    • Run: ng new ng2ws --style scss --routing
    • Run: ng serve
    • Open browser and navigate to http://localhost:4200 and you should see the default web page for your Angular application