Iowa Code Camp - Sessions


Registration is now open! Register now!

  • How to use Excel for good, and not evil (Using Microsoft Excel for developers)

    Say the words "Microsoft Excel" and you can get anywhere from praised reactions as a great tool to organize loose sets of data, to a clockwork nightmare of spreadsheets that strikes developers as a dagger to the heart. We will show you how to use Excel to improve your experience as a developer; learn tricks to make Excel help write code, create class properties, parse code, use it to supplement your database queries, and more. The talk is intended to provide realistic examples of common problems that developers face, and how Excel can be the right tool for the job, even for a developer.

    9:00 AM - 10:15 AM : Room 107 (Twilio) : How to use Excel for good, and not evil (Using Microsoft Excel for developers) (Level: 100)
    Speaker: Alan Wong

  • 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 : Room 108 (IDx) : A DSL for Your API (Level: 200)
    Speaker: Greg Sohl
    Session Materials: Slides

  • AI in medicine, enjoy responsibly

    This talk is intended to demystify AI and to show how it can be responsibly applied to medicine. We will go through the basics of how neural networks operate, discuss pitfalls associated with black box approaches to AI. Then we will discuss how IDx avoids these pitfalls through a medically inspired AI approach and how we turn our algorithms into products. We will close with some information about what it is like to work in the medical device industry as a developer.

    12:45 PM - 2:00 PM : Room 109 (Beacon Hill) : AI in medicine, enjoy responsibly (Level: 100)
    Speaker: Meindert Niemeijer

  • Application Security

    Information security involves keeping your systems secure and your company's (and your users) data safe and out of unauthorized hands. We as developers have a number of very important roles in info sec, and among those are application security and secure coding. In this presentation, we'll talk about some security best practices, examples of vulnerabilities, and practical ways to avoid doing the sort of things that the bad guys exploit.

    10:30 AM - 11:45 AM : Room 106 (QCI) : Application Security (Level: 100)
    Speaker: Mark Kalal

  • Ask Me Anything (AMA) with Keith Dahlby

    Join Keith for an open question and answer session on anything software development related.

    3:45 PM - 5:00 PM : Room 107 (Twilio) : Ask Me Anything (AMA) with Keith Dahlby (Level: 100)
    Speaker: Keith Dahlby

  • Blazor: C# running in the browser via WebAssembly

    Microsoft officially joined the SPA framework race with the announcement of Blazor, an experimental SPA framework for running C# client-side in the browser via WebAssembly. In this session, we'll discuss what WebAssembly is, why this isn't another Silverlight, and then we'll dive into Blazor to understand how it works. You won't want to miss these demos.

    3:45 PM - 5:00 PM : Room 108 (IDx) : Blazor: C# running in the browser via WebAssembly (Level: 100)
    Speaker: Scott Sauber

  • 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

  • Building for the Cloud

    We all know how to build apps, but building green field applications optimized for the cloud can be different from building server-based applications. What are the options, and how should the application leverage the cloud to achieve the intended benefits? We will discuss Cloud Native applications, their benefits, scenarios they are well-suited for as well as the trade offs that come with it.

    12:45 PM - 2:00 PM : Room 114 : Building for the Cloud (Level: 100)
    Speaker: Timothy Strimple

  • Building Serverless Applications in the Cloud

    Function as a Service (FaaS) solutions provide easy and efficient ways to execute code without the need to provision or manage the underlying infrastructure. But most FaaS solutions, like AWS Lambda for example, have their limitations. In this session, we will look at how we can leverage a state machine to orchestrate AWS Lambda functions and build fully serverless applications in the cloud.

    12:45 PM - 2:00 PM : Room 108 (IDx) : Building Serverless Applications in the Cloud (Level: 200)
    Speaker: Moneer Rifai

  • CI vs CD: The Unexpected Conflict

    Continuous Integration is often discussed in ways that suggest that it is naturally compatible with Continuous Delivery/Continuous Deployment, sometimes even to the level that you wouldn't want to do one without the other. However, it can be quite difficult to coordinate their competing goals in practice. This talk will cover common reasons these concepts compete, along with techniques to gain the confidence to become more successful with each.

    10:30 AM - 11:45 AM : Room 114 : CI vs CD: The Unexpected Conflict (Level: 300)
    Speaker: Matt Travi

  • Closing Session

    Wrap it up and go out with a bang.

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

  • Computer Science without Computers

    Especially for younger children, being a programming expert is not necessary to teach computer science! To that end, we'll talk about the fundamental thinking skills that aren't always considered to be computer science, but are used every day in software development. We'll also look at some publicly available teaching resources like Computing At School (CAS), which is a British program that explores the idea that computer science is as fundamental as history, mathematics or language skills, and has lesson plans reaching down to ages 4-6.

    12:45 PM - 2:00 PM : Room 115 : Computer Science without Computers (Level: 100)
    Speaker: Dan Bergeland

  • Crypto 101

    We use cryptography every day. Whether it's HTTPS in a web browser or connecting to a remote host via SCP/SSH, most of us never give a second thought to how this actually works. As software developers and system administrators, we often deal with public keys, digital certificates, and the like, but how many of us understand the underlying principles? We'll talk about basic cryptographic concepts that everyone should be familiar with. Topics will include * Symmetric encryption * Public key encryption * Secure hash functions * Digital signatures * Digital certificates We'll follow a practical approach, covering just enough theory to understand the basic concepts involved. Whether you're completely new to this subject or need a refresher, you'll leave this talk with a solid understanding of the cryptographic principles that underlie technologies you use every day.

    12:45 PM - 2:00 PM : Room 112 (Source Allies) : Crypto 101 (Level: 100)
    Speaker: David W. Body

  • Digging into Neural Networks

    For those that have heard all the buzz around Deep Learning and Neural Networks, but would like a little more substance to how it all works. We will discuss the main applications and problem domains of deep learning, and how models fit to data and learn to do magic. We will also touch on some of the biases that deep learning models are prone to.

    9:00 AM - 10:15 AM : Room 108 (IDx) : Digging into Neural Networks (Level: 300)
    Speaker: Dan Bergeland

  • Explaining HTTP Security Headers You Need On Your Website

    In this session, we'll explain a handful of HTTP Security Headers (including HSTS, CSP, XFO, and more) from the bottom up. We'll explain what they are, what they do, and how you can implement them to secure your sites. On each of these, we'll demo a before and after so you can see first hand what each of these security headers do.

    9:00 AM - 10:15 AM : Room 112 (Source Allies) : Explaining HTTP Security Headers You Need On Your Website (Level: 100)
    Speaker: Scott Sauber

  • Getting Started with Julia

    Looks like Python, feels like Lisp, runs like Fortran. Julia is a language for high performance technical computing. This session will include an introduction to the Julia language and some demos showing off some of its capabilities. Julia is a general purpose dynamic programming language designed for high-performance numerical computation. Although relatively new, Julia is quickly becoming a serious contender in the data science arena currently dominated by languages like R and Python. Julia feels like a scripting language, but offers performance approaching that of C or Fortran thanks to just-in-time (JIT) compilation using LLVM. Notable features include multiple dispatch, optional typing (including user-defined types), built-in vectorization, parallelism and distributing computing support, and Lisp-like macros and metaprogramming facilities.

    3:45 PM - 5:00 PM : Room 114 : Getting Started with Julia (Level: 100)
    Speaker: David W. Body
    Session Materials: Slides

  • I was too cheap to pay for a server, so I used AWS Lambda

    What if you could only pay for when your code runs, and if you don’t run it that much you pay almost nothing? Sounds too good to be true, but it’s not completely false. AWS Lambda is a new hosting style that provides some unique benefits and challenges. If you’ve never heard of AWS Lambda or even ever messed with AWS at all this might be the talk for you. I’ll go over what Lambda is, why I think it could be useful in some cases, where I think it’s challenging, and some other fun things that come along with it. Specifically. We’ll go over the basics, what it’s Strengths are, when NOT to use it, how to Debug the hard problems, and some sweet Frameworks that make life a lot easier.

    10:30 AM - 11:45 AM : Room 113 : I was too cheap to pay for a server, so I used AWS Lambda (Level: 100)
    Speaker: Chuck Rolek

  • Introduction to Elm

    Elm is a purely functional programming language to be used for frontend web development. Elm has great performance, interesting architecture, and most importantly is fun! Come learn the basics of the language along with some functional programming fundamentals.

    12:45 PM - 2:00 PM : Room 106 (QCI) : Introduction to Elm (Level: 100)
    Speaker: Andrew Schutt

  • Introduction to Mob Programming

    In this session you will learn about a technique for developing software known as Mob Programming. Attendees will participate in a code kata exercise to learn how a mob works.

    9:00 AM - 10:15 AM : Room 109 (Beacon Hill) : Introduction to Mob Programming (Level: 100)
    Speaker: Cecil Williams

  • Jukebox Hero - Modernizing 50's Tech

    In this session we'll talk about and demonstrate how we took a 1950's era jukebox and turned it into a Raspberry Pi powered, web enabled, set list generator for a live band. This was the epitome of a "We have an idea. Can you do it?" project. In this session we'll talk about the technologies used (Pi, Python, various AWS services), show code, and give attendees the chance to check out the hardware. There might even be some live music involved.

    9:00 AM - 10:15 AM : Room 106 (QCI) : Jukebox Hero - Modernizing 50's Tech (Level: 100)
    Speaker: Levi Rosol

  • Land that Promotion!

    What do you need to do to score your next promotion? Get better at TDD? Design Patterns? Microservices Architectures using Kubernetes and Continuous Deployment? Wrong answer! Success at work is all about getting things done, and that requires developing and cultivating relationships. Join Brandon to learn tips and techniques for building the relationships at work that get things done and help you land that next promotion.

    12:45 PM - 2:00 PM : Room 113 : Land that Promotion! (Level: 100)
    Speaker: Brandon Carlson

  • Learning Is Easier If You Care

    Teacher track -- Ask anyone to talk to you about something they care about, and something they don't. You'll realize people will invest a lot of energy into something if they care about it. My (probably not original) thought is that we should spend some time teaching people computing by showing them how it can be used to enhance the things they care about. As luck would have it most things in our life are impacted by computing these days. We have so many tools available to us that weren't reasonable years ago because they were too complex, or they were inaccessible. I'd like to talk about things we can do to teach people some of the fundamentals they'll need if they develop an interest in computing by showing how it can help them accomplish things that are more meaningful to them than the slew of simple math problems I remember solving in many of my early classes.

    2:15 PM - 3:30 PM : Room 115 : Learning Is Easier If You Care (Level: 100)
    Speaker: Jessie Puls

  • Let's Write a Discord Bot!

    Discord is a popular VOIP and chat application used by gaming communities and streamers. In this talk, I'll show you how to get started writing your own bot that interfaces with the service. We'll cover how to get your application registered, how to get an API key, the libraries available for your particular language, and conclude with a live demo showing the creation of a simple bot from start to finish.

    2:15 PM - 3:30 PM : Room 112 (Source Allies) : Let's Write a Discord Bot! (Level: 100)
    Speaker: Josh Jones

  • Lightening Talks

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

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

  • Lunch

    Lunch

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

  • Management is a Rewarding Career Path

    Senior Developers often lament the lack of a long-term technical career path. As a developer who recently took the leap into management, I'll share my experiences and tell you why you should (and should not!) consider management as a viable career path.

    3:45 PM - 5:00 PM : Room 113 : Management is a Rewarding Career Path (Level: 100)
    Speaker: John Sonneville

  • Microservices with Kubernetes and Istio

    Kubernetes provides a powerful container-orchestration platform for automating deployment, scaling, and management of containerized applications. In this talk, I will cover the basics of Kubernetes while demonstrating how to use it with Google Kubernetes Engine, a managed service which minimizes the effort needed to operate Kubernetes. Lastly, I will demonstrate the Istio service mesh which complements Kubernetes with capabilities to connect, secure, control, and observe services.

    10:30 AM - 11:45 AM : Room 108 (IDx) : Microservices with Kubernetes and Istio (Level: 100)
    Speaker: Eric Larssen

  • Modern Web Development with React, TypeScript, and Apollo

    JavaScript has come a long way since the early days. With all the improvement over the years, the current state of the web development ecosystem allows for a delightful developer experience for building reliable, powerful, and scalable web applications . Come learn about how to work with three of these modern tools, React, TypeScript, and Apollo GraphQL, and see examples of how to use them together to build awesome things.

    10:30 AM - 11:45 AM : Room 107 (Twilio) : Modern Web Development with React, TypeScript, and Apollo (Level: 200)
    Speaker: Nathan Smith

  • No Session

    3:45 PM - 5:00 PM : Room 109 (Beacon Hill) : No Session (Level: 100)
    Speaker: Iowa Code Camp

  • Open Space Discussion

    Join us for open discussion based on topics you suggest.

    3:45 PM - 5:00 PM : Room 112 (Source Allies) : Open Space Discussion (Level: 100)
    Speaker: Iowa Code Camp

  • Opening Session

    Welcome and announcements

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

  • React Component Library with Storybook and Styled Components

    My company is updating old applications in React -- using a tool called Storybook we are creating our own library for re-usable components. I will talk about how Storybook and Styled Components is helping us keep standards, branding, and living documentation, while saving development effort.

    12:45 PM - 2:00 PM : Room 107 (Twilio) : React Component Library with Storybook and Styled Components (Level: 100)
    Speaker: Jason Logan

  • Recruiting the future of tech: Scholarships for helping others

    Piloting a new program to recruit directly through technology projects, William Penn University has brought a new model of learning and function to the world of Higher Education. Taking students from any discipline, offering scholarships for participation, all with the goal of changing the world while gaining experience. The Digital Impact Program hopes to pave the way students experience the world of technology by exploring their passions through positive projects, all while being paid.

    10:30 AM - 11:45 AM : Room 115 : Recruiting the future of tech: Scholarships for helping others (Level: 100)
    Speaker: Josh Stutting

  • Reinforcement Learning: Basics, Q-Learning, Double Q-Learning, DQN, and Double DQN

    I have created a project for graduate school about Reinforcement Learning and I am going to share that with the code camp. It starts with some basics, then goes into Q-Learning, and finishes up with juiced up versions that Google DeepMind created to beat Atari games. Note: This is a similar topic from last year but the content is different. And the demos hopefully work.

    2:15 PM - 3:30 PM : Room 114 : Reinforcement Learning: Basics, Q-Learning, Double Q-Learning, DQN, and Double DQN (Level: 300)
    Speaker: Evan Hennis
    Session Materials: Slides

  • SOLID design for mere mortals

    I talk to a lot of development teams and hear a lot of complaints about how difficult and risky it is to make changes in their code bases. I always ask if they're using SOLID design principles and often hear that they've either never heard of SOLID or that SOLID is too complex or takes too long. In this session we'll talk about both the what and the why of SOLID design and see examples of the principles in practice in ways that everyone can relate to.

    10:30 AM - 11:45 AM : Room 109 (Beacon Hill) : SOLID design for mere mortals (Level: 200)
    Speaker: Nate Adams

  • 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

  • Teaching TDD to first year students

    Automated unit testing is pretty much a requirement in modern software development organizations. Test-Driven Development, on the other hand is still a mysterious dark art to most developers. TDD is a baseline skill that all developers should know and understand, but it is still not taught in school . Join Brandon to learn his approach to teaching TDD that is compatible with most textbooks and focuses on the fundamentals. Leave your students with a true understanding of the benefits of TDD without all of the mystery.

    3:45 PM - 5:00 PM : Room 115 : Teaching TDD to first year students (Level: 100)
    Speaker: Brandon Carlson

  • Testing at Scale with Visual Studio Web Performance Tests

    A lot of developers want to do performance testing and are not sure of where to start. Have you or your team already built unit or integration tests in .NET? Come check out this session to learn about web performance tests. This session will talk about what a web performance test is, how Visual Studio gives developers the option to build declarative or code based tests that allow you to stress test your application. We will also talk about how to define success when doing performance testing, how to determine and capture the desired data out of a test, as well as how to design performance tests to account for the desired outcomes.

    2:15 PM - 3:30 PM : Room 107 (Twilio) : Testing at Scale with Visual Studio Web Performance Tests (Level: 100)
    Speaker: Corey Weathers

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

    9:00 AM - 10:15 AM : Room 113 : The Trials And Tribulations Of Being A Fully Remote Developer (Level: 100)
    Speaker: Mike Cole

  • Understanding SQL Server Always Encrypted

    Always Encrypted is a highly-touted feature of SQL Server 2016 that promises to make encryption simple to use and transparent to applications while still protecting the data both at rest and in motion, even from high-privilege users such as developers and DBAs. Does that sound too good to be true? It isn’t - Always Encrypted is an incredible feature - but like any new technology, it does have some limitations. In this session, you’ll see how to configure Always Encrypted, and we’ll talk about when you should and shouldn’t use it in your environment.

    2:15 PM - 3:30 PM : Room 106 (QCI) : Understanding SQL Server Always Encrypted (Level: 100)
    Speaker: Ed Leighton-Dick

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

    10:30 AM - 11:45 AM : Room 112 (Source Allies) : Website Security for Web Developers: What You Need to Know (Level: 200)
    Speaker: Mitchel Sellers

  • What is Infrastructure as Code?

    One of the principles of modern software development is the notion of "Infrastructure as Code". What exactly is it and why is it so important? We will learn more about how the ubiquity of cloud services has enabled us to transform infrastructure to code, and how this has revolutionized the way we build and deploy infrastructure, and we look at some examples, like Terraform and CloudFormation.

    9:00 AM - 10:15 AM : Room 114 : What is Infrastructure as Code? (Level: 100)
    Speaker: Moneer Rifai

  • What Your Computer Science Teachers Association Can Do For You

    This will be a business and information meeting of the Computer Science Teachers Association-Iowa Chapter. We will discuss what is and what are the latest things go on in the CSTA. We will also discuss what direction those in attendance would like to go. We are a newly formed group and want to meet the needs of our members in the rapidly growing field of computer science education.

    9:00 AM - 10:15 AM : Room 115 : What Your Computer Science Teachers Association Can Do For You (Level: 100)
    Speaker: Scott Schoneberg

  • Why You Need Some Chocolatey In Your Life

    When you get the inevitable Blue Screen of Death on your Windows development machine, how many billable hours do you lose? How many cuss words do you mutter? How many gray hairs do you grow? Chocolatey is a package manager for Windows that makes rebuilding your machine relatively painless. The community feed has thousands of pieces of software available, with the ability to accept contributions. Not only does it make installing software a breeze, but updating can be done with one command. In this presentation Mike will give an introduction to Chocolately, he will run you through installing, updating, and uninstalling packages, and we'll dive into creating and maintaining packages on the community feed. We'll look at solutions like Chocolately AU to automate publishing software updates, Boxstarter to script an entire machine re-pave, and the Chocolatey Test Environment to make sure your packages are high quality before submitting to the community feed.

    3:45 PM - 5:00 PM : Room 106 (QCI) : Why You Need Some Chocolatey In Your Life (Level: 200)
    Speaker: Mike Cole

  • Your Brain is Broken and you Suck at Making Decisions

    here are a lot of Agile practices out there that, at first glance, may seem silly or arbitrary. When teams ask about why we do these things, they often hear something along the lines of 'because that's what the trainer at my Scrum Master certification course said to do'. It turns out, though, that there is a lot of science behind nearly every one of these practices. Over time, our brains have evolved to help us survive in a world where we solve the same kinds of problems most days and interact with a small and rarely changing group of people who mostly share our thoughts and opinions. In other words, we're optimized to function in a world nothing like the world we actually live in. To deal with being confronted with an overwhelming and unprecedented access to information, our brains use mental shortcuts to make timely decisions. What could possibly go wrong? Welcome to the world of cognitive biases. We'll take a look at some of the most common biases that affect decision making. We'll talk about why everyone else on social media is really stupid. We'll explain why we did not pay too much for that car. We'll rationalize why spending $100 on lottery tickets was actually a great investment. We'll take a look at the biases other people have (but not us). Finally, we'll learn about why all these are examples of our own biases. #TheresABiasForThat After exploring some of these concepts (they're features of our brains, not bugs, am I right?) we'll talk about the real reasons so many Agile practices work and help protect us from our own brains. We'll cover practices like story points, user stories, information radiators and more and talk about the biases they all help protect us from. Armed with this knowledge, we can start protecting ourselves from our own brains, and help make the teams we work with even more awesome.

    2:15 PM - 3:30 PM : Room 109 (Beacon Hill) : Your Brain is Broken and you Suck at Making Decisions (Level: 100)
    Speaker: Nate Adams


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