Nebraska.Code() Sessions

.NET Blazor - C# Turtles All the Way Up

Blazor is an exciting new technology that is still being developed. Blazor compiles C# for the client into Web Assembly. and run .NET assemblies in the client browser. Where NodeJS allowed the software engineer to write JavaScript from the client all the way down to the server, Blazor allows the software engineer to write C# f rom the server all the way up to the client. We will look at how to create a web api in C# and a web client in C# that is compiled to Web Assembly.

Speaker

Breakout Session

20x Testing Efficiency

Testing gets treated like software broccoli. But, with the right spices, it can be nutritious and delicious. We'll retrace my journey to 20x testing efficiency will all the fails and refinements accumulated on the way.

Slides: https://1drv.ms/b/s!AhKS6Dm8ag3eiJxeLxdlkpN0XRW5tA

Attendees will come away with a better understanding of common testing pitfalls and tools to overcome them.

Speaker

Breakout Session

Agile Doesn't Work for Us - Agile in Infrastructure Teams

Infrastructure and support teams spend most of their time responding to emergencies. Trying to put support requests and incident tickets into iterations is ridiculous. Agile just doesn’t work for infrastructure teams! Or so we're told. This session will review the year-long implementation of agile/DevOps on an infrastructure team that supports 44 separate applications in a company with thousands of employees.

Attendees will learn how this team used and adapted Kanban to manage support queues and improve both the coverage and quality of support for their customers. We will also discuss how the team adopted Scrum to manage the project work that often takes a back seat to the urgent requests that regularly flood into support organizations.

There will be plenty of time for session attendees to ask questions, and discussion of issues will be encouraged.

Speaker

Breakout Session

Agile Foundations

Everyone is doing Agile these days. IT and business teams alike are told to implement standups and plan using sprints. Executives proclaim the benefits of Agile processes, without really understanding what it means to be agile. Poorly understood agile implementations lead many to view agile as just another failed work process with silly rituals and gimmicky names.

The team leading this workshop organizes Lincoln's agileLNK Meetup group (https://www.meetup.com/agileLNK/). During the workshop, we will demonstrate several agile techniques, explain when to use them (and when not to), and discuss the foundational agile principals behind each one. Every team uses standup meetings, right? What if none of you is in the same time zone…or hemisphere? You will learn how to use familiar agile activities, but also why to use them and what alternatives fit better in different situations.

Speakers

Full-day Workshop

Practical Agile

Wednesday, 8:30 AM - 4:30 PM
| Perkins

An AI with an Agenda: How Our Cognitive Biases Leak Into Machine Learning

In the glorious AI-assisted future, all decisions are objective and perfect, and there’s no such thing as cognitive biases. That’s why we created AI and machine learning, right? Because humans can make mistakes, and computers are perfect. Well, there’s some bad news: humans make those AIs and machine learning models, and as a result humanity’s biases and missteps can subtly work their way into our AI and models.

All hope isn’t lost, though! In this talk you’ll learn how science and statistics have already solved some of these problems and how a robust awareness of cognitive biases can help with many of the rest. Come learn what else we can do to protect ourselves from these old mistakes, because we owe it to the people who’ll rely on our algorithms to deliver the best possible intelligence!

Speaker

Breakout Session

An Introduction to WebAssembly

Want to write a web application? Better get familiar with JavaScript! JavaScript has long been the king of front-end. While there have been various attempts to dethrone it, they have typically involved treating JavaScript as an assembly-language analog that you transpile your code to. This has lead to complex build pipelines that result in JavaScript which the browser has to parse and you still have to debug. But what if there were an actual byte-code language you could compile your non-JavaScript code to instead? That is what WebAssembly is.

I'm going to explain how WebAssembly works and how to use it in this talk. I'll cover what it is, how it fits into your application, and how to build and use your own WebAssembly modules. And, I'll demo how to build and use those modules with both Rust and the WebAssembly Text Format. That's right, I'll be live coding in an assembly language. I'll also go over some online resources for other languages and tools that make use of WebAssembly.

When we're done, you'll have the footing you need to start building applications featuring WebAssembly. So grab a non-JavaScript language, a modern browser, and let's and get started!

Speaker

Breakout Session

Emerging Technology

Thursday, 3:45 PM - 4:45 PM
| Rozier

ASP.NET Core Development Workshop with CI/CD

Sometimes all you need is a little push to make a leap to a new technology stack, but the learning curve can after push back against a desire to move foward. In this full-day workshop we will work through the entire software development lifecycle of a project created with ASP.NET Core, Entity Framework, and Azure DevOps. In this full day session we will cover. * Basic project Architecture * Code Re-Use and Dependency Injection * Entity Framwork Core Basics, including databse migrations/deployment * Unit Testing Implementation & Limitations * Response and Object Caching * Azure DevOps Builds & Deployment At the end of the day attendees will be able to create their own projects from end-to-end with a solid platform including Continous Integration/Continous Development practices and unit testing.

Speaker

Full-day Workshop

Be a better software developer

So we have all worked at a place where we had to work with this one really awesome developer. Not only did they know the system front to back but they also managed to know everything there is to know about coding it. I am going to share some of my personal inspirations on how to be a better coder. Some code productivity rules I have come up with over the years. We will end with some interview tips for developers.

Speaker

Breakout Session

Being an Agile Dev

Organizations talk about becoming agile but what does it mean for a developer to be Agile?

In this talk you’ll learn about scrum and other types of agile software development and what the differences are. And then we’ll take a deeper dive into scrum and why standups are more than just making sure you’re doing work, and why retrospectives are more than just talking about feelings. Along the way we’ll discuss what you should be contributing, and what you should be getting out of each meeting.

Speaker

Breakout Session

Beyond Blinky: Making a real IoT "Thing"

So you've picked up an Arduino or Raspberry Pi and some LEDs, or maybe splurged and got a starter pack with some sensors and actuators. Hello World is easy - in the IoT world, it's blinking an LED forever in a loop. Now what? It's time to take your newfound hobby and do something real with it. In this session, We'll walk through the creation of a real thing (TBD) and talk about all the considerations that went in to bringing it to fruition, including writing the code, designing the circuits, picking components, maximizing power efficiency, 3D printing enclosures, connecting things to the cloud, and more!

Speaker

Breakout Session

