Iowa Code Camp - Sessions

Registration is now open! Register now!

Get the schedule, session lists and speaker bios on our mobile app.
Android | iOS | Windows Phone

  • "DevOps" on Day 1 with Operations First Delivery

    DevOps lore tell legendary tales of "Unicorn" companies. We're told these mythical companies continuously deliver software to production with nary a blemished aura or mussed mane. Can it be so? Is this but a fairytale? In this talk, we will dispel the fantasy and show you how to get similar results. Spawning the first unicorn is the most difficult, so I will show you the specific steps, tools, techniques and architectural patterns of Operations First Delivery to create your first ?Unicorn? project.

    2:15 PM - 3:30 PM : Robert Half - Room 107 : "DevOps" on Day 1 with Operations First Delivery (Level: 100)
    Speaker: Tim Gifford

  • A Tale of Two Redesigns

    As we move into a world of continuous deployment, divided work, fast moving ops teams and agile time boxes, how does something like a full responsive site overhaul or site redesign get accomplished without a mess of conflicts or new development freezes? What happens when you take two sister companies, both on the Internet Retailer Top 500 list, and try two completely different approaches? We'll talk about what we learned, show you some pitfalls to avoid, and how we ultimately completed a successful full site responsive redesign in "bite sized" pieces, independent of other development, without disrupting the customer experience.

    10:30 AM - 11:45 AM : Room 108 : A Tale of Two Redesigns (Level: 100)
    Speaker: Jessica Bertling

  • An Introduction to Modern Agile

    Does your product development process look the same today as it did a few years ago? Most people haven't changed their practices in years. The Agile Manifesto exhorted us to think critically, but we got processes installed instead. In the meantime, the industry has learned much from movements like Lean Startup and Lean UX, from fields like manufacturing, and psychology, and management philosophy, and from people like Kathy Sierra and Charles Duhigg. Joshua Kerievsky has uncovered 4 underlying principles of successful agility: Making People Awesome, Making Safety A Prerequisite, Experiment & Learn Rapidly, and Deliver Value Continuously. We'll discuss what these principles mean, how they benefit organizations which use them, and how you can join the Modern Agile community.

    3:45 PM - 5:00 PM : Room 108 : An Introduction to Modern Agile (Level: 100)
    Speaker: Christopher Freeman

  • Azure: Move to the Cloud, not just a Remote Server

    Microsoft Azure has come a long way since it was first announced 8 years ago. There are many tools available to make it easy for a developer to transition to the Cloud, and not just push your existing on-prem website to a remote Windows Server. In this talk we?ll cover some of the low hanging fruit within the Azure platform, including AppServices, WebJobs, and Message Queues, and demonstrate how easy it can be to start designing for the Cloud, and better utilize the tools available. We?ll start from ?File > New Project? and have a solution architected for the cloud, written and deployed to Azure, within the first 30 minutes.

    10:30 AM - 11:45 AM : QCI - Room 106 : Azure: Move to the Cloud, not just a Remote Server (Level: 100)
    Speaker: Aaron Hoffman

  • Big Data: Continuous Improvement through Project Data Analysis

    You've probably heard that You can't improve what you can't measure and, over the years, teams have used various techniques to make the invisible visible. From value stream mapping to burndown charts, making things visible is a core component of the continuous improvement process. Brandon Carlson says that even with all this visibility, much of the data surrounding how your teams work is either not captured or not visible, and thus represents a great opportunity for improvement. Imagine your management team tells you that your velocity is too low. Why is it too low, and what can you do about it? Brandon shares one team?s surprising answer to that question when they analyzed previously invisible data. How do you know what the highest risk areas of the system are for enabling the most cost effective regression test strategy? You'll get that answer, too. It's all there, tucked away where no one can see.

    3:45 PM - 5:00 PM : Robert Half - Room 107 : Big Data: Continuous Improvement through Project Data Analysis (Level: 200)
    Speaker: Brandon Carlson

  • 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

    Join us for a ontinental breakfast.

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

  • Building a ReSTful API in .Net Core Web API

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

    2:15 PM - 3:30 PM : QCI - Room 106 : Building a ReSTful API in .Net Core Web API (Level: 200)
    Speaker: Lee Brandt

  • Closing Session

    Wrap it up and go out with a bang.

    5:00 PM - 5:30 PM : QCI - Room 106 : Closing Session (Level: 100)
    Speaker: Iowa Code Camp

  • Correctness, Consistency, and other lies

    An introduction to distributed consensus protocols such as Raft, Paxos as well as new commutative and convergent replicated data types. Will provide a discussion of the CALM theorem and how we can combine different layers of consistency to interject the notion of 'time' into our distributed systems. Will show code examples of an implementation of Raft, Hybrid Logical Clocks, some simple CRDTs and anchor it with some practical advice about distributed consensus and modern databases (SQL & NoSQL). Implementations discussed will be a mixture of Python and Go and maybe a little Java.

    2:15 PM - 3:30 PM : Room 108 : Correctness, Consistency, and other lies (Level: 300)
    Speaker: Ross Hendrickson

  • Git Demystified

    Git is simpler than it first appears. Everything in a Git repository is based on just three fundamental types of objects: blobs, trees, and commits. Once you understand what these are and how they relate to each other, the apparent complexity of Git melts away revealing a simple, elegant system that derives its power from its very simplicity. In this talk, we'll look under the covers of Git to see what is actually in a git repository on disk and what happens when you type `git commit.` You'll come away with a better understanding of how Git really works and greater confidence in using Git. Note: This is not an introduction to Git or a "how to" tutorial. You'll get more out of this talk if you have at least a little familiarity with Git, even (or perhaps especially) if you're struggling to get Git.

    3:45 PM - 5:00 PM : QCI - Room 106 : Git Demystified (Level: 200)
    Speaker: David W. Body

  • Immutable data - How to never delete your data

    Many existing databases use mutable data structures such as B-Trees to index massive amounts of data. This model works really well for users interested in head state, but for certain applications, specifically in the finance industry, we need to keep around the history of our data. In traditional databases, this often means expensive groupings or materialized views, but there is another way. With the cost of storage continually decreasing, we can utilize immutable data structures to keep a permanent history of our data while maintaining highly performant queries. Immutability also allows us to ditch traditional MVCC-type paradigms to coordinate user access and ensure reads are never blocked. I plan on address the following items in my talk: 1. Advantages of immutable data structures 2. State of support of immutable data (or lack thereof) 3. How we utilized immutable data structures to overcome shortcomings in traditional databases 4. If time, explain how immutable data structures actually work (B-trees, linked list, etc)

    12:45 PM - 2:00 PM : Robert Half - Room 107 : Immutable data - How to never delete your data (Level: 300)
    Speaker: Dustin Hiatt

  • In pursuit of perfect CI

    Automated CI systems provide enormous benefits. But they also come with many pitfalls. I have a fairly ambitious goal. I want CI to run instantaneously. I want to make a PR and see feedback immediately. Not 15 min later, not 5 min later, instantaneously (ok, realistically, as close to this as is possible). Any organization desiring to frequently (or continuously) release and deploy software requires a robust and reliable CI pipeline. But also a fast pipeline. However.. how many developers actively understand and pursue optimizations within that context? How many people take the time and energy to learn what, how, and why their CI system does what it does? This presentation will talk through a case study in understanding why your CI system is important, showing how a systematic approach reduced CI time by 75%, and providing helpful insights for others to better approach their own CI systems.

    10:30 AM - 11:45 AM : Robert Half - Room 107 : In pursuit of perfect CI (Level: 200)
    Speaker: Alden Peterson

  • Laws of Software Development

    Just like the laws of Physics and Nature, software development follows simple laws. Are these laws universal? Can we take what we know about nature and apply them to software? Join Brandon to get his thoughts on how the laws we typically apply to nature may also apply to software and join in a healthy debate as we seek to identify the laws of software development.

    9:00 AM - 10:15 AM : Robert Half - Room 107 : Laws of Software Development (Level: 300)
    Speaker: Brandon Carlson

  • Lightening Talks

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

    2:15 PM - 3:30 PM : Room 112 : Lightening Talks (Level: 100)
    Speaker: Iowa Code Camp

  • Lunch sponsored by Workiva

    Lunch sponsored by Workiva

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

  • Mobile Phone Evidence

    This talk will explore mobile phone evidence. What types of evidence are collected by mobiles phones and common cloud services? Learn how you can use your personal digital information and some simple data science techniques to understand more about yourself.

    3:45 PM - 5:00 PM : Room 109 : Mobile Phone Evidence (Level: 100)
    Speaker: Chad Brewbaker

  • Open Space Discussion

    Join us for open discussion based on topics you suggest.

    10:30 AM - 11:45 AM : Room 112 : Open Space Discussion (Level: 100)
    Speaker: Iowa Code Camp

  • OpenID Connect in ASP.NET Core

    In the age of the "personalized web experience", authentication and user management is a given, and it's easier than ever to tap into third-party authentication providers like Facebook, Twitter and Google. And it's not just the wild, wild web that needs it. Businesses need ways to secure their APIs, and identify users logged into their apps as well. In shit session, I will show you how to use the latest authentication protocol from the OpenID Foundation: OpenID Connect. It's a complete protocol that is implemented by several providers and an easy way to secure your web applications!

    9:00 AM - 10:15 AM : QCI - Room 106 : OpenID Connect in ASP.NET Core (Level: 200)
    Speaker: Lee Brandt

  • Opening Session

    Welcome and announcements

    8:30 AM - 8:45 AM : QCI - Room 106 : Opening Session (Level: 100)
    Speaker: Iowa Code Camp

  • Practical Cryptography for the Everyday Dev

    RSA, SSL, TLS, MitM, 3DES, AES, PFX, Hash, Salt, MAC, HMAC, JWT... You've gotten by as a developer by following blog posts and doing your best to understand, but what the hell does it all actually mean? RSA, SSL, TLS, MitM, 3DES, AES, PFX, Hash, Salt, MAC, HMAC, JWT... You've gotten by as a developer by following blog posts and doing your best to understand, but what the hell does it all actually mean? In this session we will not be going deep into the theory of cryptography but we'll walk through all the important concepts to keep you, your data and your customers secure. We'll find out what you want to use, when you want to use it and what not to do. Along the way, we'll invite our friends Alice and Bob and perhaps we'll find out why Charlie is such a prick.

    12:45 PM - 2:00 PM : Room 112 : Practical Cryptography for the Everyday Dev (Level: 100)
    Speaker: Jon von Gillern

  • R Services with SQL Server

    This more-advanced session will discuss various ways that Microsoft R can be used. Knowledge of R specifically isn't necessary, but would be helpful for following along. Topics will include: 1) What is SQL Server R Services - History of Revolution R and Microsoft's acquisition of the company - Various ways of interacting with R Services. (High Level) 2) Creating Stored Procedures running R with In-Database mode 3) Interfacing with SQL Server from R/RStudio 4) Creating Reports that include Visualization - PowerBI and R-Visualizations - SSRS (SQL Server Reporting Services) and R-Visualizations 5) (If time permits) More advanced computation tasks with RServices.

    2:15 PM - 3:30 PM : Room 109 : R Services with SQL Server (Level: 200)
    Speaker: David Thole

  • Read By Refactoring

    Do you have to work in ugly code with serious design problems? Jumping to another project or another job can sound attractive, but it probably wouldn't help all that much. But there is a way out! Refactoring can make your code easy to read, test, fix and extend. Refactoring forms a critical part of the TDD cycle, but that's not the only place you should be using it. Join us to discover and practice Read By Refactoring. We'll take some ugly code and mob on it to make it clean and useful. Come prepared to discuss and write code. This will be a useful session even if you don't know much programming or the C# or Java programming languages.

    9:00 AM - 10:15 AM : Room 109 : Read By Refactoring (Level: 200)
    Speaker: Christopher Freeman

  • Regular Expressions for Fun and Profit

    The Regular Expression is one of the most powerful, yet least understood features of any programing language. In this session, we'll cover: The basic internals of the Regex engine: Regex Gotchas, Tips and Tricks How to format your regexes to be much more programmer friendly Input data validation When to use code instead of regexes Regular expression tools How to save boat loads of time with complex text manipulation While the some of the demos will use Visual Studio, the session is intended for developers of all languages that support Regular Expressions, regardless of their familiarity with the subject.

    9:00 AM - 10:15 AM : Room 108 : Regular Expressions for Fun and Profit (Level: 100)
    Speaker: Jon von Gillern

  • Smaller Not Taller: Defeating the Mobile Application Architecture giant

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

    9:00 AM - 10:15 AM : Room 112 : Smaller Not Taller: Defeating the Mobile Application Architecture giant (Level: 100)
    Speaker: Heather Downing

  • Sponsor Area

    Visit with our sponsors to learn about their services and opportunities.

    8:00 AM - 5:30 PM : Atrium : Sponsor Area (Level: 100)
    Speaker: Iowa Code Camp

  • Website Performance: Make it fast to make it last

    The modern website visitor has very high expectations for the performance of websites and it is imperative that our applications meet this need. The ramifications of an under-performing website can go far beyond customer satisfaction, though, as even the search engines are getting in on the "it must be fast" bandwagon. In this session, we will dive head-first into the in's and out's of website performance. Starting with a practical review of what it means to have a "fast" website and what some key metrics are that can help quantify this designation. As the session progresses we will evolve into reviewing common site infrastructure issue that can contribute to poor performance and the methods available to quickly identify these items for resolution. After identifying these areas we will discuss the quick fix items and how to get the best improvements the fastest. The session will end with a quick introduction to heavy traffic load testing practices.

    10:30 AM - 11:45 AM : Room 109 : Website Performance: Make it fast to make it last (Level: 200)
    Speaker: Mitchel Sellers

  • What is a Professional Developer?

    In this session we will explore what it means to be a professional software developer. Are there common practices we should embrace? Are there practices we should abandon? What could we gain from formalizing our practices and expectations of other developers? How do we improve the state of software development?

    12:45 PM - 2:00 PM : QCI - Room 106 : What is a Professional Developer? (Level: 100)
    Speaker: Bryce Klinker

  • What is Firebase and what can it do for me?

    Get your backend up quickly and inexpensively with Firebase; no server code required! With the recent upgrade, Google has added many new features, and has integrated some of the Firebase services into their core cloud services. Firebase provides a real-time JSON database for storing and synchronizing data among all clients without having to manage connections or write complex sync logic. Firebase also provides tools to authenticate users with only client-side code using the flexible security rules language, as well as other features such as static asset hosting. Firebase can be used with your web, iOS, and Android applications. Google has also recently added Node and C++ SDKs. We?ll be building a web app and an Android app with a Firebase backend, exposing the potential that Firebase has to quickly add advanced features to your apps.

    12:45 PM - 2:00 PM : Room 108 : What is Firebase and what can it do for me? (Level: 100)
    Speaker: Anne Bougie

  • 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.

    12:45 PM - 2:00 PM : Room 109 : What is Machine Learning? (Level: 100)
    Speaker: David W. Body

Session Levels


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.