Nebraska.Code() Sessions

“JavaScript” is Not a Dirty Word

If you're an ASP.NET Web or Client Side Developer, the name "JavaScript" may induce feelings of dread or even terror. It's weird. It's not type-safe. It appears to be a bit flaky. It's hard to debug. Heck, it isn't even compiled! Besides, I have all these nifty ASP.NET controls that take care of all that for me, right?

Thanks to client side libraries like jQuery, Angular, and others, JavaScript is experiencing a renaissance. It's evolved from that weird browser language you used to use because you had to, to a powerful tool for creating web applications with richly featured client-side user interface. But it doesn't stop there; JavaScript is everywhere from server side code to hybrid mobile applications to IOT devices. If you're a .NET developer who's avoided JavaScript, it's time to jump back into the pool! This session will explain some of the key difference between JavaScript and C#/VB.NET, what the major JavaScript frameworks are and what they do, and show you how to take advantage of the power of JavaScript in your ASP.NET application.

Speaker

Breakout Session

A beginners guide to Computer Vision

Computer Vision is at the heart of the coming Mixed Reality future and is an important skill to be aware of and even dive into! As developers we are lucky to have a rich resource that is OpenCV that makes it straightforward to learn core tenants of computer vision. I will use Python to demonstrate power features of OpenCV such as image tracking, Snapchat like filters, and face detection. I will then go into how OpenCV can be utilized in iOS and Android applications to add power (and fun!) to a wide array of applications.

Speaker

Breakout Session

A JVM Testing Showdown: JUnit5 vs. Spock vs. Spek

After 10 years of stagnation in unit testing the JVM, there are finally some competitors vying to unseat JUnit 4's position atop the unit testing throne. Among these are newcomers JUnit 5 and Spek, as well as the more established Spock Framework. This presentation will cover the strengths and weaknesses of each of these frameworks while testing the same production code.

A large part of the differences in the three frameworks are the backing programming languages. The presentation will showcase how it is possible to test the same production code with Kotlin (Spek), Groovy (Spock), or Java (JUnit 5).

This presentation will also briefly touch on how the inovations in the JavaScript testing community have impacted these newer testing frameworks.

Finally, the presentation will cover how to start writing tests with these new frameworks in a legacy application.

Speaker

Breakout Session

A Look at Code Obfuscators

Ever wonder how a code obfuscator works? Are you curious to see what happens when it alters the compiled code of an application? We’ll look at one of the most popular .NET obfuscators, Dotfuscator Professional from Preemptive Solutions. It has a lot of features found in other similar applications like code injection, method renaming, and string encryption, and we’ll look at how those affect the code along with problems they cause. Along with this, there are new features which help prevent tampering and debugging we’ll explore in additional seeing how it can phone home in the event of an attack. Of course, no talk on security would be complete if we didn’t explore how to bypass some of those counter measures too!

Speaker

Breakout Session

A Primer on Neural Networks

I’m sure you’ve at least heard about neural networks, but maybe you wonder what exactly is a Neural Network. This talk will take you gently into the machine learning branch of statistics with neural networks. With examples and simple breakdowns about the math involved that anyone can follow.

Speaker

Breakout Session

A Serverless WebApp Deployed to AWS as Code

In this session, we will show you how to deploy a simple (yet functional) serverless webapp to Amazon Web Services (AWS) using the Everything-As-Code approach. We will begin with a short review of the architecture itself, highlighting the AWS Products used. Next, we will deploy the code the builds it all, showing you the AWS Console approach first. The AWS Console is not code though, so we will also show you the code-centric approach (spoiler: we are using a script for this). The deployment takes some time to complete, so while we wait, we will review the CloudFormation template(s), resources, and tools used to build this solution. If all goes well, we will have a functioning webapp. We will close out the demonstration by showing a some updates made using the Everything-As-Code approach.

Links will be provided for the entire code base used during this session (hosted on GitHub). We may even have some experts from AWS there to answer a few questions.

Speaker

Breakout Session

A Stroll Around C# 7

Microsoft introduced several new exciting features to C# in version 7. Come listen about what they're including, and how these new features will affect how you program. We'll talk about everything from Throw Expressions to Pattern Matching along with some discussions about what they could have done differently, where some of these ideas came from and some neat hacks with the new features along the way. It'll be a fun time had by all, and if not it'll be 60 minutes of your life you won't get back (but we hope not).

Speaker

Breakout Session

Agile 101 - Just the basics

Have you been considering adopting agile but are getting lost in terms or how to get started? Maybe you're ready to go but not sure how to approach your organization? Or even have attempted agile but it just didn't seem to help?

Come join us for a workshop designed to get you moving. We'll be discussing just what is agile and why is it different from other software lifecycles. We will introduce you to the nuts and bolts of agile so you can sound like a pro. Finally, we'll talk about what is the right approach for introducing agile into your environment.

Come prepared to learn and participate. This workshop doesn't require any experience in agile. If you're just beginning (or about to) you will fit right in. There is no technical skillset required so if you're a manager/exec, business analyst, developer, tester, etc., you'll have fun. Presented by the Lincoln Agile Community.

Half-day Workshop

Ahead of the Pack: Guidelines for an Agile Architecture

Agile development often focuses on immediate concerns: what am I doing now, or, at most, in this sprint? Even in situations where developement is Agile, architecture is often… not.

Ahead of the Pack is an approach to architecture running only one or two steps ahead of development, with the same level of focus: what feature am I describing for the developers right now? Ahead of the Pack means descibing objects—or database tables, or other discrete entities—in terms of their relationship with what has already been developed, so that updates to the architecture do not fundamentally modify what has already been built—or what has already passed quality assurance.

We draw examples from real applications, and provide a glimpse of future directions.

Speaker

Breakout Session

An Opinionated, Maintainable REST API Architecture for ASP.NET Core

Writing a brand-new RESTful API using ASP.NET has never been easier, or so you’ve been led to believe. Create a project, write a few models, and scaffold – instant API for your website! While convenient, this leads to a lot of pain as your API scales. Testability and maintainability become more and more difficult as your codebase continues to expand. Eventually, you’re left with a huge mess of code and zero separation of concerns.

In this session, Spencer will provide a highly-opinionated and easy-to-learn pattern for creating scalable, maintainable APIs powered by ASP.NET Core. Attendees will learn about dependency injection, validating requests, executing requests via services, error handling, and versioning strategies to make sure your API lasts for the long haul.

Speaker

Breakout Session

Angular vs. React: A live demonstration, comparison, and discussion

Are you thinking of bending to peer pressure and diving head-first into learning Angular? Are your "other" friends telling you React is the framework you should choose?

This session will provide developers with a quick introduction to both React and Angular 2. We will provide a demonstration of a basic application written in both frameworks. This will give attendees a great, side-by-side comparison to see similar concepts implemented in both. Both application will support a similar build/development process and will utilize TypeScript as the implementation language.

Finally we will share information on what type of tools support you can expect with either framework, what their respective communities look like, and what the impact of choosing either one might be.

Just a warning to the curious...you may not find as many differences between these frameworks as you think.

Speaker

Breakout Session

AOP: Add a new Aspect to your Java Programming

Aspect-Oriented Programming (AOP) complements Object-Oriented Programming (OOP) by providing another way of thinking about program structure. The key unit of modularity in OOP is the class, whereas in AOP the unit of modularity is the aspect. We'll talk about AOP and its concepts including Aspect, Pointcut, and Advice. Then we'll use Spring AOP to put these concepts to use in a Java application.

Speaker

Breakout Session

ASP.NET MVC & Identity: The Things You Were Never Told

Following the quick start examples it is trivial for a developer to stand up a new ASP.NET MVC application and use ASP.NET identity to handle user authentication and authorization. However, following these tutorials there are many important details that are left out. How do you work within a single DB Context? How do you share your data model with a project outside of ASP.NET MVC? How do you use Dependency Injection with Identity? How about displaying the users name on each page load?

This talk goes into all of the details that you need to truly SUCCEED with ASP.NET MVC and Identity. By sharing a big set of lessons learned, and other helpful insight your next project should be much easier to get off the ground!

Speaker

Breakout Session

Automating Docker-based Tasks in the Cloud using AWS Batch

Batch processing is a common, powerful pattern for high-CPU background workloads. Companies often use it for advanced simulations, rendering, media transcoding and processing, deep learning, and more. At Hudl, we're using AWS Batch to manage a video processing pipeline that includes a GPU-based deep learning algorithm.