Beyond the Model: Operationalizing 4,586 Bigfoot Sightings

Bigfoot has been a staple of American folklore since the 19th century. Many people are convinced that Bigfoot is real. Others suggest that he is a cultural phenomenon. Some just want to believe. There is even a group, the Bigfoot Field Researchers Organization, that tracks Bigfoot sightings. And they have thousands of reports available online that date back to the late 19th century.

The Internet, it seems, has everything.

So, I took this data, all 4,586 records of it, and used it to build a classifier. It was a good model with pleasing metrics. I liked it. But then what? For some folks, the model is where the work ends. But I'm a developer and that's only half the solution. I've got a model but how do I use it? How do I put it in an application so that a user can, well, use it?

I'm going to answer that question in this talk, and a bit more. I'll show you how I exposed my Bigfoot classifier to the Internet as a REST-based API written in Python. And we'll tour a couple of applications I wrote to use that API: a web-based application written in JavaScript and an iOS application written in Swift. For the model itself, I'll use DataRobot since it's quick and easy. And, I work there!

When we're done, you'll know how to incorporate a model into an API of your own and how to use that API from your application. And, since all my code is on GitHub, you'll have some examples you can use for your own projects. As a bonus, you'll have 4,586 Bigfoot sightings to play with. And who doesn't want that?

Breakout Session

In this session, we'll go from the ground up to a fully functional .Net Core Web application using Angular on the front-end. This is accomplished with a free framework: ASP.Net Boilerplate.

We'll start by getting a project up and running, which does have a few tricks. Once we're up and running, we'll be able to move very quickly through some of the key points of the layered architecture.

We'll build a model and create the code-first migration to set the database using Entity Framework Core. We'll then build an application service that leverages dependency injection to work against our data. We'll Swagger our service so that the front-end can leverage the automatically generated service proxies.

Our UI layer will leverage Angular and will be fully built in typscript with less and html. With a few notes about some wiring most of the "hard" work of angular is handled for us, and we can concentrate on coding our systems.

Authentication and permissions are a breeze, as are managing roles and user permissions, making setup for multi-tenancy with various user roles fairly painless. This is accomplished through an admin user that can manage users and roles, and also by locking down various methods in our service with code.

The guys at Volosoft have thought of mostly everything - even setting up a built-in multi-lingual architecture. Furthermore, if you need a more powerful solution that has built in masquerading, a full version of the product is available for purchase at ASP.Net Zero.

You will learn how to architect a geo-redundant Azure serverless solution that handles commands from a Slack App built to randomly choose a channel member to perform a code review for your team.

Flow

User installs app into their workspace from the Slack App directory

An Azure Function stores permission tokens for the user in Azure Cosmos DB

User types /codereview into a Slack channel

Slack posts request to Azure Traffic Manger

Traffic Manager chooses an Azure Function endpoint based on "Performance"

The Azure Function adds a message to an Azure Service Bus queue and returns 200 OK to Slack

Another Azure Function processes the service bus message and uses Slack APIs to read the channel members, randomly choose one, and then posts its choice back to Slack

DevOps

The code will be stored in an Azure Git repository. Azure DevOps pipelines will be used to setup a continuous integration / continuous deployment to Azure on code commits. Attendees will be provided a link to download the code and presentation.

Speaker

Breakout Session

Building Great Libraries with .NET Standard

For 17 years, the biggest decision was whether it was time to upgrade to the latest .NET framework or not. Not there .NET Framework, .NET Core, and .NET Standard. So many options and it is not completely obviously which one (or ones) you should be using. During this session we will review the different frameworks/standards and talk about where you should be using the different frameworks/standards. Then we will focus on how you can easily support multiple platforms with .NET Standard and no compromises, thanks to multi-targeting. We will also over the other aspects of building .NET Standard libraries such as versioning, strong naming, and binding redirects.

Speaker

Breakout Session

Caching with Redis - Part 1

An overview of Redis including what it's used for and how we use it at Duncan Aviation. I'll cover the basic data types, and walk through examples of setting/getting values for each of those data types from cache, expiring values, and use a free Redis GUI utliity to view and update the cache. After this session, attendees will understand the basics of Redis and decide whether it's right for them. They'll also walk away with the presentation slides, a Redis commands cheatsheet, and have the necessary knowledge to get started in their workplace.

Speaker

Breakout Session

Caching with Redis - Part 2

This presentation will cover instructions in how to implement Redis in a Node.js RESTful API. I'll walk attendees through a sample caching application or two. The app. will involve getting the Redis client from npm, importing it and utilizing the Redis commands covered in Part 1. Attendees will receive the presentation slides, a working Node.js Redis app, and the knowledge required to hit the ground running with Redis caching in their workplace.

Speaker

Breakout Session

Common Dev Mistakes and How to Avoid a Breach

This talk will focus on some of the most common mistakes (e.g. the top 5) that application developers make and how penetration testers can easy spot and exploit them. Using programming methodologies like SecureDevOps can mitigate many of these risks. It will not necessarily focus on OWASP or similar lists, but it will loosely parallel those and explain how developers can (and should!) change their methods to more secure practices.

Speaker

Breakout Session

Conceptualizing OAuth, OpenID and Implementation of the Identity Server.

In dealing with web security, the most common thing for a developer is to think like an attacker while writing his/her code.

For everyone, the standard of development is not bound to just deploy and fix the bugs, but to ensure every developer understands these concepts and helps his/her team for building a better and secure product.

This presentation will start with using some good secured services like OAuth and OpenId based IdentityServer, and understanding how to call it via our application.

Speaker

Breakout Session

Containers from a Cruising Altitude

The goal of the presentation is to educate listeners on VM and container architectural basics, then build on these concepts to show the fundamental differences between the two implementations and explain the strengths of each. The second stage of the presentation delves into containers; their standards, the popular container softwares available, and how they differ. A brief touch on container orchestration is included. Lastly, the presentation touches on the future of containers, and how Kata containers are looking to bridge the gap between VMs and containers.

Speaker

Breakout Session

Designers are from Mars, Developers are from Venus – Designer/Developer Marriage Counseling

“You never give me any real spec!”
“You always want everything spelled out to the nth degree!”
“Nothing is ever good enough for you. You always want this changed, or that, or some new icon or something. Just tell me what to do!”
“You’re always so specific! Just put something up there and let’s talk about it”
“What is there to talk about? I can’t code something if I don’t know what it is!”
“Let’s just see what happens.”
“Are you f&c^!ng crazy?!"

