Iowa Code Camp - Sessions


Registration is closed. See you Saturday!

  • 100 Days of Scala

    Running on the JVM, Scala is both object-oriented and functional with lots of syntactic sugar and features that all the cool kids are wanting. Lots of people really love Scala and lots of people don't... My team has been working with and learning Scala for about six months. In this presentation I'd like to share Scala killer features, the challenges with integrating Scala into our team and when Scala is right for your team.

    3:45 PM - 5:00 PM : Oakdale Ballroom 1 : 100 Days of Scala (Level: 100)
    Speaker: Gregory Hazen

  • A DSL for Your API

    Have you ever wanted to allow your users to be able to write scripts to execute actions within your application? Have you ever wondered how applications that do this accomplish it? Have you ever been sitting around with too much time on your hands and needed something interesting to think about? If so, then this talk is for you. During this talk we'll look at an app with a simple, easy to Grok API, and build up our own scripting language using the ANTLR4 Parser/Lexer generator, with which to drive it. All this, faster than you can say "The Dragon Book".

    2:15 PM - 3:30 PM : Oakdale Ballroom 1 : A DSL for Your API (Level: 200)
    Speaker: Greg Sohl
    Slides

  • Amazon Web Services - Auto Scaling Groups

    We have all heard that the "cloud" can automatically expand if the demand of your application grows, but have you ever seen it in action? How does it work and what does it look like? In this talk I want to introduce auto scaling groups hosted on AWS. Let's demo setting this up and discuss a few use cases that I have seen this in production both with and without an Elastic Load Balancer. If the demand of the application decreases let's have your environment shrink as well to save money.

    9:00 AM - 10:15 AM : Clark Room : Amazon Web Services - Auto Scaling Groups (Level: 100)
    Speaker: Shawn Woodward

  • ASP.NET & 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!

    9:00 AM - 10:15 AM : Oakdale Ballroom 2 : ASP.NET & Identity: The Things You Were Never Told (Level: 200)
    Speaker: Mitchel Sellers

  • ASP.NET WebAPI & Swagger: Create Self Documenting API's

    Most developers do not want to be bogged down with writing document, however, we expect that all of our partners provide us great API documentation. Its an amazing paradox, but a common situation. This session will discuss how you can take your existing WebAPI project and create amazing documentation, with test capabilities easily using Swagger. By making your code self-documenting it is possible to spend more time in your code, and less time working on documentation. With an automatic process as well, it is not possible for you to "miss" something in your documentation making it easier for the consumers of your API's. After this session attendees will have a step-by-step understanding of how to integrate Swagger into their projects, to properly secure the implementation, as well as how to customize the layout to make the API truly match your application look and feel. A true turn-key understanding.

    12:45 PM - 2:00 PM : Oakdale Ballroom 2 : ASP.NET WebAPI & Swagger: Create Self Documenting API's (Level: 200)
    Speaker: Mitchel Sellers

  • Break

    Break and refreshments

    10:15 AM - 10:30 AM : Atrium : Break (Level: 100)
    Speaker: Iowa Code Camp

  • Break

    Break and refreshments

    2:00 PM - 2:15 PM : Atrium : Break (Level: 100)
    Speaker: Iowa Code Camp

  • Break

    Break and refreshments

    3:30 PM - 3:45 PM : Atrium : Break (Level: 100)
    Speaker: Iowa Code Camp

  • Breakfast sponsored by Workiva

    Join us for a continental breakfast, sponsored by Workiva

    8:00 AM - 9:00 AM : Atrium : Breakfast sponsored by Workiva (Level: 100)
    Speaker: Iowa Code Camp

  • Building Enterprise Grade Web APIs in ASP.NET Core

    APIs have become one of the most important components of modern application design. Yet most articles and tutorials on how to build APIs show code that looks much more like "exampleware" rather than well designed, enterprise ready software. In this talk, we'll move past the oversimplified examples and show the patterns and practices that go into building a sustainable, extensible API that is highly functional and easy to consume. We'll start by quickly reviewing the reasons why you would want to build an API. Then we'll discuss how to organize the code in your API solution to to achieve a clean separation of concerns. We'll then talk about how to create effective URI's for your resources and how to deal with complex object associations you may encounter. We'll discuss how you can easily handle cross cutting concerns in ASP.NET Core and finally, how implement versioning in your API.

    3:45 PM - 5:00 PM : Oakdale Ballroom 2 : Building Enterprise Grade Web APIs in ASP.NET Core (Level: 200)
    Speaker: David Berry
    Slides

  • Building Large, Yet Maintainable, ASP.NET MVC Applications

    Greenfield ASP.NET MVC apps always start out easy to maintain. As time goes on, and more features are added, deliberate and constant attention must be paid to the maintainability of the app before it spirals out of control and becomes the project that no one on the team wants to touch. In this talk, we'll talk about patterns, libraries, and practices for increasing the maintainability of an ASP.NET MVC app that has lots of business logic, is business critical, and/or changes frequently. This is a real world talk with real world lessons that you'll be able to take back to the office and use immediately.

    10:30 AM - 11:45 AM : Oakdale Ballroom 2 : Building Large, Yet Maintainable, ASP.NET MVC Applications (Level: 200)
    Speaker: Scott Sauber

  • Closing Session

    Wrap it up and go out with a bang.

    5:00 PM - 5:30 PM : Oakdale Ballroom 1 : Closing Session (Level: 100)
    Speaker: Iowa Code Camp

  • Confronting Your Fears: EntityFramework Performance Deep Dive

    When talking with development teams about Entity Framework I often get one of two arguments. The first being that "Entity Framework Is Slow" and the second "But Entity Framework brings all data back and then filters." These opinions, and more, are not true, and the performance of Entity Framework can be just as good, if not better than other methods of data access. In this session we will investigate Entity Framework and how to best manage the performance in an application. We will discuss common pitfalls, limitations, and other things to consider. Most importantly we will finish with a side-by-side demonstration of EF performance compared to that of another method. At the end of this session you will have the knowledge necessary to talk intelligently about Entity Framework performance and to know how to get the best performance out of your applications.

    2:15 PM - 3:30 PM : Oakdale Ballroom 5 : Confronting Your Fears: EntityFramework Performance Deep Dive (Level: 200)
    Speaker: Mitchel Sellers

  • Cool SQL Server Features Every Developer Should Know About

    We all use SQL Server every day in our jobs, so it pays to know what SQL Server can do for us that will make our jobs easier. This talk will introduce you to some key features of SQL Server that you might not know about but will definitely want to use once you learn about them. First, we'll discuss temporal tables, which provide a convenient way to track all of the changes made to data in a table. Second, we'll talk about the JSON support built into SQL Server 2016 and what capabilities it provides us. Finally, we'll talk about the windowing functions in SQL Server, which provide powerful analytic capabilities to use against our data. After this talk, you will better appreciate some of the rich functionality built into SQL Server and understand how to put these capabilities to work in the applications you build.

    9:00 AM - 10:15 AM : Oakdale Ballroom 3 : Cool SQL Server Features Every Developer Should Know About (Level: 200)
    Speaker: David Berry
    Slides

  • Dealing with Imposter Syndrome

    Ever feel like you don't deserve your job? That at any moment your coworkers might figure out just how incompetent you are and give you the boot? In this talk we will discuss Imposter Syndrome, how common it really is, and steps you can take to combat it.

    9:00 AM - 10:15 AM : Oakdale Ballroom 4 : Dealing with Imposter Syndrome (Level: 100)
    Speaker: Josh Jones

  • Everything you need to know to get started with ASP.NET Core 2

    In this talk, we'll go over the fundamentals of ASP.NET Core 2. Even if you didn't use v1, this talk will give you everything you need to know to get started and be productive on day 1 of your first ASP.NET Core project. If you're currently using ASP.NET Core 1, this talk will also summarize the changes and improvements they made to version 2, and what it takes to migrate.

    2:15 PM - 3:30 PM : Oakdale Ballroom 2 : Everything you need to know to get started with ASP.NET Core 2 (Level: 100)
    Speaker: Scott Sauber

  • He's Assertive, She's Aggressive: Recognizing patterns of unconscious bias in the workplace

    Social science has shown that people tend classify one another by gender, race, or other physical characteristics and instinctively react based on stereotypes and cultural norms. These automatic prejudices (often called unconscious bias) contribute to the disproportionate success of white men in STEM when compared to equally qualified women or minorities. The difference between unconscious bias and intentional discrimination is that the people that participate in it are often motivated to end these behaviors when they're brought to their attention. This discussion will cover some common patterns of unconscious bias that occur in the workplace and offer real, concrete actions to intervene as an employee, a manager, or an organization.

    3:45 PM - 5:00 PM : Oakdale Ballroom 5 : He's Assertive, She's Aggressive: Recognizing patterns of unconscious bias in the workplace (Level: 100)
    Speaker: Andrea Mascher

  • Home grown Devices to the Cloud

    I will cover the basic concepts of IOT and getting data from a device to the cloud. I will demo multiple IOT devices sending data to Azure and back to the device. This session will cover Arduino devices, Azure IOT Hub, Azure Streaming analytics just to name a few.

    9:00 AM - 10:15 AM : Oakdale Ballroom 5 : Home grown Devices to the Cloud (Level: 100)
    Speaker: Arthur Garcia

  • Intermediate R/SQL Server/Docker

    In this presentation, I'll go over what R is, how it's used, and why it's used. There won't be as much diving into the language itself, but more about some of the technologies that relate to R. I'll go over the use of Docker, RStudio, Shiny, and SQL Server for Linux - all with R programming. Having a basic understanding of R is strongly recommended. This presentation goes quick, and we don't really dive into anything for super long. The goal of this presentation is to acclimate someone to this technology stack, and give pointers about what to further dive into.

    12:45 PM - 2:00 PM : Oakdale Ballroom 3 : Intermediate R/SQL Server/Docker (Level: 200)
    Speaker: David Thole
    Slides

  • Introduction to 3D Graphics

    Ever wondered how video games generate those amazing scenes on your monitor? What mystical mathematics goes into producing perspective correct buildings, extremely realistic lighting, and shadows? In this talk, I'll introduce you to the basic math behind 3D graphics in an API and platform agnostic way and give you resources to learn more.

    3:45 PM - 5:00 PM : Clark Room : Introduction to 3D Graphics (Level: 100)
    Speaker: Josh Jones
    Slides

  • Introduction to AWS Cloud Formation Templates

    Cloud Formation Templates are Amazon's answer to Infrastructure as Code (IaaS). If you have not used them yet this will be a great introduction to them. In this talk I will show you how to create them to deploy simple items and will then move on to more complex solutions. At the end of this talk you will understand how you can be using these in your environment to save time and to ensure things are setup exactly the same each time.

    12:45 PM - 2:00 PM : Clark Room : Introduction to AWS Cloud Formation Templates (Level: 100)
    Speaker: Shawn Woodward

  • Introduction to Bitcoin

    This talk is to serve as an intro to bitcoin for other developers. I will talk about how the network operates and, more importantly, why it works. I will also talk about future updates to the network to make it more useful.

    9:00 AM - 10:15 AM : Oakdale Ballroom 1 : Introduction to Bitcoin (Level: 100)
    Speaker: Chris Stewart

  • Introduction to the R Language and Ecosystem

    This session will introduce you to R, a popular language and software environment for data analysis and visualization. We will cover some of the basics of the R language, but we will focus on examples of the kinds of things that R excels at, like data manipulation, statistical computing, and data visualization. We'll also introduce the R ecosystem, including R packages and RStudio. We'll see examples of how you can easily create documents containing code and graphics using tools like R Markdown, or create and publish interactive data-driven web applications using Shiny. No prior knowledge of R is required. The emphasis will be on breadth rather than depth. You'll come away with a basic understanding of what R is all about and suggestions for how to learn more.

    10:30 AM - 11:45 AM : Oakdale Ballroom 3 : Introduction to the R Language and Ecosystem (Level: 100)
    Speaker: David W. Body

  • Lightning Talks

    5-10 minute talks supplied by you! Come prepared or be spontaneous!

    10:30 AM - 11:45 AM : Borlaug Room : Lightning Talks (Level: 100)
    Speaker: Iowa Code Camp

  • Lunch sponsored by Robert Half Technology

    Lunch sponsored by Robert Half Technology

    11:45 AM - 12:45 PM : Atrium : Lunch sponsored by Robert Half Technology (Level: 100)
    Speaker: Iowa Code Camp

  • Mastering Github

    GitHub is often used as a basic Git host, but its platform has so much more to offer. From simple and powerful issues and pull requests, to advanced features for power users and integrators, it’s a tool worth knowing well in its own right. This session will review everything you need to know to master collaboration with GitHub, from best practices for GitHub Issues and how it represents basic Git concepts, to hidden features and the tools enabling its developer ecosystem.

    3:45 PM - 5:00 PM : Borlaug Room : Mastering Github (Level: 100)
    Speaker: Keith Dahlby
    Slides

  • Open Space / Fishbowl Discussion

    An open discussion based on topics provided by you!

    12:45 PM - 2:00 PM : Borlaug Room : Open Space / Fishbowl Discussion (Level: 100)
    Speaker: Iowa Code Camp

  • Opening Session

    Welcome and announcements

    8:30 AM - 8:45 AM : Oakdale Ballroom 1 : Opening Session (Level: 100)
    Speaker: Iowa Code Camp

  • Posh-IIS: How Powershell Can Help You Configure IIS

    Many developers build web applications, but sometimes the hosting of those web applications is developed and maintained by a separate group, causing a lack of understanding how your application is actually hosted on your servers. What if there's a better way? What if the hosting details can sit right alongside your project, and be used both locally and on the web servers, thereby ensuring consistency and repeatability? In this talk we'll review some basic IIS objects, and how to interact with them using Powershell's WebAdministration module. We'll take a look at a couple of tools that may help in developing those scripts, and discuss how that script can ultimately be leveraged in an automated deploy process using Octopus Deploy as an example.

    12:45 PM - 2:00 PM : Oakdale Ballroom 5 : Posh-IIS: How Powershell Can Help You Configure IIS (Level: 100)
    Speaker: Matt Ash
    Slides

  • Programming in R

    In this presentation, I'll go over what R is, how it's used, and why it's used. This presentation is a bit more language-heavy, discussing language concepts and how it compares to other languages out there. After this presentation, you should have a good understanding of why R is used, and some of the things to look out for when using it. While this is intended to be a 'beginner-like' session, having a few other languages known is strongly recommended.

    3:45 PM - 5:00 PM : Oakdale Ballroom 3 : Programming in R (Level: 200)
    Speaker: David Thole

  • ReactJS without the JavaScript madness

    Do you want to get started writing clean and testable UI code with ReactJS but don’t want to learn 13 different tools and 6 different libraries? Facebook's Create React App allows developers to get started building apps without having to worry about build configuration. Get started writing ReactJS without having to configure tools such as Webpack or Babel. Join me as I teach you how to write clean and testable ReactJS with Facebook's Create React app.

    2:15 PM - 3:30 PM : Borlaug Room : ReactJS without the JavaScript madness (Level: 100)
    Speaker: Ajdin Hedzic

  • Secrets of the Senior Developer

    Are you interested in becoming a senior developer? Already one and want to be better at it? As a Principal Software Engineer one of my jobs is helping engineers level up. This talk will cover a wide range of skills that a developer should aim to master to advance to the ranks of senior developer. I'll give away one of the most critical secrets in advance: we're all still working at mastering these skills. So, whether you're a newbie or a seasoned vet, this presentation probably has something for you. Come prepared to interact because I hope to learn something from you that will help me grow as a developer too.

    10:30 AM - 11:45 AM : Oakdale Ballroom 5 : Secrets of the Senior Developer (Level: 100)
    Speaker: Tim VanFosson
    Slides

  • Serverless AWS API

    In this session I will demonstrate just how easy it is to create a full stack CRUD application in a serverless environment. In just a few minutes, we will define an API using Swagger, deploy it using Cloudformation, and serve it using API Gateway, Lambda, and RDS. I will also go into caveats around each of these services and at the end we will compare it to EC2.

    2:15 PM - 3:30 PM : Clark Room : Serverless AWS API (Level: 100)
    Speaker: Eric Larssen

  • So You Wanna Go Fast?

    Go's simplicity and concurrency model make it an appealing choice for backend systems, but how does it fare for latency-sensitive applications? In this talk, we explore the other side of the coin by providing some tips on writing high-performance Go and lessons learned in the process. We do a deep dive on low-level performance optimizations in order to make Go a more compelling option in the world of systems programming, but we also consider the trade-offs involved.

    12:45 PM - 2:00 PM : Oakdale Ballroom 1 : So You Wanna Go Fast? (Level: 200)
    Speaker: Tyler Treat

  • Software Architecture In Real Life

    The problem with software architecture is that we do it so little. We draw up the architecture at the beginning of the project and then find the flaws as we maintain it. The foundational theory of software architecture is easy to grasp but without concrete examples costly mistakes are often made. The goal of this talk is for attendees to leave with Real Life code examples, using the highly popular iDesign method, that they can take back to work and put into immediate practice. This is a software architecture talk with working, compiling demos.

    10:30 AM - 11:45 AM : Oakdale Ballroom 1 : Software Architecture In Real Life (Level: 300)
    Speaker: Ken Versaw

  • Taming the Technical Interview

    This interactive workshop will help participants learn how to navigate technical interviews. While created mostly with interviewers in mind, the information presented should also prove useful to individuals hoping to gain more insight into how to succeed as an interviewee. We'll cover the anatomy of a technical interview, best practices, and workshop sample questions with the audience.

    12:45 PM - 2:00 PM : Oakdale Ballroom 4 : Taming the Technical Interview (Level: 200)
    Speaker: Matthew Simons

  • Taming the Technical Interview

    This interactive workshop will help participants learn how to navigate technical interviews. While created mostly with interviewers in mind, the information presented should also prove useful to individuals hoping to gain more insight into how to succeed as an interviewee. We'll cover the anatomy of a technical interview, best practices, and workshop sample questions with the audience.

    12:45 PM - 2:00 PM : Oakdale Ballroom 4 : Taming the Technical Interview (Level: 200)
    Speaker: Steven Osborne

  • Teaching online for fun, growth, and profit

    Do you have skills to pay the bills? Want to put your money where your mouth is and then turn it into even more money? There has never been a better time to get into online teaching. I have been creating and selling online courses for a number of years on various technology topics. With very little effort you can make a few hundred dollars or more per month regularly (hey, that's like getting free cable, internet, AND Netflix). You don't have to be a programmer to do this either - courses on Business skills, management, even how to do day-to-day tasks like manage a budget or change the oil on your car are in high demand. Well cover how to get started, and include discussions on things like: * Using an existing platform vs. Creating your own school at a platform vs. Running everything from the ground up * What tools should be used for developing a course [equipment, setup, studio] * How to make content that students want * How to edit/improve your videos * Challenges to running successful courses * Reasons you should or should not do this * Conquering your fears and dispelling some common myths * Things I should be doing but am not or am not doing a good job at (yet?) [i.e. Marketing, being a Quora addict, etc]

    3:45 PM - 5:00 PM : Oakdale Ballroom 4 : Teaching online for fun, growth, and profit (Level: 100)
    Speaker: Brian Gorman

  • The "ilities" of High Quality Developers

    When designing your systems you probably take the "ilities" into consideration. You know, the non functional requirements such as reliability, scalability, adaptability and maintainability? Systems that perform well in these categories are considered by most to be extremely high quality and serve their organizations well. If these NFRs are a signal of a high quality system, what NFRs signal a high quality developer? Join Brandon to learn and discuss the "ilities" you need to develop to become truly indispensable.

    10:30 AM - 11:45 AM : Oakdale Ballroom 4 : The "ilities" of High Quality Developers (Level: 100)
    Speaker: Brandon Carlson

  • The Junior Developer's Handbook

    Boy Scouts, Role-Playing Gamers, Human Resources...they all have handbooks to help them navigate their roles. Now database developers have one too! In this session, we'll cover the essentials for any T-SQL developer to succeed. Topics include a method for writing new queries, measuring query performance, the importance of date tables and window functions, and time-saving tricks you never knew were possible in Management Studio. In addition, you'll get tips to help you raise your profile and become a go-to resource at work. If you're looking for the missing manual for developers in their first two years, this session is for you.

    2:15 PM - 3:30 PM : Oakdale Ballroom 4 : The Junior Developer's Handbook (Level: 100)
    Speaker: Doug Lane

  • What is Machine Learning?

    Our lives are influenced by data and algorithms more than most of us realize. Movie and product recommendations, speech recognition, spam filtering, fraud detection, medical diagnoses, and even autonomous vehicles are all powered by machine learning, a subfield of computer science dealing with pattern recognition and artificial intelligence. This session will introduce you to the field of machine learning and explain basic concepts such as supervised and unsupervised learning. It will also provide an overview of basic types of machine learning problems such as regression, classification, and clustering. We'll cover one concrete example, which has become the "hello world" problem of machine learning: We'll train a neural network to recognize handwriting using the MNIST handwritten digit database. We'll leave out most of the math and focus on how machine learning works conceptually. You'll come away with a basic understanding of what machine learning is and enough of an idea of how it works to decide if you want to learn more.

    2:15 PM - 3:30 PM : Oakdale Ballroom 3 : What is Machine Learning? (Level: 100)
    Speaker: David W. Body

  • Which Azure Database Should I Choose?

    Deciding which of the many database options to choose from in Azure can be overwhelming. There are many options, and it's impossible for everyone to know all of them. Traditionally, the choice has been to select which relational database to choose. But with all the NoSql databases available, there are many more choices that may be a better fit for your application. What are the trade offs among all the choices? Why pick just one? I will give some practical examples of how to combine different types of databases. Microsoft released Document DB a couple of years ago, which was their first managed NoSql cloud database. Just recently Cosmos DB has expanded those offerings and made it easier than ever to use. Cosmos DB is a service that contains several types of databases: Relational, Key Value Pair, Document and Graph. I will explain what each of these are, along with some code samples for each one to get you started. You will leave this session with a greater understanding of the different types of NoSql databases and what kinds of problems each of them solves best.

    10:30 AM - 11:45 AM : Clark Room : Which Azure Database Should I Choose? (Level: 200)
    Speaker: Anne Bougie


Session Levels

(see http://blogs.technet.com/b/ieitpro/archive/2006/09/29/459944.aspx)

Level 100 Description:
Introductory and overview material. Assumes little or no expertise with topic and covers topic concepts, functions, features, and benefits.

Level 200 Description:
Intermediate material. Assumes 100-level knowledge and provides specific details about the topic.

Level 300 Description:
Advanced material. Assumes 200-level knowledge, in-depth understanding of features in a real-world environment, and strong coding skills. Provides a detailed technical overview of a subset of product/technology features, covering architecture, performance, migration, deployment, and development.

Level 400 Description:
Expert material. Assumes a deep level of technical knowledge and experience and a detailed, thorough understanding of topic. Provides expert-to-expert interaction and coverage of specialized topics.

Links