AWS Batch is a recent addition to Amazon's cloud platform that makes it very simple to define and execute tasks without worrying about the infrastructure needed to make it happen. Once you define a task by providing a Docker image and necessary parameters, you can create hundreds of thousands of jobs, and let Batch deal with scaling, parallelization, and managing dependencies.

In this talk I'll walk through setting up Batch jobs (including some basic Docker images and everything on the Batch side), how Batch handles scheduling and dependencies, describe scenarios where Batch excels, and touch on some pain points we've experienced so far.

Hudl is still early in the stages of using it, but so far it’s proven easy to use and very adaptable to what we need. We’re planning to move more of our workloads into batch, including thumbnail generation, video transcoding and processing, PDF generation, and more.

Speaker

Breakout Session

AWS Lambda Signal Corps: Zombie Apocalypse Workshop

Zombies!
Zombies have taken over major metropolitan areas. The AWS Lambda Signal Corps has
built a communications system to connect remaining survivors. Come learn how AWS
Lambda provides a platform for building event-driven microservices, all without the need
to provision, manage, and scale servers. In this workshop, we will introduce the basics of
using AWS Lambda to run code in response to events from Amazon DynamoDB, S3, and
API Gateway. You'll work within a team to build a secure, scalable, fault-tolerant chat
service with global reach from scratch using blueprints provided by us. Unfortunately, the
blueprints provided only describe a very rudimentary communications system (the
engineers of the project got mysteriously ill). We are looking to you and your team to add
additional real-time life saving features (e.g., food cache locations, zombie motion
detectors, undead counters) to the chat platform using Lambda functions.

Overview of the Workshop Labs
The Zombie Microservices Workshop introduces the basics of building serverless applications using AWS Lambda, Amazon API Gateway, Amazon DynamoDB, Amazon Cognito, Amazon SNS, and other AWS services. In this workshop, as a new member of the AWS Lambda Signal Corps, you are tasked with completing the development of a serverless survivor communications system during the Zombie Apocalypse.

Speaker

Breakout Session

Azure SQL Data Warehouse, Cloud BI

Join us as we explore how to use Microsoft's new MPP (Massively Parallel Processing) technology. We'll deep dive into why we would use it over SQL Server, the benefits, the problems, and give real world examples on how a .Net developer & business owner (me) learned how to create a high performance scalable solution. We'll cover things like partitioning, columnstore indexes, CTAS, statistics, and the all important partition swapping.

Speaker

Breakout Session

Build mobile apps for iOS, Android, and Windows using JavaScript

Mobile application development does not need to be difficult for us Web Developers. No longer do we need to learn a whole slew of new programming languages to create a mobile application. We can use our existing skills and create mobile applications with Html, JavaScript, and CSS. Then deploy to Android and iOS devices using a single code base that looks, feels, and performs like a native mobile application.

Between Cordova, Ionic, and Visual Studio Tools for Apache Cordova you won't have to worry about the infrastructure setup or making the UI look, feel and perform correctly on the slew different Apple and Android devices that your users will have. You will be able to focus on your business logic and greatly reduce your time to market.

In this talk we will dive into what it takes to get started, look at the features of the Ionic framework and finish off by creating a sample application with the Ionic framework. You will walk away from this talk with all of the tools that you need to deliver your first mobile application.

Speaker

Breakout Session

BUILD YOUR COMPETITOR

Approach:

If you’re not aggressively building your competitor, you can bet your company that your competitor is. From inside the trenches of business #SaaSMaverick has driven through the graveyards of once-thriving b2b service based businesses on his journeys to disruption.
Join Joseph Knecht as he masterfully weaves stories of his battle-tested experience into the tool set your audience needs to walk away with a survival plan for launching their new software product idea or shifting their business to leverage the power of software. From CEOs of Fortune 500s to bootstrapping entrepreneurs, audiences leave inspired and with a plan to BE the competitor versus another another pile of bones in graveyard of fallen companies.

Take aways:

Why innovation matters in your company

Proven Processes and Steps for web product innovation

All attendees recieve a book to help guide them through the process at their company

Speaker Website: http://www.saasmaverick.com

Speaker

Breakout Session

Building a ReSTful API in .Net Core Web API

You've heard about ReSTful web services, you may have even worked with people who say they have a ReSTful web service. Maybe you're not even sure what makes a ReSTful service different from a SOAP service. Maybe you just want to see how it would be done in .NET Core.
I will show you how to develop truly ReSTful web services using Microsoft's latest version of the .NET framework and in particular, the newest version of Web API! I will show you how to expose Hypermedia within your new API and what the benefits are. You will learn the basics of setting up Web API in .NET Core and how to make it sing ReSTfully!

Speaker

Breakout Session

Building Web Apps with ASP.NET Core 2.0

ASP.NET Core is the latest web framework offering from Microsoft. Open source and cross-platform, ASP.NET Core is the best web development platform for building web and cloud based applications on Windows, Mac and Linux.

This workshop is fully hands-on with guided exercises designed to get you productive in ASP.NET Core quickly. Whether you’re new to ASP.NET or are a seasoned ASP.NET developer, this workshop will have something for everyone. We'll discuss creating new projects, services, dependency injection, middleware, logging and diagnostics, Razor views, web APIs, and single page apps in this comprehensive jump-start to ASP.NET Core.

Join Spencer as we learn to leverage ASP.NET Core to build great web applications that you can run anywhere!

Speaker

Full-day Workshop

Clean Code -- Increase your agility through higher quality software

Does your team have a "Definition of Done"? Do you stick to it? Do you ever put off writing automated tests for the sake of getting your software out the door quicker? In this presentation, I will go over some of the best practices found in Agile software development and provide some starting points for those looking to improve the quality of their code so they can focus on new features instead of fixing technical debt. Practices such as Test Driven Development (TDD) and Pair Programming are just a couple great methods you can start exploring to help your team hold each other to higher standards and producing what Uncle Bob popularized as "Clean Code". Like many things in life, taking the shortcut doesn't always lead to a quicker finish.

Speaker

Breakout Session

Containers Aren't That Big of a Deal

There's something much more important than containers and yet nobody is talking about it. The buzz is all around containers.

In this talk, I'll get at the heart of what a container is by looking at recent, and not so recent, Operating System features that led to the modern container. And I say "not so recent" because many of these features have been around for a long time now. And have been in use in containerization tools for a long time as well. Containers aren't new.

So what is it that led to the recent explosion of interest in Docker?

Well, you'll have to come to the talk to find out.

Before the hour is up:
- I'll demonstrate how we can take containers out of the equation and use highly optimized VMs to achieve the same benefits.
- You'll leave with a much better understanding of what a container is and most importantly see the value of other pieces of the puzzle.
- And as an added bonus, I will not only dispell the myth that containers are merely a replacement for Virtual Machines, I'll show how both can peacefully co-exist. And how future innovation will lead to further, complimentary technologies.

Speaker

Breakout Session

Continuous Discovery

Software development is an activity of discovery. We must take action to reveal the reality of the problem at hand, the elements of the solution, and to reveal the work that is needed to design and create the software required. This is the process of discovery.

The strength of Scrum and Agile lies in the simplicity and clarity of the values and principles we follow. These Values and Principles can empower the people doing software development in any organization, and enable us to make rapid strides to the "land of better".

As leaders, activators, and influencers of change in the companies we work with, it's up to us to understand the philosophy of Agile and how it embraces and empowers the process of discovery.

I'll share my thinking about these ideas, and how I them in my daily work to enhance Continuous Discovery, Learning, and Growth in the teams and companies I work with. Let's explore together and discover the path to the future we want to create.

Learning outcome:
- An understanding of the importance of discovery
- How Agile and Lean provide a path to discovery
- An approach to our work that enhances discovering and creating the wonderful things we can't yet imagine.

Speaker

Breakout Session

CSS Grids: An Overview of Awesomeness

When CSS was first introduced in the early 2000s, there was a lack of tools/methods specific to laying out webpages. After the introduction of Flexbox layout module as the first official layout tool/method in 2006, we are at the cusp of another web technology revolution bring about by the upcoming browser support for another CSS layout module: CSS Grids. This talk covers interesting aspects of CSS Grids, and examples of how to go about setting up a grid and focuses on the ease of the process. It also touches on support, accessibility, and fallback aspects. Hopefully by the end of this presentation, you will be convinced that CSS Grid is the only web framework that you will need.

Speaker

Breakout Session

Demystifying Dependency Injection