Designer and Developer. You want to be together, but all you do is fight. You need each other, but you don’t speak the same language. It doesn’t have to be this way. Learn how the different vocabularies, and different worldviews of designers and developers lead to miscommunication, irritation, and bad software. Like a travel book for a foreign language, this talk will teach designers and developers the words and culture of the other, enabling them to get past the misunderstandings that waste time, frustrate the user, hurt the company.

Aimed at both designers and developers, you will learn enough of the other to communicate, develop a productive workflow, and make great products.

Speakers

Breakout Session

Docker & Container basics

What is Docker? What is a container? Why should I care? Is a container just a Virtual Machine? How does all of this actually work?

These are the questions I aim to answer with this presentation. We'll introduce the concept of containers, talk about how they compare and contrast to virtual machines, and take a deep-dive into the inner workings of the Docker container engine.

By the end of this session, you'll know everything you need to get started with Docker and container-izing an app of your own. This presentation won't cover container deployment pipelines, or production infastructure for containers, just the core concepts that serve as a prerequisite for moving on to those more advanced topics.

Speaker

Breakout Session

Docker: From Development to Production

Building applications across an organization can be a difficult process sometimes. Developer machines can have variation that can end up causing confusion and difficulty at deployment time. This can not only be problematic for the developers, but also the DevOps team as well.

Moving application development to containers can reduce friction across all teams by simplifying the process in which new developers build and ship those applications.

In this talk, Kelly will walk through utilizing Docker through the entire development lifecycle, from development to production of a containerized application. If you haven't started using containers, now is the time to learn how.

Speaker

Breakout Session

Software Craftsmanship

Friday, 2:30 PM - 3:30 PM
| Rodgers

Easing Into Continuous Deployment

Have the confidence to deploy on Friday afternoon? I've definitely been places where doing so would make everyone cringe. Lets talk about some lightweight tools and processes to greatly reduce that risk. We'll discuss feature flags, trunk based development, pairing on critical sections, and other ways to help you have confidence in your deployment pipeline.

Speaker

Breakout Session

Encryption for Developers

Encryption has become a major part of the implementation of many products, but how many of us really understand what is going on behind the scenes. During your implementation, do you really know what an initialization vector does? What is the difference betwen AES-CBC and AES-CFB, and when should you use one over the other? How do you store the decryption key to prevent the same code leaking both the data and the key?

In this breakout section we will talk through some of the history of encryption, the different types of encryption, its appropriate uses, and the key elements that we are required to include encryption in your products.

Speaker

Breakout Session

Exploring Parallelism and AI With Inexpensive GPUs

The free lunch provided by Moore's Law is running out. Still, customers will always want more performance. Parallelism (especially with GPUs) clears a path for software developers to deliver more. This talk offers an exploration of parallelism and artificial intelligence on GPUs with open source tools like Python and Clojure. Audience members will learn how GPU acceleration can boost the performance of AI applications. And everyone will learn how to get up and running with an inexpensive 128-core GPU device, the Nvidia Jetson Nano.

Speaker

Keynote

Extending Spring Boot for Enterprise

Spring Boot has been an incredibly successful at reducing the time and complexity of spinning up new projects. However enterprise demands often cause Spring Boot projects to become bloated, out of date, and have inconsistent implementations, leading to them being difficult to maintain both for the teams responsible for a project and from an enterprise level of ensuring projects properly implement features like security, logging, database connectivity, and other common concerns.

In this presentation we will look at some of the underlying philosophies of Spring Boot and see at how to apply them to the enterprise. Specific topics include creating customs starter libraries, BOMs, and easing project initialization steps all with the goal of reducing developer toil and frustration while ensuring consistent behavior across large enterprises but not blocking experimentation. If your organization has been struggling with bloated poms, projects full of dead code, and long pipelines from project conception to deployment to production this is a presentation you will definitely want to check out.

Speaker

Breakout Session

From Zero to App: A React Workshop

You’ve heard about it. Maybe you even started looking at it, but you abandoned when you saw that you needed to re-learn all you thought you knew about JS. When starting to do your first steps in React, the learning curve can seem really steep. In this workshop, the attendees will be guided through the fundamental concepts behind React and will learn how to build a full application using those technologies. Covering packaging with webpack, routing, form manipulation and authentication, this workshop will get the attendees up to speed with this trendy framework that React is.

Speaker

Full-day Workshop

Getting Started With Headless WordPress

Using headless (Decoupled) WordPress frees you from the convoluted Template Hierarchy that would come with a traditonal WordPress theme. We will go over how you would make REST calls with a decoupled WordPress allowing you to have freedom in whatever JS Framework suits you.

This allows you to have an out-of-the-box content management system with a WYSIWYG code editor and a plethora of powerful tools and plugins at your disposal without needless page loads or forced file naming and formatting conventions that traditional Wordpress sites have.

While I will be using WordPress in my presentation Drupal also has a decoupled implimentaiton that utilizes REST calls to pull from the back end, if that is your preference.

Speaker

Breakout Session

Getting to the Heart of Accessibility: Lessons Learned

You’ve heard about the need for accessibility (a11y) in your products and might know that it could be creating barriers preventing people from using your products, but might be unsure about what exactly that means, how it translates into client and end user needs, or even how to get started. In this session, we will briefly overview basic principles of accessibility and accommodation (they’re not the same thing) before exploring some lessons learned working through accessibility concerns as both a developer and an evaluator from the early web to present day.

Topics will include accessibility principles and standards, evergreen problems as well as current and emerging trends, the case for moving accessibility leftward in the development process, approaching the documentation and remediation process, how to better interact with clients with accessibility concerns, and why “accessibility” might not necessarily be the larger goal that we’re working toward.

Speaker

Breakout Session

Friday, 3:45 PM - 4:45 PM
| Devaney

Google Kubernetes Engine: Zero to Secure Webapp

