Sessions Table of Contents Nov 1, 2014

Transcription

Sessions Table of Contents Nov 1, 2014
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