What is Dependency Injection (DI) and why should you care? Come learn what DI is and how you can use it to keep your apps loosely coupled and test friendly. We will examine why you should avoid tight coupling and how you can avoid it using different methods of DI. After looking at the basic patterns, we'll take a look at a few different DI containers and see how they do their magic to make us better programmers.

Speaker

Breakout Session

Developing Secure Modern Applications

Security is no longer an afterthought to development. Every developer should be responsible for building secure applications that properly handles identity access, secure transport that meetings secure code requirements along with securing the data behind the application. In this talk we will discuss how to handle authn and authz using Open ID Connect and Oauth2 in modern application architecture using JavaScript frameworks like Angular 2 with social and enterprise identity providers. Learn how architect your application to avoid common attacks like Man in the Middle, Cross Site Scripting. Also learn how to verify code is secure during development to running automated pen tests as part of your CI/CD process.

Speaker

Breakout Session

DevOps in a Day Workshop

Competition in today's markets is driving DevOps throughout organizations to achieve business agility and reduce time to market while innovating through multiple feedback channels. This workshop provides hands on experience with 6 hands on labs using Visual Studio Teams Services and Azure to implement DevOps practices in a day. Each section will include an overview, lab time, and questions. You will build out a release pipeline deploying a web application through multiple stages into production maximizing efficiencies using automation for infrastructure, builds, testing, and deployments. Come ready with your MSDN Azure benefits enabled to maximize the value of this fast paced workshop. Leave with the tools and knowledge to implement DevOps and CI/CD practices using VSTS and Azure.

Speaker

Full-day Workshop

Docker for Developers

Most discussions about Docker are from the deployment point of view – how to get your app to run in a container, and spread those containers out, turn them on and off to make your application more scalable. But Docker is a very useful tool for developers, too, and that purpose gets lost in the DevOps discussions. Want to play with Mongo? Want to test your app with a new version of the database? Or maybe you just want to use something else instead of the always-in-flux dev database server? You can do that locally, and easily, with Docker. And then turn those services on and off with one command. You don’t have to add all those extra dependencies on your machine either. You may never do brew install some-large-package ever again.

Speaker

Breakout Session

Dockerize Your .NET Development Environment

It works on my machine. We’ve all heard it. Most of us have said it. It’s been impossible to get around it… until now. Not only can Docker-izing your .NET development environment solve that issue, but it can make it drop-dead simple to onboard new developers, keep a team working forward and allow everyone on the team use their desired tools!
I will show you how to get Docker set up to use as the run environment for your .NET projects, how to maintain the docker environment, and even how easy it will be to deploy the whole environment to production in a way that you are actually developing in an environment that isn’t just “like” production. It IS the production environment!
You will learn the basics of Docker, how to use it to develop and how deploy your “development” environment as the production environment!

Speaker

Breakout Session

Eating the Elephant (how to get started on big projects)

You've just been handed a big project with a lot of players involved and you're looking to figure out what you have. Where do you start? Who is the expert? What needs to be delivered? When will it be done?

In this workshop, we'll show an approach that is used to gather the high-level requirements from whomever might know about them, gather consensus for who this product serves, what they can do with it, and what is important to the stakeholders. We'll walk through an iterative process for gaining an understanding of the project including assigning effort and value to individual pieces. We'll cover how to figure out what is missing and what is irrelevant.

This technique works for those both familiar and unfamiliar with agile development. It bridges the gap between technical professionals and non-technical business experts or stakeholders.

We will be covering various techniques such as silent brainstorming, clustering requirements, personas, user story maps, valuation techniques, effort estimation, and possibly some edge techniques for certain situations.

Half-day Workshop

Empathy: The Foundation of Your Product

Do you have problems with creating solutions that make a big impact? Pushing out innovative releases? Do you lack creative confidence? Most companies understand their business needs and many assume they know the needs of their users. Without empathy, you could be missing the true impact your product could be having on the market.

No matter what your role is on a project, you can benefit from walking a mile in someone else’s shoes. In this talk we’ll discuss the mindset, process and tools used to better understand your users. Bring empathy back to your project. Become empathetic.

Speaker

Breakout Session

Entity Framework 201/301

This is a presentation of some of the more advanced features of Entity Framework. Proper setup and use of navigation properties to leverage the tools provided by Entity Framework. Complex Linq queries and how to simplify them. Advantages and disadvantages of relying on Entity Framework. Understanding the scope of Entity Framework queries and how to track the queries that are generated. This will be a code heavy talk.

Speaker

Breakout Session

Estimates or NoEstimates? Let's explore the possibilities

Let’s explore and the purpose and use of estimates in the management of software development project efforts, and consider possible alternatives. We depend on estimates to make important decisions, and yet we’re often disappointed by the results. Are estimates for cost, time, or effort always needed? Is it possible there are other ways to approach our work?

The default use of an "estimate-driven" approach is pervasive in software development efforts, and while estimates can be useful, it is worthwhile to scrutinize our use of estimates for cost, time, and effort, and to seek better ways to manage software development projects.

There are a number of things to explore and many questions to ask. For example, do we really need estimates for all the things we are currently using them? Are we getting a reasonable benefit from them? Is it possible to manage software development projects without these estimates, or at least with fewer estimates? Is there a way to prove that estimates are helping us make good decisions?

In this session we’ll participate in some interactive information gathering exercises to see if we can gain a shared idea of our current understanding of the purpose and use of estimates. We will examine the nature of software development projects, and see if we can work together to come up with some ideas about alternatives to using estimates.

Learning Objectives:

Gain an understanding of the purpose and use of estimates.
Understand some of the issues with using estimates
Discover ways to work without estimates

Speaker

Breakout Session

Everything I Needed to Know About Debugging I Learned in Elementary Physics

Has there ever been a time where you got a bug report and you didn’t even know where to start? Have you ever felt overwhelmed with how code is behaving? You’re expecting one thing and it does the exact opposite? Situations like these can be some of the more frustrating aspects of software development. Solving problems is central to being a top-notch developer, it’s part of what separates the experts from the novices.

Over the years I’ve come to realize that problem solving isn’t always easy, but it can be broken down into some basic steps. These same steps were taught to me when I first learned physics, and have helped me solve numerous problems.

By the end of the talk, you’ll have a mental framework for solving problems, and you’ll get to see that framework in practice as we solve problems that have happened on real-life software projects.

Speaker

Breakout Session

Friday, 2:15 PM - 3:15 PM
| Regents C

Facilitation for all

A decision needs made and it's now up to you to get there. Who needs invited, what's the outcome, and how do you get there? The great thing about self-organizing teams is that they can handle events without waiting for someone else. At some point in time you will need to facilitate a meeting. Being an effective facilitator will ensure meetings are fun, productive, and respectful of everyone's time. Jess will lead you through facilitation techniques and tricks to make sure you not only have the right people in the room, but you get to your desired outcome in an efficient manner. We will look at techniques that include time boxing and utilizing a parking lot.

Speaker

Breakout Session

Fail Faster: Utilizing UX To Save You Headaches Later

In this session we will be discussing the importance of failing faster in the planning stages. The sooner you can find out something will not work or doesn't look good the easier and quicker it will be to resolve.

There is a lot of truth in the measure twice and cut once maxim and we can apply that to developing applications and websites. Some topics we will discuss will be mock ups, personas, analysis, user testing, and many other methods.

We will also discuss pitfalls of implimenting better UX planning and share ideas on how we can improve on this.

Speaker

Breakout Session

Firebase Alexa

Alexa is a voice assistant platform from Amazon, that makes it easy to build voice-driven applications. Firebase is a comprehensive app platform from Google that makes it easy to do… a lot of things. Taking advantage of both makes it easy to build Alexa skills that take the conversation well beyond the Alexa environment itself.

We'll walk through the setup and architecture of a simple skill that takes advantage of the Alexa platform to interact with applications outside the Alexa environment, with activity in the conversation with Alexa being reflected in the changing display of a single-page web application.

Speaker

Breakout Session

From JavaScript Mess to Cleaner Code