Kubernetes has become the de facto platform for hosting containerized runtimes at scale. However, it can be difficult to know where and how to start. Kubernetes managed by Google Cloud Platform can ease that process. Workshop attendees will receive a quick primer on Docker & K8s fundamentals and then begin at a blank GCP project to provision their own K8s clusters, configure HTTP load-balancing, deploy a trivial webapp, secure it with TLS from Let's Encrypt, and secure it with GitHub-backed OAuth. Minimal CI capabilities within GCP will also be demonstrated. This workshop requires only a laptop (any OS) and accounts on Github and GMail. No client-side setup is necessary.

Attendees will leave with increased knowledge of hosting and securing an application on GCP-managed Kubernetes.

Speaker

Full-day Workshop

We are bombarded with the promises of agile frameworks but each falls short of our expectations. Afterward, we’re left with a confused team, tools that are not being used and a partially implemented framework that doesn’t live up to the hype. Fortunately, there is another way, and you can achieve the outcomes you want without a heavy framework. I want to share my journey, changing a large Financial Services company to embrace an agile mindset with a few lightweight tools.

Speaker

Breakout Session

Practical Agile

Friday, 10:00 AM - 11:00 AM
| Perkins

Hacking Your Car - Driving Towards a smarter future

Inspired by everything from Star Trek to the Tesla car, I've embarked on a journey to transform my truck from mundane to something that is more than meets the eye. Ever since I was old enough to drive, I've dreamed of having a car with a computerized dashboard, but it seemed out of reach until recently. With the advent of affordable tiny embedded computers like the Arduino and Raspberry Pi I was finally ready to make this a reality. I wanted a system that could grow with my dreams, so I created CADI, an open source Computer Aided Dashboard Instrumentation system. I'll take you with me from concept to integration, taking a look at how I choose my hardware, what I've learned trying to integrate with my car's electronics, what it can do today, and where I'd like to take it moving forward. If you've ever wanted something more than that stock radio & analog A/C controls you'll want to check out project CADI (projectcadi.com).

Speaker

Breakout Session

Hacking your work life __ balance to take over the world.

Everyone has the same 24 hours in a day, so how do some people seem accomplish so much more? It’s time to learn to hack your work life __ balance to have more time to pursue your passion projects, spend more time with those you love, while keeping your work ethic strong. Let’s take over the world!

Speaker

Keynote

How to (re)engage stakeholders in an Agile world

Making the move to Agile is exciting! However, like any new, shiny toy, the newness wears off. Sometimes quickly. Engaging stakeholders is an essential part of success in Agile. How do you keep them attentive? How do you encourage healthy, spirited discussion/debate without it coming to fisticuffs?

This presentation will explore many ways we've learned to successfully, and unsuccessfully, engage stakeholders in our brand and company. We'll also cover our expectations for stakeholders and expectations we've set for ourselves in how we deliver value to our stakeholders.

Speakers

Breakout Session

Practical Agile

Thursday, 3:45 PM - 4:45 PM
| Perkins

How to be a Leader

What is leadership? That term gets thrown around a lot, but what is it really? What do leader do that makes them leaders? Leadership can be learned and that is good as leaders are in high demand and in short supply. TO be an effective leader, you must first understand what leadership is and what traits a leader exhibits.

During this session, we will review leadership traits and principles and how you can implement them within your teams. By demonstrating these in your daily activities you will earn the respect, confidence, and loyal cooperation of those on your team.

Speaker

Breakout Session

How to Sell a Service: It Starts With C

People who are brilliant at providing technical solutions are not always comfortable with the sales process. But as soon as you stop prospecting, your ship is dead in the water. This is an entertaining, straightforward approach to equip conference attendees to make a positive contribution to the sales process. By the end of the session, participants will understand these points and know how to act on them:

• Your prospect is motivated by fear that this project won’t turn out well;
• Buyers make decisions the same way you do;
• You can only sell a service if people believe you will come through;
• Both personal and corporate credibility matter;
• There are deliberate, practical ways to raise your own image in the eyes of the prospect as a reliable provider;
• You must talk to live human beings to sell a service, but it is not that big of a deal

Speaker

Breakout Session

How to Work with People: A Guide to Playing Nicely with Others

Humans. No matter what we might wish, we have to work with them to get stuff done. Unfortunately, when we join a team it doesn’t come with a manual. Figuring out how to get things done and get everyone pulling in the same direction can be a nightmare.

But it doesn’t have to be! In this example-driven talk you’ll learn what a personality type is, you’ll learn some methods for communicating better with others, and you’ll dip a toe into the psychology of team dynamics - all without having to read a huge textbook or a bunch of manager-focused books trying to sell you something. You’ll come away with tools you can use to be a better teammate and to create a stronger team, regardless of your role. Let’s get started actually working together!

Speaker

Breakout Session

How yoga has made me a better developer.

In the tech world, we sit – a lot – as our jobs require us to occupy our chairs for hours on end. The number of people who complain of neck and back pain is on the rise, because our body is not evolved for sitting behind a desk and staring at screens. New studies say that sitting is the new smoking, so are we all doomed?

During this session, I will talk about “programmer back” and show you 10 asanas (or yoga postures) that almost anyone can do to help undo the damage created by long days spent sitting at a desk.

Speaker

Breakout Session

Friday, 2:30 PM - 3:30 PM
| Devaney

I Feel the Need for Web Page Speed

We demand high performance web applications. To build them we need every single piece of information to help us find actionable ways of speeding up our applications. In this session learn how to use the performance API together with common browser performance tooling to determine down to the method level how long our pages take to perform operations. We’ll also touch briefly on instrumenting up popular frameworks such as React & Angular, running performance checks on mobile browsers, and free open source tools that can help you diagnose and monitor performance.

Speaker

Breakout Session

I know I should be Unit Testing, but I don’t know how or where to start

I’ve talked to many developers about why Unit Testing (as well as automated integration and acceptance testing) and why I think it should be something that is a natural part of development. I usually get the a few similar responses from those who haven’t adopted this viewpoint.

“I know I should be Unit Testing and that it can be helpful, but …”

“I don’t have time to figure it out and it’s not built into the quote.”
“I don’t know how or where to start.”
“I’ve been successful for a lot of years, why change now?”
I hope to help you get started moving past not knowing how and where to start and make automated testing as normal to you as writing code.

Speaker

Breakout Session

Introduction to Angular 8

Alain Chautard will go through an introduction to the Angular framework. If you don't know anything about Angular, that's a perfect opportunity to learn all of the basics and get you started with the framework and front-end development! Alain will talk about TypeScript, components, services, pipes, and how to work with Angular CLI through live coding.

