Nov 1, 2014 Sessions Table of Contents Session Name Page Number ASP.NET vNext Unleashed 1 Back to the Basics: LINQ and You! 1 Breakfast, sponsored by Pillar Business Agility! 1 Bringing Unit Testing and TDD To Rails 1 Build a cloud enabled iOS app with Xamarin 1 Building a Modern Windows App 1 Closing Session 1 Code Reactions - An Introduction to Reactive Extensions 2 Data Viz 101 2 Decoding Javascript: Principles of Documentation & Great Documentation Generators 2 Domain Driven Design Building blocks, Entities, Value Objects and Aggregates 2 Esoteric Languages 2 Event Stream Processing with Kafka and Samza 2 Every developer can write games 2 Everyday Sass 3 FDD: Navigating Independent Consulting with Failure Driven Development 3 From Mainframe to Microservice: An Introduction to Distributed Systems 3 Getting started with Fake (F# make) 3 Getting to Know Canvas 3 Git Demystified 3 Good developers read the classics! 4 Groovy at Gr8Ladies 4 How Getting Involved In The Community Changed My Life 4 Intro to Grunt: Stop doing things manually 4 Intro to Translation: From Zero to Implementation 4 Introduction To 3D Printing and G-Code 4 Introduction to Functional Programming Lab Session 5 Lunch, sponsored by Robert Half Technology! 5 Machine Learning in Go 5 Mentoring: Let's Learn Together 5 One Delegate to Rule Them All: Understanding OWIN 5 Open Spaces / Fishbowl Discussion 5 Opening session 5 Portable Libraries Will Rock Your Socks Off In Mobile Development 5 RESTful web applications with Node.js and Sails 6 Supercharging your static sites with Jekyll 6 Table of Contents Session Name Page Number Swift and Cocoa: New ways, old patterns 6 TDD Workshop 6 The birds and the B-Trees 6 The Terrible, Horrible, No Good, Very Bad Things I Do to PHP 6 Using Docker and Fig to create a local development environment 6 When Learning Stops: Recovering from an Expert Beginner 7 why tests provide more than code coverage... the business value behind a test. 7 Writing maintainable javascript apps quickly with ember.js 7 Nov 1, 2014 Sessions ASP.NET vNext Unleashed Javier Lozano 12:45 PM - 2:00 PM QCI (107) Session Level: 200 In this session we will discuss the next generation of the ASP.NET framework and runtime. Find out what's new and different as well as how your current applications will benefit from moving to the new platform once released. If you've read about ASP.NET vNext but haven't had a chance to play with the alpha bits, this is session you don't want to miss. Back to the Basics: LINQ and You! Mitchel Sellers 12:45 PM - 2:00 PM Beacon Hill Staffing (112) Session Level: 100 In this session we take a look at LINQ as a C# language feature and how it can be used to make our lives a developers easier. Many experienced developers utilize .NET generics in every day code using object such as List<string> or similar, however, many are still unaware of how to leverage generics in their own code to simplify coding and improve maintainability. In this session we will dive into the specifics and best practices around the usage of generics within the .NET framework. Including examples of how/when generics could be used to help simplify common routines such as processing JSON based HTTP requests or data loading from SQL without the use of Entity Framework Breakfast, sponsored by Pillar Business Agility! Iowa Code Camp 8:00 AM - 8:40 AM Atrium Session Level: 100 Conf G (115) Session Level: 100 Breakfast, sponsored by Pillar Business Agility! Bringing Unit Testing and TDD To Rails Darren Cauthon 9:00 AM - 10:15 AM Rails isn't known for TDD and unit testing. Many Rails devs don't use them, the tools aren't built to help, and the author of Rails thinks they're dead. Unfortunately for them, Rails was built on Ruby, and we can leverage Ruby to write great Rails apps with TDD. This purpose of this session will show how. Build a cloud enabled iOS app with Xamarin Chris Ortman 9:00 AM - 10:15 AM QCI (107) Session Level: 100 We'll cover what you need to know to get an iOS app up and running that is able to save data locally and sync it with the cloud. Building a Modern Windows App Brent Edwards 3:45 PM - 5:00 PM Beacon Hill Staffing (112) Session Level: 200 This session will walk you through how to build a modern Windows app with C# and XAML that runs on both Windows 8 and Windows Phone 8. We will go over some of the decisions and trade-offs that need to be made to write the same code for multiple platforms as well as techniques to enable as much code reuse as possible. We will look at these techniques in action within the context of a simple application by looking under the hood at the code. Closing Session Iowa Code Camp 5:00 PM - 5:30 PM QCI (107) Join us for a wrap up of the day. Page 1 of 7 Session Level: 100 Code Reactions - An Introduction to Reactive Extensions Jason Bock 2:15 PM - 3:30 PM Beacon Hill Staffing (112) Session Level: 200 It's typical in software development to pull data from different sources. However, in the modern world of asynchronicity, data is being retrieved in real-time streams, akin to how developers handle events. Reactive Extensions is a library that makes it easier to code in a reactive, asynchronous, composable style. In this session, you'll get a gentle introduction into this library and how its API works. Data Viz 101 Jon von Gillern 2:15 PM - 3:30 PM QCI (107) Session Level: 100 Data Viz 101 Decoding Javascript: Principles of Documentation & Great Documentation Generators Linda Oyolu 2:15 PM - 3:30 PM Dev/Iowa (109) Session Level: 100 Documentation plays a crucial role in making sure that code can be understood by others, including its original developer. This session will communicate the benefits of well-documented code and how to document programs using various Javascript documentation generators including JSDoc and Doxx. Domain Driven Design Building blocks, Entities, Value Objects and Aggregates Benoy John 2:15 PM - 3:30 PM Conf G (115) Session Level: 100 Domain-driven design (DDD) is an approach to software development for complex needs by connecting the implementation to an evolving model. This talk will dive into some of the basic building blocks of DDD like Value Objects, Entities and Aggregates. Examples for this talk will be in C# Esoteric Languages Nicholas Starke 3:45 PM - 5:00 PM Workiva (113) Session Level: 100 What is the simplest programming language that can be designed and also still be a programming language? This talk will focus on the so called "Esoteric Languages" - programming languages that are not built for practical use, but for studying the limits of computability. We'll cover the concepts of Turing-completeness, Turing tarpits, finite state-automatons, as well as briefly touch on hypercomputation by exploring three distinct esolangs: Brainf*** (as well as P""), befunge, and Malborge. We'll finish by briefly discussing the uses and practical applications for esolangs. Event Stream Processing with Kafka and Samza Zach Cox 9:00 AM - 10:15 AM Workiva (113) Session Level: 200 Our businesses constantly generate streams of events, which describe various things that happened. If we make these event streams a first-class citizen in our infrastructure and process them appropriately, we can derive new valuable information and react very quickly to changing situations. In this talk we'll discuss what events and streams are, why they're important and how to process them in real-time (not batch) to answer questions important to our business. We'll explore how to build a unified log of our event streams using Kafka and the tools Samza provides to process these streams reliably at scale. Several hands-on code examples in Java and Scala with real event streams will demonstrate these concepts. Every developer can write games Lwin Maung 10:30 AM - 11:45 A Beacon Hill Staffing (112) Session Level: 100 Games are the easiest way to make money in any mobile app stores. As a developer, you already have the skill sets to write any game you want. You already have the ability to write games that people will enjoy. I will show you how to you can use the current skills to write simple games that people can enjoy using simple C#, XAML as well as JavaScript and HTML. Page 2 of 7 Everyday Sass Rob Glazebrook 9:00 AM - 10:15 AM Dev/Iowa (109) Session Level: 100 Sass (Syntactically Awesome Style Sheets) has the ability to transform your CSS workflow -- once you know how to use it. We'll cover organizing your styles via partials, building powerful mixins, wrangling loops and lists to eliminate repetition, and common pitfalls to avoid. FDD: Navigating Independent Consulting with Failure Driven Development Dustin Thostenson 10:30 AM - 11:45 A QCI (107) Session Level: 100 An expert is someone who knows all points of failure in a given realm. Knowing what NOT to do is as important as knowing what TO do. Drive your Development by learning from others' Failures. From Mainframe to Microservice: An Introduction to Distributed Systems Tyler Treat 10:30 AM - 11:45 A Conf F (114) Session Level: 100 With the increased availability of cloud computing, distributed architectures have become exceedingly commonplace. This session provides an introductory overview of distributed systems-what they are and why they're difficult to build. We will explore fundamental ideas and practical concepts in distributed programming. What is the CAP theorem? What is Byzantine fault tolerance? What are CRDTs? We'll also look at options for solving the split-brain problem while considering the trade-off of high availability. Getting started with Fake (F# make) Nate Buwalda 3:45 PM - 5:00 PM Conf G (115) Session Level: 200 Build automation and scripting is a powerful part of your Extreme Programming toolset. If you are a .Net programmer, it is often hard to find non-Visual Studio tools to help succeed in these areas. Fake (F# Make) is a tool that helps fill this gap. This talk will focus around getting started with Fake and creating basic targets to help automate common activities. No knowledge of F# or functional programming is required, but it might help. Some knowledge of existing .Net build automation and Jenkins Continuous Integration is required. Getting to Know Canvas Rob Glazebrook 3:45 PM - 5:00 PM Dev/Iowa (109) Session Level: 100 The HTML5 canvas is rapidly replacing Adobe Flash as the preferred means of delivering dynamic content to the web. Does this mean you have yet another language to learn? Nope! If you know JavaScript, you can use canvas. We'll cover the basics of canvas manipulation as well as useful frameworks and libraries to speed up development. Git Demystified David W. Body 3:45 PM - 5:00 PM Conf F (114) Nearly every software developer has at least some familiarity with Git, the popular open source, distributed version control system. To the uninitiated, Git can appear to be a large, dauntingly complex piece of software that might take years to understand. It turns out, though, that Git is actually much 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 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. Page 3 of 7 Session Level: 100 Good developers read the classics! Tom Henricksen 9:00 AM - 10:15 AM Conf F (114) Session Level: 100 There are many books that all developers should read. In Good developers read the classics we will cover three books that should be on their bookshelf. You can broaden your expertise and learn from others mistakes. We will share some of the collective wisdom from some great developers. Groovy at Gr8Ladies Jenn Strater 12:45 PM - 2:00 PM Garmin (108) Session Level: 100 In a world where productivity is paramount, Groovy is rising to the challenge as one of the most popular alternate languages on the JVM. Groovy, a dynamic compiled programming language, promotes rapid development with easy to learn syntax and the ability to leverage existing Java libraries. Groovy takes features from dynamic languages like Ruby and Python while staying compatible with Java. This beginner level session will explore the syntax and basic scripting of the Groovy language including how Groovy is used in the Gr8Ladies website. How Getting Involved In The Community Changed My Life Mike Cole, Keith Dahlby, Jennifer 3:45 PM - 5:00 PM Garmin (108) Session Level: 100 Do you want to take the next step in your career but are unsure of how to proceed? Are you somebody that loves teaching and is looking for an outlet? Are you looking to achieve glory and crush all of your enemies??? If so, this is the session for you! Our three speaker panel, including me, Keith Dahlby and Jenn Strater, will each take a few minutes to tell their stories about who they were before and after they became involved in the technical community. We'll describe the steps we took to go from Expert Beginners to impassioned developers, user group leaders, conference speakers, and OSS contributors. We all received help from the technical community and are now looking to pay it forward. We will then open it up for a group discussion. Feel free to ask questions or share your experiences. Need some advice on how to start a meetup or publish a blog? Want some pointers on how to network with people? Where to search for quality jobs? How to find an open source project that could use your help? We'll try to get you pointed in the right direction! Intro to Grunt: Stop doing things manually Chuck Rolek 10:30 AM - 11:45 A Dev/Iowa (109) Session Level: 100 Grunt is a Javascript Task Runner. If you've never heard of Grunt then this presentation is for you. Grunt can help you automatically compile Less/Coffeescript, compile templates, aggregate/minify files, and much more . Don't worry though, you don't have to run Grunt every time you want it to do something. I'll show you the Grunt Watch feature, so you can code faster. See a sample here: https://github.com/crolek/grunt_intro_example Intro to Translation: From Zero to Implementation Austin Thompson 9:00 AM - 10:15 AM Beacon Hill Staffing (112) Session Level: 100 What does it take to translate an application or website into other languages? Come find out as I share my research from my quest to translate my own apps. After a discussion of general translation topics we will cover implementations in many parts of the Microsoft stack, including MVC, WebForms, WebAPI, WPF, and more. Developers new to translation should find this helpful even if your specific technology is not used as an example. Introduction To 3D Printing and G-Code Min Maung 3:45 PM - 5:00 PM QCI (107) Session Level: 100 New to 3d printing? So was I earlier this year. I will go over tips, tricks and tools on what I have learned so far. We will use and go over some 3d modeling applications (123D, OpenSCAD). We will write code to generate 3d models using OpenSCAD. Last but not least, we will go over how to interpret G-Code, which is coordinate codes for the 3d Printers. Page 4 of 7 Introduction to Functional Programming Lab Session Chad Brewbaker 9:00 AM - 10:15 AM Room 116 Session Level: 200 Erik Meijer, the wonk behind LINQ and other functional features added to C# and VB, is teaching a free MOOC on functional programming techniques starting October 15th, 2014. https://www.edx.org/course/delftx/delftx-fp101x-introduction-functional-2126 We will recap the first two weeks of the course, discuss our solutions to the first assignments, then break off into small teams for a kata. Lunch, sponsored by Robert Half Technology! Iowa Code Camp 11:45 AM - 12:45 P Atrium Session Level: 100 Workiva (113) Session Level: 300 Lunch, sponsored by Robert Half Technology! Machine Learning in Go Ross Hendrickson 2:15 PM - 3:30 PM A brief introduction to Clustering algorithms and a walk through of how to use KNN to cluster users based on items they want. The talk assumes familiarity with Go and will walk through how to write a Go application that clusters users based on different features using the go-learn library. Will briefly touch on how to write new algorithms for the library if time permits. Mentoring: Let's Learn Together Tim VanFosson & Chris Schoeder 2:15 PM - 3:30 PM Conf F (114) Session Level: 100 Mentors are invaluable resources when you want to learn something. They help you ask the right questions, show you pitfalls and traps along the way, and generally make it easier to learn by letting you leverage their experience. This session will cover mentoring practices at The Nerdery from the perspective of the mentor and the person being mentored, our successes and failures, and how our practices have evolved over time. A small group activity will let each attendee contribute what has worked or not worked for them and form the basis of a round table discussion on best practices as a mentor/mentee. One Delegate to Rule Them All: Understanding OWIN Keith Dahlby 10:30 AM - 11:45 A Garmin (108) Session Level: 200 A list of keys, and a delegate: given a dictionary, return a Task. It is a strange fate that we should suffer so much fear and doubt over so small a thing. Yet from humble beginnings nearly four years ago, we have an open web standard for .NET that the community and Microsoft have fully embraced. From hosting with Katana or Helios to new frameworks and middleware free from the legacy of System.Web, the future of .NET web development will look much different from its past. This session will give a brief overview of OWIN and the current landscape, discuss its implications for .NET web application design, and review a real-world example of OWIN in action. Open Spaces / Fishbowl Discussion Iowa Code Camp 10:30 AM - 11:45 A Workiva (113) Session Level: 100 QCI (107) Session Level: 100 Session Level: 100 An open discussion based on topics you provide. Opening session Iowa Code Camp 8:30 AM - 8:50 AM Includes information about the day, any session updates and recognition of our sponsors. Portable Libraries Will Rock Your Socks Off In Mobile Development Min Maung & Lwin Maung 12:45 PM - 2:00 PM Room 116 Portable class libraries are powerful and can help speed up your mobile development. You can use these on Windows Phone, Windows 8, Xamarin Android, and Xamarin iOS applications. We will go over how to create them, and best ways to use them. We will also show demonstrations using Xamarin Studio along with Visual Studio. Write code once, kind of deploy everywhere? Page 5 of 7 RESTful web applications with Node.js and Sails Matthew Nuzum 2:15 PM - 3:30 PM Garmin (108) Session Level: 200 A larger portion of web development is being done on the client side, either in the browser or using native applications. Node.js and Sails combine to make a powerful server platform that simplifies the creation of RESTful applications and services. Supercharging your static sites with Jekyll Joel "Danger" Taddei 9:00 AM - 10:15 AM Garmin (108) Session Level: 100 Jekyll is a very popular static site generator used by developers and bloggers alike - but underneath it's very approachable bootstrapping capabilities lies a fantastic platform for building and maintaining static sites of any purpose (not just blogs!). Attendees to this talk will be shown how to take a design from an existing page and "chop" it into reusable yaml-driven templates to supercharge the maintainability of their websites! Swift and Cocoa: New ways, old patterns Michael Frain 10:30 AM - 11:45 A Room 116 Session Level: 200 When working in Cocoa, developers use an established set of patterns to parse, display, and store data. Now that Swift has been released for developer usage, how do these patterns change? In this talk, I will discuss how you adapt Cocoa patterns to work in Swift. I'll talk about how KVO (Key-Value Observing), Target-Action, Delegation, and Class Introspection all work (and sometimes work better) in Swift. TDD Workshop Cecil Williams 10:30 AM - 11:45 A Conf G (115) Session Level: 100 This workshop will cover using test driven development to create new code and if time allows to modify existing legacy code. The workshop will be done in a mob programming fashion with all necessary computer equipment provided. The sample project will be done in Java and will expose the attendees to the latest techniques and tools that make test driven development fun and easy. The birds and the B-Trees Ben Northway 12:45 PM - 2:00 PM Conf F (114) Session Level: 100 If you don't know the difference between a B-Tree and a hash table, this talk is for you. We will talk about a few of the most common data structures and their uses. You will gain an appreciation for the way information is stored on computers, and the next time your SQL query is running slowly, you just might be able to understand why. The Terrible, Horrible, No Good, Very Bad Things I Do to PHP M.J. Hoag 12:45 PM - 2:00 PM Workiva (113) Session Level: 200 The blog post that had /r/programming crying "What the actual **** is that?" and left /r/php wondering whether it was "… genius or madness.", now in talk form! Learn about some of the crazy, ill-advised ways PHP can be contorted. From type hints based on non-class types, to squeezing slightly more multiple inheritance out of traits than was really intended, we'll dive into the gut-wrenching madness. You'll be horrified, you'll despair, you'll question my sanity, you might even throw up a little. And then, if I do my job right, you'll start to think it's not so crazy after all. Using Docker and Fig to create a local development environment Nic Grayson 3:45 PM - 5:00 PM Room 116 Session Level: 200 Running a copy of production on your workstation should be easy and fast. I'll walk through how you can use Docker and Fig to accomplish this lofty goal. Page 6 of 7 When Learning Stops: Recovering from an Expert Beginner Zac Harlan and Keith Dahlby 2:15 PM - 3:30 PM Room 116 Session Level: 100 "We're too busy to write tests." "I played around with [new thing], but only [current thing] will work for this team." "That's just not how we do things here." You've heard it before, and you'll hear it again. The specifics will vary, but ultimately some professionals just choose to stop learning. This session will explore this "Expert Beginner" behavior with first-person examples: how to recognize it, how it happens, and how it impacts a team and the business around them. More importantly, we'll discuss the recovery strategies we're still using to reignite the development team, rebuild our stakeholders' trust, and make up for lost time. why tests provide more than code coverage... the business value behind a test. DJ Daugherty 12:45 PM - 2:00 PM Conf G (115) Session Level: 200 The session will take a deeper look into the ideas around testing beyond the normal TDD thoughts on tests. We will dig into the business value behind the documentation created by tests, the ability to better engage developers into the business process, the ability to compare requirements over time, and the removal of fear around the practice of refactoring... plus many more. It will be a fun journey allowing developer-types and business-types alike come to a common understanding of why tests are important. Writing maintainable javascript apps quickly with ember.js Toran Billups 12:45 PM - 2:00 PM Dev/Iowa (109) Session Level: 100 If you are writing traditional server generated web applications but your customers are demanding a more desktop-like experience how can you meet demand in terms of feature development, while keeping quality high? I'll discuss how ember.js can help you build rich javascript applications by taking advantage of convention over configuration! The majority of this talk will be live coding as we build a real web application test first using both unit and integration tests to get quick feedback! Page 7 of 7
© Copyright 2024