I've talked to many who complain about JavaScript and don't view it as real development. Web development continues to grow and along with that comes larger JavaScript applications and a never ending flow of new frameworks and tools.
Based on my experience this summer with interns (http://geekswithblogs.net/Aligned/archive/2016/08/24/teaching-javascript.aspx) and over the last years of working on a large JavaScript driven application, I've learned that JavaScript code can be readable and maintainable using methodologies that we've adopted in C#, Java etc. SOLID principles, good naming practices and Object Orientated can all be used to create JavaScript applications.

In this talk, I'll start from a jQuery driven UI (grid with filtering) and move through steps to clean up the code. We'll look at OOP, inversion of control approaches, TypeScript, Jasmine (unit testing). Then we'll convert jQuery code into KnockoutJs to see how data-binding tools can help reduce DOM manipulations and simplify code. If there's time we'll touch on RequireJs (module loading) and show the same solution in Aurelia (a framework that does even more for us).

This is a tall order for an hour, so we'll have to move quickly through the code changes, but I think you'll see the benefits of treating JavaScript like a real language.

Speaker

Breakout Session

Front-end Web Development with Angular2 and TypeScript

The all-day session will walk developers through the setup and development of a powerful web application built on some of the most modern web tools and technologies available including TypeScript and Angular2. At the end of the session all attendees will have had the opportunity to utilize a wide number of modern web-development tools and technologies to set up a complete application.

This session will be very fast paced and all attendees will be encouraged to follow along as the instructor demonstrates every aspect of:

Setting up a new web solution and configuring all necessary package and module management tools (we will focus on NPM and Angular CLI)

Configuring you development environment with the right plug-ins and extensions to optimize the development process

Setting up a robust project structure to manage all assets and code

Utilizing TypeScript to build a rich and manageable client-side application using the Object Oriented constructs and patterns you are familiar with from other languages such as C#

Integrating your Angular application with a server-side API

Setting up an Angular application and designing a robust UI built around Angular2 components.

Utilizing the Angular syntax and directives for building robust HTML applications

Working with Angular routing to build an efficient means of navigation between pages

Utilizing RxJS and Observables to work asynchronously and easily communicate back to the server’s API

Debugging and testing a component-based Angular application

Requirements for attendees:

Have a laptop with either Visual Studio 2015/17, Web Storm, or Visual Studio Code.
Have Google Chrome included on the laptop.
Be highly proficient in C# and JavaScript and be very familiar with current Microsoft web development technologies such as ASP.NET WebForms or MVC.
Have the ability to work quickly and absorb the presented information while working through the setup on their own laptop
Beyond a development environment and Google Chrome, attendees will be asked to install additional tools and extensions into their development environment throughout the session.

All sample code and resources for this session will be shared via a GitHub repository at the start of the session.

Fundamentals of React + Redux Workshop

Together, through a series of short lessons and code-heavy labs, we will build a running application with React and Redux. You will leave with a working understanding of how to use React in your own applications, as well as working code to leverage as a helpful future resource.

This one day workshop is led by Object Partners consultants that have been building JavaScript applications for a number of years and love working with the latest and greatest front-end frameworks like React, Redux, ES6, and Webpack to deliver solutions for clients across many industries here in the midwest and beyond.

Full-day Workshop

Hands Free Mobile UI Testing

Testing your mobile app against the sea of mobile devices can be daunting. Just testing with the popular devices of the last few years can be cumbersome and expensive. Not to mention the wear and tear on your thumbs with all that tapping and swiping. Wouldn't it be great if you could apply the same skills and practices you've honed implementing unit testing of your app logic to the testing of your UI? I've got great news, you can! We'll explore how you can get started automating all that tapping and swiping today in your existing mobile apps and plan for it moving forward. We'll also see how those tests can be applied to online services with thousands of devices waiting to run your app.

Speaker

Breakout Session

Heat Up Your EmberJS App with Firebase

Ember is a popular javascript framework with a powerful data management library called Ember Data. Firebase is a suite of cloud tools by Google, including a realtime database that makes data synchronization very easy. Ember also has a library called EmberFire, which makes it easy to add Firebase support to an Ember application!

In this presentation, the audience will learn about Ember's data model to provide a context to how data from Firebase will be managed in the client. Then, a quick overview of the Firebase Realtime Database dashboard. The presentation will conclude with a review of an actual Ember Firebase application, likely a simple online multiplayer game, to illustrate how effective this arrangement can be!

Speaker

Breakout Session

Increasing Developer Sanity with Backends for Frontends (BFF)

The Backends for Frontends (BFF) pattern is the creation of a dedicated backend service for each frontend experience. This means that every app, website, and desktop client will each have their own server-side backend. This is a departue from general purpose server-side APIs, which process requests from all clients with the same backend code.

Adherence to this pattern can increase developer happiness, allow for more flexible orchestration of multiple backend services, allow for more graceful feature degradation, and allow for more options when integrating 3rd-party services.

This presentation will cover:
* A detailed description of the pattern
* How the pattern differs from "traditional" service oriented architecture
* Developer benefits, including increased functionality ownership and team autonomy
* Architecture benefits, including increased backend flexibility

Demo code will also demonstrate the developer and architecture benefits of the pattern.

The pattern can be implemented on any technology stack, and the presentation slides will be stack-agnostic. Demo code will be themed around an eCommerce problem scope and presented in C#.

Speaker

Breakout Session

Intellectual Property Fundamentals for the Technologist

Today, more than ever, technologists need to be aware of the basics of intellectual property law and the broad effects it has on decisions you make every day. There is a prevalent myth that if something is available on the Internet, it must be free to copy and use as we please. Nothing could be further from the truth. In this session, we will cover some of the core principles of IP. Become a better informed technologist and gain the confidence to discuss these topics with your professional advisors and with your own team.

Speaker

Breakout Session

Intro to story maps

You have just been tasked with getting an idea up and running. Where do you start, how can you show you are on the right path, and how do you determine when you are done? Story maps are a great visual aid to help show the progress to everyone involved with a project (whether it is a brand-new development initiative, enhancements to an existing system, or even evaluating an outside solution). At a quick glance, you can see the work completed, what is next, and the work that was determined wouldn’t deliver enough value to add. Story maps are a great tool to open up conversations and keep team members and sponsors engaged. We will walk through real examples, techniques/ tips, and the outcome of effort.

Speaker

Breakout Session

Practical Agile

Thursday, 8:30 AM - 9:30 AM
| Chancellor 2&3

Introduction to Functional Programming

What is this style of programming taking the world by storm? How do people write functions that are only 5 lines long but seem to do something that would take me at minimum 100 lines to complete? What's happening to how I write my programs?

these are just a few of the questions people tend to ask when chatting about functional programming. This talk is geared toward introducing the functional paradigm. The goal is to show how functional programming can make you a better developer, and at the same time, using multiple languages, show how much more efficient and natural feeling functional programming can be.

Speaker

Breakout Session

JavaScript Futures: ES2017 and the Road Ahead

Development teams are now using the exciting—and extensive—new JavaScript features available within ES6. Yet, as adoption has spread and projects have adapted, the language continues to evolve and expand. Last year, two features were quietly added to comprise ES2016. In January, another handful of improvements were marked final for the release of ES2017.

One thing is certain: the JavaScript community is not slowing down! Investigate the new and proposed features of JavaScript. Understand the ES.Next maturity stages and the TC39 review process. And most of all, become empowered to prepare for what lies ahead.

Speaker

Breakout Session

Kanban for Support and Maintenance Projects

New Agile projects spin up every day. But, pure Scrum based Agile methodologies do not fit the needs of all projects. Examples of projects that may not fit these methods:

A legacy project migrated to a cloud platform

Budgets shifted towards newer investements

A new merger brings on new properties

Existing projects have shifted into an end-of-life, but not end-of-support phase

This work provides value to customers or clients. Retaining these efforts to fund new opportunities is a critical business role. How do you maintain the efficiencies and methods from Scrum/Agile for this type of work?

Kanban! This introduction to Kanban will explore Flow, Work in Process, Vizualization, and Continuous Improvement.

Speaker

Half-day Workshop

Keeping a Legacy Alive with Office 365, VSTS and Azure

For nearly thirty years my father ran a small software company out of his home. When he unexpectedly passed away in June of 2016 one of the decisions my family faced was to either shut down the company or continue supporting the nearly 1000 law firms that had come to rely on the product.

This is the story of not only keeping his legacy alive but also of building on it in a way that wouldn’t have been economically feasible even a few years ago. Throughout the journey we’ll explore how Office 365 improves our communications, how Visual Studio Team Services gives us enterprise-scale DevOps, and how Azure App Services and Storage Accounts give us the flexibility to grow. Together, these services allow this small, family business to run like a world-class organization without a world-class budget.

Speaker

Breakout Session

Kotlin: JVM Superpowers

Kotlin is a relative newcomer to the pantheon of JVM bytecode-compatible languages. Joining veterans like Groovy and Scala, it takes a fresh approach that avoids a lot the annoying aspects of Java while providing the power and flexibility of its siblings. But it has a secret superpower - Kotlin can compile directly to both Java and JavaScript.

In this talk we'll do some brief overview of Kotlin syntax and capabilities before diving into a start-to-finish example of Kotlin in action in a client-server application. Shield your eyes from the super syntax, reminisce about how you used to live in fear of NullPointerExceptions, laugh about all those times you had duplicate the same utility functions in Java and JavaScript.

Speaker

Breakout Session

Let me tell you a (user) story

User stories are the heart and soul of agile delivery. Come learn how to create high quality stories that can be estimated and provide real business value. Learn how to:
* Size your stories properly
* Identify those that need split (and how)
* Provide stories that deliver value
* Keep the scope of stories in check during delivery
* Provide a great tool for communication and dialog, not something that ranks up there with "documentation"

Speaker

Breakout Session

Let's Clone Mario - Intro to Unity

Ever think about making your own games? Want a tool that lets you get something made fast? We are going to set up the basics of a platformer and we are totally going to clone Super Mario Bros. The simple yet classic game mechanics showcase a lot of what you can do with Unity. Here is what we are going to cover in this presentation.

Setting up a game scene

Create sprite based animations

Add C# scripts to our game objects (and discuss why they work)

Introduce the Unity Physics engine

Show off collision detection

By the end of the hour we will have recreated the platforming mechanics and have a good basic understanding of what goes into making a game in Unity.

Speaker

Breakout Session

Let's Get Functional With Elixir!

Are you intrigued about functional languages? Have you thought about checking out what’s so important about functional programming only to get scared away by the talk of lambda calculus and monads? Do you struggle to see why you’d use a functional language? This talk will cover a newer server-side functional language called Elixir. It’s designed by former Ruby developers so it has an emphasis on readability and developer satisfaction but still has the benefits of functional programming such as immutability. Additionally, Elixir excels in concurrency, which causes nightmares in some languages.

By the end of the talk, you’ll understand some of the core concepts of functional programming, as well as some of what makes Elixir unique. As a result, you’ll have a better understanding for the types of problems that functional programming can help you solve, and you’ll be ready to install Elixir and start writing code in a functional style.

Speaker

Breakout Session

Level Up with PowerShell

Time is a valuable and precious resource, and it seems there are never enough hours in a day. Come learn how PowerShell can empower you to be a more effective developer. We'll look at how PowerShell can be used to help solve common problems and examine what makes it such a rich and powerful tool. In this session we will look at how PowerShell is built on top of the .NET framework and how you can leverage you existing skills to automate different aspects of your development/deployment processes.

Speaker

Breakout Session

LINQPad: More than a Scratchpad

Wait. What? A talk on LINQPad? Isn’t that just the .NET scratchpad thing? How can there be a talk on that? Well, LINQPad may often be referred to as the “Ultimate Scratchpad for C#, F#, and VB” but chances are that if you’ve used it you weren’t using it to its full potential. LINQPad is chock full of hidden features that on their own don’t amount to much but taken together can truly boost your productivity. Whether you’re exploring a problem space or simply want to query some data LINQPad is a great utility and this session will help you get the most out of it by introducing important features like password management, caching, output customization, and much more.

Speaker

Breakout Session

Mob Programming Workshop

Mob Programming: All the brilliant people working on the same thing, at the same time, in the same place, and on the same computer.

Mob Programming is a cost-effective, collaborative and fun way to get work done together. It's a whole-team approach to development, where coding, designing, testing, and working with the "customer" (partner, Product Owner, User, etc.) is all done as a team.

Participants in this workshop experience a day of learning and doing Mob Programming. We cover the mechanics of how to work together as a Mob as well as the techniques that make this form of development so effective.

Designed and facilitated by Mob Programming pioneer Woody Zuill, this workshop provides a hands-on education in the art of mobbing and it's significant benefits for your teams.

Learning Goals
• How 5+ people can be effective working on just one thing
• Heuristics for team size
• Guidelines for successful collaboration
• Handling competing solutions and ideas to a coding problem
• Encouraging politeness and kindness of team members
• Reducing or eliminating harmful conflicts
• Mobbing Mechanics
• Tools for team coding
• Workspace setup
• How to "Amplify Learning" and take advantage of continual learning opportunities
• "Real-time" and continuous Retrospectives to reflect, tune, adjust
• The theory of why Mob Programming is effective.
• Test-Driven Development (TDD) as a team
• Working with Product Owners, Business Experts, Testers, Designers as part of the team
• Refactoring as a team
• Continuous feedback at all levels of granularity

Workshop Agenda
• Introduction: Mob Programming Introduction, The basics of how it works
• Activity: The nature of software development
• Activity: Teamwork - a good thing
• Driver/Navigator teamwork Roles and Techniques
• Coding Dojo Demonstration: A simple demo of Mob Programming with volunteers from the participants.
• Lunch
• Advanced Mob Programming Concepts - Hands on coding
• Coding Exercise: Working on a Sample Project, learning to work together using a few rules
• Amplified Learning, How to take advantage of learning opportunities
• Continuing the Coding Exercise: Removing the rules
• Retrospective and review, group discussion of what we’ve learned

Speaker

Full-day Workshop

Modern Search with Lucene.NET

We've all had to implement search and we often use what's available. It can be easier than the capabilities of your database though. Come learn the basics of Lucene.NET and find a faster easier way to implement search in your program, website, or wherever you need it.

Speaker

Breakout Session

Multi-tenant Apps with Spring Boot

Hosting a Java multi-tenant software-as-a-service application can seem like a daunting task. Do you run a single web application but separate the data? But then how do you separate that data, at the full database or at the schema or column level? Or do you just run full separate stacks of your application?

Spring Boot with Spring Data and Hibernate provides a straightforward path to build the RESTful backend of a multi-tenant application using a client per-schema approach. In this talk you'll learn how to keep your Java & Groovy development code clean so that you seldom have to think about coding for multiple tenants, along with strategies for dealing with client-specific data requirements.

Breakout Session

Designing and building RESTful APIs isn’t easy. On its surface, it may seem simple – after all, developers are only marshaling JSON back and forth over HTTP, right? Believe it or not, that’s only a small part of the equation. There are many things to keep in mind while building the systems that act as the key to your system.

In this session, Spencer will delve into several best practices to keep in mind when designing your RESTful API. Attendees will learn about authentication, versioning, controller/model design, testability, documentation and change management. This session will also explore the do’s and don’t’s of RESTful API management so that you make sure your APIs are simple, consistent, and easy-to-use.

Examples will be done using ASP.NET Web API and C#. However, this session will benefit anyone who is or might be working on a RESTful API.

Speaker

Breakout Session

Octopus Deploy: Automating .NET Deployments

Octopus Deploy is a tool for .NET deployment automation. You can use it to deploy IIS websites, Windows services, and even certificates and scripts that you need to run on remote machines.

Octopus Deploy has the potential to make deploying from the build server to remote machines painless and repeatable- but there are some things you may want to know up front to make that happen. This session will explore why you might want to try Octopus Deploy, what sort of issues you may run into, and how Ocuvera uses Octopus to manage our on-premise product installations & updates.

Speaker

Breakout Session

OWASP Top 10 Vulnerabilities & ASP.NET

In this talk we’ll go over the OWASP Top 10 vulnerabilities and how they apply to ASP.NET. We’ll include a demonstration of each vulnerability, the risk it poses, how to detect the attack, and how to mitigate it.

The Open Web Application Security Project (OWASP) Top 10 list are the most commonly exploited security threats found on the web today. Securing your applications & clients against them will go a long way towards mitigating any security risks and protecting your application from these threats. In this session, we’ll go through each of the top 10 vulnerabilities showing you the vulnerability in action, what the impact is going to be, how to detect it and most importantly how to fix the problem. Code samples will be freely available and we’ll examine the vulnerability in both MVC/WebApi & Asp.net web forms applications.

Speaker

Breakout Session

Practical Agile - The Working Agreement (Designed Alliances)

Overview:
This breakout session discusses the role, creation and value of the working agreement in the agile development methodology.
Outline:
- Personal Story: How I came to need and love working agreements in my own projects.
- Don’t leave scrum team relationships to chance
- What does a working agreement include?
o Values
o Beliefs
o Expectations
o Group Norms
- Take the guesswork out of a team’s “clicking”
- Teams have emotions, thoughts and feelings
- Questions to ask when developing the working agreement
- Scrum Master Empowerment
- Benefits
- How to conduct the meeting to create the agreement
- Sample Meetings / real-world examples
- Tips for success
- Scrum Masters role in a working agreement
- Questions / Comments?

Speaker

Breakout Session

Premortem in Agile Product Development

In product development, it is inevitable that some projects will fail. Sometimes they fail because organizations are reluctant to adopt a better development methodology or organizational bureaucracy is high; other times, projects fail because team members and stakeholders are reluctant to speak up about their reservations during the project kick-off phase.

When a project fails, Project Managers and Scrum Masters often ask themselves if there was anything they could have done to save the project from disaster. There is.

This session will focus on how product teams can better prepare to fight the battle of the unknown. We will showcase and lead attendees through the approach that local development company Proteus uses prior to each product build. Don’t miss this session. Your next project’s success or failure could depend on it.

Breakout Session

Programming Paradigms in JavaScript

To the uninitiated, paradigms can seem daunting, difficult to understand, and even harder to apply. This talk attempts to clear up that confusion and misconception along with giving some practical advice for how different paradigms can be applied in JavaScript.

Beginning with an overview of three common programming paradigms in JavaScript, Object Oriented, Functional, and Imperative (Procedural), this talk will illustrate the differences between all three approaches. After highlighting the possible advantages and disadvantages of each, the talk will conclude with some practical examples of ways to utilize these paradigms in your own code.

Speaker

Breakout Session

Project Overload

With my current situation of managing 20 plus projects at a time, I have determined ways to appropriately set roles, responsibilities, and expectations to make sure things run smoothly and the projects complete successfully. I will walk through how we approach the project manager role and when not to “project manage” the teams.

Learning Objectives:
* Setting expectations for managing too many projects.
* A quick and simple methodology/tool to easily keep track of all projects’ current status and issues.
* A service oriented perspective of the Project Management Office.

Speaker

Breakout Session

Quit wasting time on code

How much time do you spend making sure your code looks and reads well? From configuring eslint, your editors, tabs vs spaces, semicolons, code reviews where your told to add an extra line, etc. Let's be honest, this is all really important and pointless. Let's talk about how we can maintain beautiful code without wasting our time on it.

Speaker

Breakout Session

Rapid REST API Development with Node and Sails

Creating a RESTful API should be the easiest part of your development. You should not have to be a rocket scientist to successfully create a RESTful API. With Sails, you can create a full featured RESTful API in just a few minutes without writing any code. You get create, destroy, update, find, paginate, sort, and filtering out of the box. If you need to add your business logic to any of the methods or create your own methods, you can do that by writing simple JavaScript functions.

When you are ready to implement your security layer, Sails has you covered. Sails provides basic security and role-based access in the form of policies that can be applied any REST action. Policies are interchangeable with Express/Connect middleware which means you can plugin in popular NPM modules such as Passport. You can also easily implement your own email/password, social login or Windows authentication with a bit of JavaScript.

For data storage, Sails bundles the power ORM, Waterline, which provides a simple data access layer that just works, no matter what database you are using. Out of the box MongoDB, MySQL, PostgreSQL, and Redis are support. However, there are more than 30 data storage providers adapter that the community has created such as Microsoft SQL Server, Couchbase, Salesforce, and Firebase. You can easily switch between any data storage provider or mix and match data storage providers on a model by model basis.

This talk will be code heavy as we walk through getting started with Sails and demonstrate how to implement the features of Sails through the creation of an API. As well, I will share the tips and tricks that I have learned using Sails at a Fortune 100 company. You will walk away understanding how and why you should use Sails on your next project.

All code covered in the talk with be immediately available for download.

Speaker

Breakout Session

React and Your .NET Core MVC App

Developing React applications usually mean developing a back end with .NET Core or NodeJS, and then a separate “plain-old” React app. This is great for applications with a “back-end” team and a “front-end” team. But in a LOT of situations, there’s only one team building the application and create a single code base with good separation between the front end and back end can be complicated. I will show you how to take the generated MVC application and integrate React with it in a way that keeps the layers separated, but easily deployable as a single app!

Speaker

Breakout Session

React+Redux Live Code: Two Player Board Game

React is a powerful rendering tool capable of quickly producing complex user interfaces. To demonstrate that, we will have a bit of fun by creating a configurable 2-player game of “N in a Row” using React and Redux. The goal of the talk will be to demonstrate React’s speed and ease of use, but also to provide exposure to all the basic building blocks of a typical React application at a small scale.

The starting boilerplate will be available online, and attendees are encouraged to follow along!

Speaker

Breakout Session

SEO for Developers

You built a great website! Your stakeholders love it! Fast forward a month and now the people who were singing your praises are complaining that there's no traffic and no one can find the site. What do you do? How do Google rankings even work? Search Engine Optimization (SEO) starts with some basic principles that can be built into the website from the beginning. Come learn basic tips that will give you a leg up on your competitors and drive traffic to your site.

Speaker

Breakout Session

Should I make the Transition to ASP.NET MVC Core? Will it Hurt?

In the past few years we have been exposed to great change in the Microsoft technology stack. With the release of ASP.NET Core it is often a common question from developers as to when/how/should existing products be converted to core. This expands to more questions such as: Can I upgrade in place? Will this disrupt my development cycle? Is today the right time to do so? Should I wait? Do I have to re-write? All amazing questions

This session will review the differences between the full platform & the core platform, as well as the justification & decision process as to which solution is the best for your organization. The session will end with tips & recommendations for the best method to transition and convert to the new framework.

Speaker

Breakout Session

Making the right decisions for a mobile project can be a very involved process of trial and error before you find a good fit. Wouldn't it be nice if you had a map? In this session we will compare frameworks and approaches based on the kind of mobile project you are doing, and walk through what the actual code looks like to accomplish basic tasks for each one. We will cover native, hybrid and mobile web approaches for enterprise-level solutions.

Speaker

Breakout Session

So, how exactly does a screen reader know how to read my code?

This presentation will take an in-depth look at web accessibility standards and how they pave the way for the HTML/JS/CSS you wirte to be spoken by screen readers. By following this journey, you will have a better understanding of the inner workings of accessibility and therefor a better grasp on how to make accessible content.

Speaker

Breakout Session

Software Architecture: a Process and Questions to Consider

This Session will provide developers with a process and different questions to consider during the development process that can help Code Quality improve. Are there things that I can do now that will prevent my need to do extra work on these in the future? Are there things that I'm doing now that I don't need to? How do you define success on something that goes out?

Do I have all the answers? No. I believe they are different for each different application, so I can answer them for my projects. But I can provide insight on how I get to these answers, and how these questions, and your personal or companies answers to these questions can help your code.

This session will be kept fairly high level, so it should be fairly language independent.

Speaker

Breakout Session

Friday, 8:30 AM - 9:30 AM
| Chancellor 1

Something’s Rotten in the State of Quality

Developers, do you really trust QA’s when they find a “bug"? QA folks, do you believe that developers have tested their work before they hand it over? You may identify with this atmosphere of contention surrounding QA. But there’s one underlying question for every team: are we building a quality product?

The definition of quality should go beyond a list of test cases executed against requirements. From the father of the quality revolution,Edward Deming, to the work of Martin Fowler and Mike Cohn, we'll review the theoretical groundwork for what quality is, then explore these definitions with examples. We'll wrap up with specific activities along the software development life cycle that actually help assure quality. You’ll take away what it truly means to assure quality as well as ways to start putting it into practice.

If you’re a developer, project manager, product owner, BA, or QA tester, this talk is for you.

Speaker

Breakout Session

Speak To Me: Voice Development Practices

What does it mean to develop a good interaction - without any visual aids? Natural Language Processing (NLP) has opened the door to communicating vocally, and made more easy to develop with popular platform APIs and in-home devices like Google Home and Amazon Echo. How do you start thinking about building for one of these platforms, or all of them? We will go over what has to be kept in mind for the development life cycle and empower you to make the architectural decisions that make sense with this emerging software skillset. This is a high level architectural and voice design discussion to avoid pitfalls and enhance user delight with your chatbot or voice skill.

Speaker

Breakout Session

Stop Iteration Bait and Switch

Have you ever worked on an agile project where you were pressured to get something out the door? Maybe you were told “it doesn’t have to be perfect,” “this is agile,” or “we will iterate on it.” The next thing you know you have a handful of half-baked features shipped, mountains of features ahead of you, and nowhere in sight is that promised opportunity to iterate.

Agile has the good intentions of encouraging iterative and incremental development but how to accomplish that can feel far from intuitive. Without understood practices, iteration doesn’t occur and the product ends up shipping as is. In this talk I breakdown what it truly means to build a product iteratively and incrementally. I'll share how myself and colleagues have approached these problems by deconstructing a product roadmap with you and showcasing real examples from our experiences. Join me and learn how you can start iterating on your projects today.

This session is targeted not only to product owners and management, but also developers. It takes the engineers to capitalize on these approaches.

Speaker

Breakout Session

Strange Async Code or: How I Learned to Stop Worrying and Love ReactiveX

Almost every application we write now-a-days requires some amount of aysnchronous programming. Whether you are writing a SPA that uses Ajax requests, a desktop app that responds to events, or a Mobile App you are most likely using some sort of async pattern.

Enter ReactiveX. ReactiveX is a cross platform API for asynchronous programming with observable streams. The list of languages is pretty impressive:

Java: RxJava

JavaScript: RxJS

C#: Rx.NET

C#(Unity): UniRx

Scala: RxScala

Clojure: RxClojure

C++: RxCpp

Lua: RxLua

Ruby: Rx.rb

Python: RxPY

Groovy: RxGroovy

JRuby: RxJRuby

Kotlin: RxKotlin

Swift: RxSwift

PHP: RxPHP

Elixir: reaxive

Unfortunately, the documentation for using ReactiveX is mostly contrived examples and doesn't really give you good examples of how to use it in a real-world example.

In this presentation I will walk through what ReactiveX is, what the basic concepts are, and show a sample application and rework it to use ReactiveX to make the event handling much simpler and the code easier to read.

Speaker

Breakout Session

Test Often and Prosper

In this presentation you'll be introduced to the Spock testing & mocking framework. We'll see how writing tests in Spock compares to JUnit and why it will save you time; which will make you enjoy writing tests; which will make you a better programmer; which will make you more money.

If you're a Java developer, you'll also be introduced to Groovy. Using Groovy in testing code is a great introduction to the language and a foot in the door to getting it accepted as a langage standard within your company.

If you haven't been using JDK 8, the functional concepts and collection compreensions in Groovy will change your life.

Speaker

Breakout Session

The Crumbling Monolith

The case for identifying and separating orthogonal concerns in your web applications to enable agility in software development, scalability, maintainability, and resilience.

This talk will outline the problems caused by the inherent complexity of monolithic web applications, popular false dichotomies around monolithic vs microservice architectures, and understanding time and state.

Speaker

Breakout Session

The Four Secrets of Extraordinary Agile Developers

There are four things that extraordinary agile developers do which sets them apart from the crowd:

Contextual Decisions

Reshaping

Efficiency Hacks (aka good laziness)

Knowledge

Being an extraordinary agile developer takes more than effort and talent - a thoughtful approach to how you practice the art and science of software development is an essential ingredient. In this session, we'll explore each of these areas and discuss some real-world example scenarios as fuel for your introspective aha moment(s).

Speaker

Breakout Session

Practical Agile

Thursday, 3:30 PM - 4:30 PM
| Chancellor 2&3

The Human Side of Code

It's easy to think of software products as being composed of technology; and, at a high level, that's true. The reality, though, is that the technology powering software products is itself a highly complex composite system, composed of entirely human components. The technologies we implement, the code we write, and the products we build are made of experience, understanding, perseverence, expertise, passion, talent, time, money, and so much more.

Together, we will explore The Human Side of Code. Along the way, we will discuss all the different roles in the software development process, how they contribute, what their concerns are, and how we can all contribute to making their lives just a little bit easier. In so doing, we will develop a roadmap that we can all follow to make our jobs more enjoyable and more productive, leading to a happier workforce and more successful products.

Speaker

Breakout Session

The Joy of Story Mapping

Gathering requirements and drafting Product Specification Documents are often time consuming and fail to provide the expected benefit. For Agile projects we need a better method for figuring out what it is we need to build and so we normally have user stories. Unfortunately, a long list of user stories in a product backlog can be difficult to understand because a flat backlog makes the context of a story difficult to grasp. Story Mapping, a method pioneered by Jeff Patton, is an excellent way to gather requirements into stories as well as provide the appropriate context for those stories to be understood.

In this half-day workshop, you will learn about story mapping as well as apply your learnings to creating a story map of your own. You will also be equipped to return to your team and facilitate your own story mapping session.

Half-day Workshop

The Saboteur in Your Retrospectives: How Your Brain Works Against You

You’ve bought into the Agile process. Your team is grooming its backlog, keeping its work-in-progress low, and focusing on delivering value to the users. But when you all sit down for a retrospective, there’s something working against you - your own brains. Using unconscious shortcuts and hidden heuristics, they can lead your team down a path to the worst result possible: wasting time!

You don’t have to take that lying down - you can fight back! Come learn about how your brain interprets cause and effect, the ways in which it wants to think of things as narratives, and all the tricks it does to save itself from having to think. You’ll learn how to maximize your time as we cover ways to focus your retros on what matters, talk about how to avoid getting trapped in the blame game, and discuss the value of perspectives.

Speaker

Breakout Session

The Security of Classic Game Consoles

It's 1986 and you're sitting a few feet away from your 19" CRT television. Blowing the dust out of your Super Mario cartridge you insert it into your Nintendo and push the power button. The familiar music plays and you're sucked into a world of goombas and castles on your quest to save the princess. While engrossed in your game, you probably didn't realize the engineering that went into the security of your game and console.

Join me as we travel back through history and explore the security of classic game consoles. You don't have to be a gamer to appreciate the various security methods that were employed, including hardware, media, and software security measures. Learn how many of these security measures were exploited, either directly or indirectly, as well as the security measures which have yet to be broken.

You'll leave this fun presentation with not only an understanding of the technical details of what went into protecting the security of your favorite classic game consoles and how they were broken, but also how we can apply these historical lessons learned to the modern software and systems we build today.

Speaker

Breakout Session

The Whys and Hows of Imposter Syndrome and the Illusion of Transparency

Impostor Syndrome is a quiet and subversive force in a lot of developer's lives. They feel like they're faking their way through their job, and they silently panic as they wait for everyone to find out they don't really know what they're doing. It can be crippling, and left alone it can develop into an anxiety disorder, or worse. If you can relate, or even if you just want to learn how to be a little more confident in yourself, come and listen as we cover what Impostor Syndrome is, some theories why it happens, and strategies you can use to eliminate it (that's right, you actually can)!

Speaker

Breakout Session

This Isn't Just a Conversation: The Art of User Interviews

Anyone who can carry a conversation can interview users, right? Not so. Gaining insight into user requirements, needs, and frustrations is a nuanced process. Without the proper training, even well-meaning researchers can lead, bias, and manipulate users into getting the answers researchers want--instead of getting the real story needing to be told. In this talk, Ash will guide you through the basics of conducting user interviews:
* Picking the right interview type
* Asking the "right" questions
* Do's/Don'ts of Interacting with Users
* How to interpret your results
User research is difficult to do well and requires lots of practice. After this talk, you should have the resources you need to take the next steps to better user research.

Speaker

Breakout Session

This Old Java App

You get told you have a new project, something you’ve heard about but someone else always took care of. Well, someone else is gone and it’s your turn now. It’s dropped in your lap and you don’t know which way is up, how the project actually works, why they made their decisions at all, let alone how to actually manage any changes in this project.

This talk will give you an idea how and where to start – and how to keep your sanity. Maybe you will be the hero after all.

The examples will be in Java but the ideas are the same, regardless of platforms.

Speaker

Breakout Session

Unit Testing Strategies & Patterns in C#

Learn common patterns and strategies to effectively unit test your code in C#. We’ll go over design principles and ways to effectively ensure your code can be easily tested as well as how to use common testing tools such as Moq, Autofixture, & MsTest to help remove some of the drudgery of testing.

Testable code is a widely advocated industry standard but the barrier to entry is incredibly high. In this talk, we’ll go over not just how to unit test your code using MsTest, Moq, & AutoFixture but the patterns & processes to ensure your code can be unit tested. We will touch on the basics of dependency injection and common patterns such as avoiding the use of static classes but also more advanced topics such as SOLID design principles and how they relate to testing.

We’ll give the attendees a wide variety of examples on how to test common C# projects such as web api and console applications and different scenarios such as how to test databases and external method calls. Many real world tips & tricks on dealing with common patterns and scenarios will be included to make your life easier. Most importantly, attendees will be given a good idea of how to start testing, how to measure the effectiveness of their tests, and what not to test.

Speaker

Breakout Session

Unity 3d with C#

Development was meant to be fun and rewarding. An introduction to Unity3d is just what the doctor ordered. We will explore the Unity 3d GUI interface and create a simple application that will showcase just how easy it is to create a 3D game from scratch. In this class you will learn real time debugging a virtual environment using Visual Studio and C#.

At the end of this session you will have conceptual awareness of what it takes it create Unity3d projects and how your ideas can be made not only real, but mannifested virtually as well.

Speaker

Breakout Session

Up your testing game with JUnit 5

The latest in the venerable JUnit suite, version five fixes many of the annoyances while modernizing and opening up the platform. This version improves JUnit testing to use the newest Java features like Lambdas, expands the ability to control and monitor the test lifecycle, and introduces new constructs to support Behavior Driven Development (BDD).

In this session you'll learn how to use all of these features as well as how to get them up-and-running alongside your existing test suite. We'll also talk about how you can write custom test engines to extend the capabilities of your tests.

Speaker

Breakout Session

User Experience: The Black Hat

When creating a new app or updating an existing one, project teams are filled with conflicting ideas on how to make an application better. For user interface decisions, often the person with the loudest voice, relentless attitude, or highest title dictates what is done--or even worse, the entire application is designed by committee in tedious detail in meeting after painstaking meeting. Both ways produce results that are less than ideal.

But there's a better way to get a successful design AND buy-in from your project team, product owners, and users. Black Hat design puts all stakeholders on equal footing and gets everyone's concerns heard and addressed, without devolving into design by committee.

This talk will teach you how do perform the best kept secret in UX design: the black hat session.

Speaker

Breakout Session

Using JWTs for Authentication Management

Whether you are just getting around to adding authentication to a project that's almost complete, or trying to plan an authentication infrastructure for a whole suite of applications, or rework legacy systems to integrate their security methods with each other or with more modern projects, JWTs (JSON Web Tokens) may turn out to be just what you've been looking for.
They can significantly improve your ability as a developer or product manager to stay on top of security requirements, including the need for consistency, reliability, strength of protection, and extensibility.
See how techniques and mindsets developed around the use of JWTs can be used to avoid problems in the project planning phase as well as overcome obstables in projects that are well underway. Become familiar with concepts such as trust propagation and token translation. See the tradeoffs for alternative placements of authorizing services that work with JWTs.

Speaker

Breakout Session

Using Webpack to Streamline Modern Web Application Packaging and Deployment

This session will demonstrate how the new WebPack module bundler (https://webpack.github.io/) offers a great solution for bundling modern web content and serving up efficiently from the server.

We will demonstrate how to get started with WebPack within the context of a modern web application and how to configure it efficiently to bundle and serve any content you need efficiently and “on demand”. This allows developers to efficiently organize their content together and easily have it sent to the server as needed by a particular area of the application.

We will demonstrate how to configure Visual Studio to efficiently work with WebPack and discuss best practices for utilizing it with modern frameworks such as Angular2 or React. Attendees will also be pointed at a number of great resources to help them better understand and utilize WebPack in their own projects.

Speaker

Breakout Session

Website Performance: Understanding the big picture, and how to improve

This session takes on an important aspect of software in a practical manner. By properly understanding the fundamental concepts that make up the web environment we can look at how and why websites perform the way we do. We will explore concepts such as HTML structures, content best practices (images, documents, etc), as well as server/software architecture and how it impacts the real-world performance of your applications.

We will explore opportunities to better monitor and quantify the performance of an application, and how to use this information to implement changes that will result in real improvements. THe impacts of things such as Angular, Bootstrap, jQuery and other related components will be reserached. The session will leave with recommendations on how to improve performance for all applications and guidelines for how to "dive deeper" for those issues not resolved with the high-level improvements.

Speaker

Breakout Session

What's new in ALM and DevOps with Visual Studio 2017, TFS 2017, and VSTS

This is one presentation that could change every week with all of the new features being added and updated to VSTS and TFS 2017. Come see some of the latest changes helping developers produce more efficient, high quality code with new Git enhancements and improvements in build and release. Microsoft is making big investments in package management, reporting, and Azure integration. Learn how to leverage these in your teams. The talk will include the latest announcements //build 2017 the week prior.

Speaker

Breakout Session

Why you should use React Native for your next mobile app

Whether you’re a seasoned React.js developer or not, this talk will show how React Native should be a serious contender for writing your next mobile application.

Starting with a basic overview of its tools and ecosystem we will discuss the awesomely well designed development experience of React Native (NO constant recompiling, Chrome-like dev tools, LIVE RELOADING!!!). We will the show how simple it is to get started by reusing components from your React web apps before finally exploring how companies optimize React to scale for large applications.

Speaker

Breakout Session

Workshop: Getting Started with Docker Swarm Mode

Docker makes it incredibly easy to run software. A single call to docker run can startup just about anything. In seconds you go from not even having the software installed, to up and running. Combine this with docker-compose and you can easily launch complex infrastructure and applications at the push of a button. For example, I can launch things like an ELK stack, a LAMP stack, or a TeamCity cluster in seconds.

Docker revolutionized launching software on a single machine. But, what happens when we move beyond the resources available on a single machine? Do we lose the benefits when we move to deploying software across a cluster of machines?

Thanks to Docker's new integrated Swarm Mode, launching software across a cluster of machines is just as easy as a single machine. In this workshop you'll learn how to setup a swarm and how easy it is to run and manage software across a cluster of machines. We'll cover these topics and more:

Creating a swarm

Launching software on the cluster with declarative service definitions that lead to tasks that lead to running apps in containers

Updating software using rolling updates

How to visually monitor the state of the cluster

Adding nodes (including how to spin up VMs on your local machine if you bring a laptop to follow along)

Self healing services - We'll simulate failures (of nodes and containers) and see how desired state reconciliation kicks in to maintain a desired state

How to give users access to an application deployed on the swarm with published ports and the swarm mode routing mesh

How to network together internal dependencies (container to container traffic) - for example if your app (in a container) needs to talk to a databse (in another container) or needs to talk to another internal api (in another container)

DNS based Service Discovery

How to scale everything with a single command and how integrated load balancing routes traffic across new instances

How to use integrated health checking to avoid sending traffic to unhealthy applications

Speaker

Full-day Workshop

Write Better JavaScript with TDD

JavaScript has become one of the most popular programming languages. Many of us who have been working with statically typed, OOP-orient languages like C# or Java have started working more and more in JavaScript. But while most of these developers who been using TDD in their previous language come to JavaScript, they often leave this practice behind. And it's understandable why. Developers who are familiar with unit testing in C# or Java can struggle with TDD in JavaScript. The language is different, the tooling is different, and all those cool frameworks that we use to build our applications can add complexity to the situation.

The good news is that unit testing your JavaScript is easy, and most frameworks have testability already built in! In this session, you'll see how to make sure your JavaScript is easy to test. You'll learn about the most modern testing tools that help you write tests, even for JavaScript that uses frameworks like jQuery, Angular, and React. And you'll see how TDD can help you start writing better JavaScript.

Speaker

Breakout Session

Xamarin Forms: Writing one app to rule all your platforms

Are you seeking the Holy Grail of Write Once Run Anywhere app development? Then Xamarin Forms might be what you are looking for. This session will give you the information you need to understand Xamarin Forms and how it can be used to lower the friction of cross platform mobile development. You will see how easy it is to simultaneously create your app for iOS, Android, and Windows Phone using C# and this Open Source tool-set.

Let's refine the question, what percentage of the time are you rational versus emotional? _/_

You--just like every other human being--act based on how you feel, not based on logic. Thinking influences how you feel, i.e. thoughts may expand your perspective, but you still act based on feelings. Thoughts are like a back seat driver while feelings are behind the wheel.

You can't do something if you don't think of it, but you also won't do something just because you think of it.

Let's talk about the above questions. No judgement.
- You answered #1 based on how you feel about the idea of a rational person versus an emotional person because I asked you about that. That's priming.
- The answer to #1 dictated the answer to #2 and #3. The dichotomy didn't introduce the possibility that you could be both rational and emotional.
- #4 Even though there's no established way to measure what percentage of the time you are one versus the other, you still answered. And again based on how you answered #1. You adjusted down from 100% one way or the other because nobody is perfect! Again, no judgement here, just observation.
- I could be completely wrong in assessing how you answered, I'm using my feelings to guide what I think you would feel.

Knowing this--that we act based on feelings--opens the door to fascinating questions:
- What dictates feelings?
- What should I feel in a given situation?
- What if I don't understand how I feel?
- What if what I feel is misguided?
- How can I use feelings to my advantage?
- How might feelings jeopardize success?
- Are feelings the key to understanding people?

Join me for an hour to answer these questions an many more. You'll walk away with tools to better understand and control feelings.