More specifically, we are going to understand how Angular works and how it runs in a browser. We're also going to talk about Angular CLI, a tool to help scaffold an Angular application.

This workshop will be packed with examples and code labs to help understand how easy it is to write Angular web applications.

Speaker

Full-day Workshop

Introduction to Typescript

Love or hate it, typescript is a fast growing language that offers many benefits not yet realized in most javascript environments. This presentation provides an introduction to typescript so you can decide if typescript is right for you.

We'll cover language features, how it transpiles into javascript, and some basics on how to set up your environment.

Speaker

Breakout Session

Javascript / Not Javascript

If you have been using Typescript for a while you may have missed out on some of the new features in Javascript. Language features you thought were unique to Typescript may be available in Javascript as well. So just how different are these two today? Let's test your knowledge of the Javascript and Typescript by looking at code snippets and determining if it is Javascript or Not Javascript. You may even learn about a few new features in the process!

Speaker

Breakout Session

JUnit 5 the Next Step in Automated Testing for Java

JUnit 5 has been out for a year, so what is the big fuss and why should I take the time to update my existing automated tests to use JUnit 5? In this presentation we will look at many of the new features that have been added in JUnit 5 and not only how they make automated testing easier, but allow developers to write tests in ways that were difficult or impossible to do before. If you have been wondering why you should make the switch from JUnit 4 to JUnit 5 you will definitely want to check out this presentation.

Speaker

Breakout Session

Keeping up with C#

Since C# was rewritten entirely from scatch for version 6, the updates to the C# language have been coming very quickly, both in major version release which typically correspond to a Visual Studio release, and out-of-band point releases that get new, useful features in developers' hands sooner rather than later. With all the changes happening, it's difficult to keep up, and that means you may be missing out on some language features that will make you a more productive programmer. In this session, I'll take you through some of the best C# language features that have been introduced recently and prepare you to use them to their full potential.

Speaker

Breakout Session

Leap to the future: Introduction to Quantum Computing

Many experts in the field agree that Quantum Computing is finally within the realm of realization.

But what is Quantum Computing? Why do we need it? What can we solve with it that we cannot with supercomputers?

What are some of the challenges involved?

What does a quantum program look like?

In this easy-to-understand introduction, John demystifies the basics of quantum computing, and introduces its context to an audience that is familiar with software-engineering but perhaps not deeply schooled in quantum physics!

Speaker

Keynote

Leveling Up Your Junior Developers

Our industry is brimming with new talent, but the difference between a good and bad mentor is monumental for a new developer's career. While every developer has the opportunity to impact their team in this way, many pass on the change because they find it to be boring, tedious, or they don't think they have enough to offer. We will cover not only why you should take a role in helping grow your team's talent, but also proven strategies to do so successfully.

Speaker

Breakout Session

Friday, 10:00 AM - 11:00 AM
| Ardis

Managing Software Development for Change

One of the greatest challenges modern software developers encounter is the constant need to change how the software works or what the software does. I this talk I present an architectural pattern based on principles of SOLID. Contracts, Hosts, Managers, Engines, Services, and Tests eases these pains and creates natural and intuitive structure to managinge software development for change.

Speaker

Breakout Session

Managing state in React

Should I use local or global state to manage my components. Do I need actions and reducers for my menus? What about forms? Should I be using providers instead? If you have asked yourself any of these questions, you're not alone. Managing state in an application is no longer a simple task. Join us as we look at the three popular ways to manage state, with component state, providers, and through Redux. We'll take a look at the advantages of each method and when you may want to use them.

Speaker

Breakout Session

MICRONAUT FROM IOT TO GCP

In this deep dive workshop, you'll learn how to use the new Micronaut Framework in concert with Google Cloud Platform services, such as Cloud SQL, Kubernetes, and Google’s Instance Metadata Server. Discover an easier way to build fast, lightweight JVM microservices and deploy them to Google Cloud.

OVERVIEW
Google Cloud Platform (GCP), offered by Google, is a suite of cloud computing services that runs on the same infrastructure that Google uses internally for its end-user products, such as Google Search and YouTube.

Micronaut is a modern, JVM-based, full-stack framework for building modular, easily testable microservice and serverless applications, with an emphasis on developer productivity and code simplicity. Micronaut provides great support for simplifying the development and deployment of microservices to GCP.

This workshop explores Micronaut's high-productivity capabilities and includes a hands-on demonstration of how to build a suite of services with the new framework, deploy them to Raspberry Pi edge devices and GCP, and get the whole architecture wired together with minimal effort.

COMPLIMENTARY HARDWARE
Each participant will receive a Raspberry Pi Zero W device and the necessary, related hardware to complete the lab exercises. Participants may keep the hardware after completing the course!

Speaker

Full-day Workshop

Microservices, Micronaut And Your Digital Future

The modernization of a sophisticated technology stack is a delicate balancing act that rests on understanding how any one change will affect the entire ecosystem. Business leaders who oversee mature technology stacks are particularly confounded by the demand to make changes quickly (and correctly) while simultaneously increasing the complexity of their applications.
Microservices promise to alleviate this burden by decomposing complex applications into a set of manageable services that are much faster to develop and much easier to understand and maintain, but there are challenges associated with this type of application architecture. It is important to recognize the challenges and to understand how best to manage those challenges.

Speaker

Keynote

Migrating From Web Forms to React Efficiently: A Study In Value Engineering

In late 2018, the engineering team at Buildertrend (BT) began a project to revamp our 13 year old web application. We've become an industry leading product by moving fast and focusing on what is important for our customers. This approach has worked extremely well for us, but it does come with tradeoffs. Much of our core web functionality still exists in ASP.NET Web Forms. We've also built APIs that mirror that functionality to support our native apps.

The goal of this revamp is to get the BT web application off of Web Forms as efficiently as possible. This talk will go into detail on how we're using a value engineering approach to move from Web Forms to a React / API driven front end. Value engineering is commonly used in the construction industry and refers to the systematic and organized approach for providing all necessary functions of a project at the lowest possible cost. At Buildertrend, we develop construction project management software so it made perfect sense to apply this concept to our project.

This talk will review:
* The engineering tradeoff decisions being made with this approach.
* The agreed upon migration process.
* The complexities of migrating mission critical web pages, in many cases without system documentation on how things function.
* The current state of the project @ BT.
* The future opportunities, technical and business, created by this project.

This talk will not focus on best practices (although we did adopt them when we could!), but rather taking what you have today and making it better in an effective manner.

Speaker

Breakout Session

Mocking .NET Without Hurting Its Feelings

Unit testing has become an accepted part of our lives as .NET programmers. To help focus our tests to only the code we want to validate, Mocking Frameworks are a powerful tool in our toolbox. Like many tools, if you have an understanding of how the tool works under the hood, you can bend it to your will (and also know where it'll break if you bend too much).

In this session, you'll learn about the two main types of mocking frameworks: constrained frameworks (like RhinoMocks and Moq) and unconstrained frameworks (such as Typemock Isolator and Telerik JustMock). I'll dig into how the two actually do their magic and we'll discuss the pros, cons, and limits of both. We'll look at examples of how to use the frameworks in your tests, mocking out dependencies from your own code and even third-party logic.

You'll get the most out of this session if you're comfortable reading C# code and have a general understanding of class inheritance in .NET, along with some experience writing and running unit tests. Prior experience using mocking frameworks is not necessary.

Speaker

Breakout Session

Microsoft Stack

Thursday, 10:00 AM - 11:00 AM
| Osborne

OAuth 2.0 and OpenID Connect (In Plain English)

Abstract

You’ve probably at least heard of the OAuth and OpenID Connect standards. It’s challenging to find a good overview of how they work. In this talk, Micah digs into these protocols in plain English, including a “Live Action OAuth Theater” segment in which volunteers act out a common OAuth interaction.

Description

If you’ve ever tried to search for information on OAuth and/or OpenID Connect, you’ve probably encountered deep dive code examples or references to the specifications. The specifications are great if you’re building OAuth from scratch or suffer from insomnia. Many examples focus on just code, rather than concepts. These types of resources is useful for understanding the concepts and historical backdrop for why OAuth and OIDC exist.

In this talk we start with the foundations of federated and delegated authentication and authorization, work our way through concepts and foundations for OAuth and OIDC and end with some practical demonstrations of the standards in action.

Speaker

Breakout Session

Packaging your world with NuGet

Whether you are creating an open source library or building enterprise app core components, you need to get that functionality into other projects. But developing these resources is usually easier than consuming them. How about a worry free way to distribute and reference those resources in your project that will let you stay up to date, but allow you to avoid problems that may introduce breaking changes or new bugs? NuGet packages to the rescue! We'll also take a look at where you can find NuGet (packages aren't just for code any more) and how to create, distribute, and maintain your very own package. Then, you’ll be ready to share your package with your team, your enterprise, or even… The world!

Speaker

Breakout Session

Personal Kanban

Join me for a quick review of the major concepts presented in Jim Benson's foundational book, Personal Kanban. We will start by reviewing the two simple rules of Personal Kanban: 1) Visualize your work, and 2) Limit your work-in-progress (WIP). Then we will cover other important topics from the book, including establishing your backlog, what is value stream (or how to organize your Kanban Board), what it means to pull work through the process, and how to embrace kaizen (a state of continual improvement). The goal is to give you enough information to get you started down the path to using Kanban to manage your own personal tasks and projects.

Speaker

Breakout Session

Playing with Purpose. Up your Agile game!

"It's okay to have fun at work! Games can teach individual team members how to work together as a cohesive team and can reinforce agile concepts. In this session attendees will participate in a variety of games designed to boost collaboration, communication, and trust.

"

Speaker

Breakout Session

Practical Agile

Thursday, 2:30 PM - 3:30 PM
| Perkins

Post Burnout Thoughts

Working in the tech industry can put a lot of pressure on people. Long hours, tight deadlines and a culture of always being connected can easily lead to depression or burnout. Through the sharing of a personal experience, the attendees will learn to help people that might be experiencing distress and stop keeping this subject taboo. 1 in 5 North Americans are dealing with mental illness and the costs associated with this is too high to ignore. Join us to see how you can help to reduce the risks associated with burnout.

Breakout Session

Attendees will gain insights on effectively incorporating Continuous Improvement in their daily work and suggestions for influencing others in their organization to operate with the same mindset.

As a response to rapid growth, learn how one organization is introducing a Continuous Improvement initiative to encourage a proactive stance with process, product, service and system improvements.

This interactive session will explore the tools introduced to all team members as part of the Continuous Improvement program and will provide relevant take-aways for attendees to share immediately with their organizations.

Breakout Session

Practical GIT: from beginner to fearless

This training is an introduction to GIT for source control. We'll take a look at getting started with GIT on our own machines, as well as working with GIT at public/private repositories on GitHub and/or BitBucket.

GIT can scare people. It shouldn't. GIT is awesome, and it's something that everyone should be using - it can be for more than just code! Are you someone who edits photos? Are you someone that keeps track of things on one or more Excel workbooks? Are you an author who writes content? Even though this workshop is primarily geared towards those who do use code, learning the basics and commands of GIT can benefit anyone.

The workshop will cover practical scenarios that happen and how to work with a GIT repository to accomplish each one. Additionally, some optional ways to do the same thing in GIT will often be explored.

Speaker

Full-day Workshop

Progressive Web Apps are the future

Alain Chautard will introduce what Progressive Web Apps are all about and explain why they are the future for web / mobile development.

In this talk, we will see how progressive web apps can allow us to write our web application code once, and use it on any platform with a native behavior. We will see that the very same HTML / Javascript code can now behave like a native Android or IOS application by implementing the Progressive Web App pattern, which is about to become a W3C standard.

We're going to see actual examples of progressive web apps, as well as dive into the different standards involved in making progressive web apps a reality, such as service worker, web app manifest, and notifications.

Speaker

Breakout Session

Reactive for the Impatient (A Gentle Intro to Reactive Programming and Systems)

As Java is an object-oriented language that inherently supports the imperative programming style, asynchronicity presents a challenge that can turn the code into nightmare. One way to deal with the complexity of asynchronicity is to introduce reactivity onto the coding level (reactive programming), and/or to handle it on the design and architecture level (reactive systems design).

This talk presents to the audience a few of the major Java-based reactive frameworks and toolkits in the market today, such as RxJava, Spring Reactor, Akka, and Vert,x. It will start by going over the basic tenets of reactive systems, and some examples of the problems that these systems aim to solve. It will discuss the 2 most commonly used Java frameworks for implementing reactive coding - RxJava and Spring Reactor, and will show some code samples. It will then bring the audience to the next level of "reactivity' by introducing 2 reactive frameworks - Akka and Vert,x, which are usually used for implementing reactive microservices. It will draw some comparisons between these 2 frameworks and cite some real-life examples of their usages.

The takeaways for the audience will be an understanding of the key differences between reactive programming versus reactive systems, and the strength and weaknesses of each of the surveyed frameworks.

Speaker

Breakout Session

Refactoring Legacy Code Into Testable Code

Do you have that project that is near impossible to write unit tests for? Or do you spend more time trying to maintain unit tests rather than writing your actual code base? Maybe you noticed your legacy code is too complicated, and decided it wasn't worth the time to write unit tests. I'm here to show you that it is definitely possible to give your code base a beautiful restoration. In this session we will go over some techniques to get on track to refactoring a legacy code base to become testable. After this session you will have a set of skills to be able to improve your legacy code and make it testable code.

Speaker

Breakout Session

Rock-Solid Components with TypeScript and GraphQL

Most recent javascript frameworks bring a solid component model to modern web development, but how can you guarantee that your components work correctly? In this session, you learn how the features of Typescript can be leveraged to bring clarity and dependability when constructing components with React. Using Typescript can help to catch errors early in the development life-cycle. GraphQL and its type system can ensure confidence in your components while fetching remote data. This comprehensive approach ensures that your components behave as you expect, and allows you to eliminate run-time errors. Learn how using types can keep your users happy!

Speaker

Breakout Session

Emerging Technology

Thursday, 2:30 PM - 3:30 PM
| Rozier

Saving 60 Million Dollars: Steps Towards GDPR Compliance

A deep dive into finding and deleting your users' data.

Data privacy is becoming a priority on the political landscape. Legislation like the EU's General Data Protection Regulation (GDPR) imposes hefty fines on companies that mishandle their users' data. GDPR allows users to request a copy of their data, and to request that their data be deleted. For existing and legacy applications, this can be a non-trivial task. This talk discusses a first implementation of tools for finding and deleting user data, as well as more advanced approaches that can be used in new and actively developed projects.

Speaker

Breakout Session

Securing Java Microservices with Java JWT

Abstract

Micah will take you on a token based journey. The talk covers what tokens are, looking at cryptographically signed tokens, using the JJWT library to create JWTs, mitigating CSRF attacks using JWTs and establishing trust between microservices using JWTs. Some slides and lots of code.

Description

This is a popular talk that I gave during my motorcycle road trip up and down the east coast. While I work for Stormpath, there are no Stormpath dependencies in the code. It's an example that uses Spring Boot with Spring Security and the open-source JJWT.

In the first part of the talk, I introduce JWTs and their utility by replacing the default CSRF functionality in Spring Security with a custom one that uses JWT. It demonstrates how, in addition to doing a "dumb" equals match for the submitted token and the one on record, a JWT can be inspected for expiration. This makes it so that you can have a form, protected by CSRF, that must be submitted within a certain period of time.

In the second part of the talk, I have a Spring Boot microservices example. I run two instances of the example and demonstrate how they initially do not trust signed JWT messages between each other. I then discuss how to establish trust between these microservices (by registering the public keys of each with each other) and then show how they now will trust messages. Finally, I talk about and demonstrate a more modern approach to microservices using Kafka messaging as the backbone rather than HTTP.

Speaker

Breakout Session

Serverless Image Processing with Amazon AWS

Leverage Amazon AWS serverless computing to provide a low-latency, highly available image processing service. By going serverless, AWS handles the heavy lifting of provisioning and scaling, which allows us to focus on functionality. Let's explore two different approaches to process images on-the-fly within AWS, and view examples of each implementation.

Speaker

Breakout Session

Stepping Up from Developer to Tech or Team Lead

So you've been doing this for a few years and in a one on one your boss asks you about interest in a leadership role. What does that mean? You're now responsible for a subset of requirements, architecture, internal and possibly external communication, and assigning work. If you have to manage people, there is even more. We'll talk about how to oversee your project(s) without losing sight of what is going on today, keeping team members motivated, dealing with unexpected issues, and what all your cone of responsibility may include.

Speaker

Breakout Session

Thursday, 3:45 PM - 4:45 PM
| Devaney

Sustainable accessibility

Many development teams find it difficult to consistently, efficiently, and cost-effectively make their content accessible to people with disabilities. In this talk, I will discuss some approaches that teams can use to accomplish these goals. Specifics include:

A high-level introduction to accessibility and ADA compliance

The role of education and when it should happen

What each team role needs to do to make their product accessible

A high-level overview of testing strategies and tools (automated and manual)

How to address accessibility at the planning phase

How to address accessibility at the design phase

How to address accessibility at the development phase

How to integrated automated checks in your continuous integration testing

Speaker

Breakout Session

Team Professional Development Challenge

There is more to creating a culture of professional development than making resources available or hiring the right people. If Engineers cannot learn in their current positions, the results are either engineers who leave the project/company, or worse yet engineers who learn nothing new and stay on the project. The speakers current project encourages continuous professional development by intrinsically motivating team members to participate in Team Professional Development Challenges. There is value in fostering a culture where the motivation for professional development is through a desire for mastery and not external motivating factors i.e. material rewards. This internal drive provides a stronger motivation, and allows for a sustained improvement effort among team members. The team members compete and celebrate each other’s successes in areas such as education, community outreach, training of peers, and sharpening-the-saw activities like weekly workouts and triathlons. This presentation will detail how the program was set up, how it has evolved over past years, and the results within the teams. The discussion will cover how this type of intrinsic motivation works and how the results can be achieved with relatively few financial resources. The presentation will also cover what can be done to encourage high participation and what pitfalls must be avoided that can discourage the behaviors you are trying to promote.

Speaker

Breakout Session

Practical Agile

Friday, 1:15 PM - 2:15 PM
| Perkins

Test Driven Development: Back to the Basics

Test Driven Development (TDD) is a highly recommended but seldom utilized agile development practice. Primarily originating and associated with Extreme Programming, TDD is often misunderstood and therefore left by the way side when agile teams get going with development. I want to go back to the basics of TDD and show why it should be a practice every team employs. In Design Studio and Senior Design, we manage nearly 40 projects with more than 200 student team members combined. Test Driven Development can greatly impact these students’ careers in software development once they have realized its power and taken advantage of its benefits. Let’s bring it back down to the basics to remind you of this great opportunity.

Join us as we explore the wild world of user manipulation. The Bait and Switch. Trick Questions. Misdirection. Confirm-shaming! Discover the latest ways UX designers trick their users, how easy it is to do by accident and how it affects your brand.

[ Sounds great ] [ No, I hate knowing things ]

Speaker

Breakout Session

Thursday, 10:00 AM - 11:00 AM
| Devaney

The Dungeon Master's Guide to DevOps

Every good Dungeon Master needs a guide to help their party adventure through the world of DevOps. From the tools necessary to common monsters found along the way. Help your party succeed at a critical part of delivering quality software.

We'll go over the full CI/CD cycle: builds, commit hooks, static code analysis, pull request review tools, automated linting, QA/Security/Release automation and build automation. Gained from years of practical experience I’ll share what has worked best on projects cross industry and from teams ranging for 2 to 140.

Speaker

Breakout Session

The Neuroscience of Intuitive Design

What do economics, neuroscience, and web usability have in common? Come with me into the intersection of Daniel Kannemahn's Nobel-winning work on how our brains think, Ray Kurtzweil's pioneering research in machine-learning, and Steve Krug's brilliant edict "Don't make me think!"

What does "intuitive" mean to the wetware in your skull? How does intuition feel? How does it work? Can you draw a picture of it? If you love the nerdy science behind the seemingly simple things humans do, this is your talk.

Speaker

Breakout Session

The Trials And Tribulations Of Being A Fully Remote Developer

Imagine working from home full-time. Your job choices are not limited geographically. You have a nice quiet workspace in your comfortable home with limited distractions. Lunch break in your easy chair. What's a dress code? You don't have to go outside in the morning during a frigid Iowa winter. Sounds perfect.

Now imagine this actually happening to you and nothing goes to plan. How do you stay motivated? How do you deal with communication breakdowns? The feelings of isolation? Of feeling like a second rate employee of the company?

In this presentation, Mike will review the tips and techniques he has learned over the past several years while being a full-time remote developer. This session is geared both towards developers and managers of remote development teams.

Speaker

Breakout Session

Friday, 3:45 PM - 4:45 PM
| Osborne

To 2FA or not to 2FA? Let's answer this question

An exploration of two factor authentication from a developer's perspective. It's difficult to find two factor implementation best practices, so attendees will come out of this talk learning some trials and tribulations of a real life implementation of two factor authentication, why the sms based authentication is by far the least secure, and why two factor is not the security bandage that it is billed to be.

Speaker

Breakout Session

Usability Studies: The $1 Fix to the $100 Problem

Usability and User Experience are hot topics on the minds of both project stakeholders and customers. Many businesses are without dedicated UX professionals, committed to the research and design of key projects. As a developer, project manager, or business analyst, what can you do to improve the usability of your project? The answer: usability studies. Usability studies are an easy technique to learn and hard technique to master. Join Ash Banaszek, Sr UX Project Consultant at Union Pacific, as she walks you through the basics of usability studies to start finding real, actionable results to improve your applications. In this session Banaszek will take you through:
* What are usability studies and why should we use them?
* Pinpointing what parts of the app to study
* Finding the right medium to test
* Creating tasks and identifying users
* Running a study
* Interpreting results
* Applying results to your design
* Communicating results with stakeholders
At the end of this workshop, participants have the ability to apply your knowledge by testing your own applications or an application the instructor provides. If you would like to test your own app, please be prepared to bring it and share.

Speaker

Full-day Workshop

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 a TDD Approach to Docker

Stop waiting until deployment to test the contents and configuration of your Docker images! Test Driven Development isn't just for application code. Apply it to your infrastructure code as well! There are multiple tools available to verify the output of Dockerfiles. Adding one of these tools into your developer build and CI/CD pipeline can detect errors and regressions earlier, making them less costly to fix. It's time to replace docker run as your testing tool of choice for Docker images.

Speaker

Breakout Session

Using Google Analytics To Market Your Software Idea

This presentation will provide some handy marketing tips for independent software developers. Through the use of analytics software, developers can learn some basic reporting and analysis ideas for marketing their software effectively online. The first few slides will give an overview of digital marketing trends, with the rest covering how to deploy Google Analytics & how to use the reports in the GA dashboard.

Speaker

Breakout Session

Thursday, 3:45 PM - 4:45 PM
| Crouch

Website Security for Web Developers: What You Need To Know

We live in a world full of news articles about hacking attempts, successful hacks, and malware spreading like wildfire. It is important to have an understanding of how, as web developers, we can work to ensure our systems are secure. Often times security, and related, concepts are discussed, but never fully implemented. This session will take a deep dive into considerations, tools, and techniques to ensure that your developed applications are secure, and that you have tools necessary to validate the security.

We will review various web security techniques including the proper usage of SSL Certificates, additional HTTP Headers for Browser security support, automation methods of validating integrity of your application, the OWASP Top 10 Issues list, and the role of security assertions from third-party vendors. After this sessions, developers will have a toolbox of items to review, and reference materials to further educate themselves on common security pitfalls that impact developers.

Speaker

Breakout Session

Attendees will get to explore application development with Google Cloud Vision API which can categorize photos, detect objects, identify landmarks, and extract corporate logos from images. From there, the sky's the limit with exploring the detected labels. We'll check out different photo sharing accounts, and see what we can know about them all through their photos. This will use Google Cloud Platform, Ruby, with JSON formatted labels that are translated into a tag cloud with what activities are being displayed through the images and shows a cross-section of different technologies.

Speaker

Breakout Session

Microsoft Stack

Thursday, 11:15 AM - 12:15 PM
| Osborne

What's new in Visual Studio 2019

Visual Studio 2019, the next version of Visual Studio has launched with numerous new features and productivity improvements. Learn about some of the new features for developing such as AI-Powered Intellicode and .NET Core 3 improvements including WPF and WinForms into the framework. Learn about collaboration improvements that include Live Sharing and managing pull requests from the IDE. I will also show many other improvements.