Utah Code Camp -- Spring 2012 Sessions


Hands on Workshops / Roundtable

Code Katas Continued: Practicing your Craft
  16  

One of the key values as part of the Software Craftsmanship movement is to be "skill-centric" and as part of that, practicing our skills as software developers is key! The Code Kata format is a coding exercise that is repeated and perfected. It provides one of many ways to practice the craft of software development. We'll discuss the Code Kata format, introduce a few katas and discuss some other practice formats. While the intro will be much like the talk from Fall, we'll work through a different Kata together. I will be guiding the Kata in C# (no previous knowledge necessary though). As this is hands on, to take full advantage of the session have Visual Studio or SharpDevelop installed, NUnit installed (or via NuGet) and an integrated unit test runner (recommend Resharper or NCrunch for VS).

Level 200 - (Beginner): Introductory / fast moving
Presenter: Mike Clement


Django
  6  

Web app development in Python+Django.

Volunteers: Ray Hunter
Want to volunteer? I Can Present This!


Randori: Group Practice
  5  

Looking for a new way to practice your craft? Randori provides a complementary way type of training when compared with katas.

  • Pair Programming
  • Pair changes with mechanism (Time box, Ping Pong)
  • Start from scratch
  • Use TDD
  • Everyone should be following
  • Pair should be explaining
  • Audience gives suggestions only with when Green
  • Example at http://vimeo.com/2499540
To the organizers: This session would benefit from being longer than the standard 60 minutes if it can be accommodated. Email me directly for additional discussion if you want to accept this session proposal.

Level 400 - (Advanced): Experience with subject matter is strongly recommended
Presenter: Mike Clement


Apache Wicket
  1  

Having developed in HTML, Servlets, JSPs, Struts, JSF and all of .NET, I found Wicket to be easier and faster than them all. It is exremely object oriented and similar to the orignal ASP.NET, with markup pages and code-behind files.

Volunteers: No Volunteers
Want to volunteer? I Can Present This!



Microsoft Development Track

Building HTML5/JavaScript applications in Windows 8
  20  

Curious about what application development in the new Metro platform using HTML5 & JavaScript looks like? We will take a look at the beta WinRT API and try to dispel myths about this new platform.

Volunteers: Nathan Zaugg
Want to volunteer? I Can Present This!


Linq (From the Inside)
  19  

Knowing how to use Linq is useful if you're doing any coding using .NET 3.5 or newer. But have you ever thought about what is going on "under the hood"? Join us as we dive into the guts of Linq and implement Linq extension methods such as Where, Select, Any, All and Sum. Not only is it interesting to see what's going on, it'll help you to build better code using Linq.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Mike Clement


Introduction to Unit Testing with .NET
  15  

You know that unit testing is a good thing to do, but have never really gotten "in" to it for one reason or another. There are lots of different tools and frameworks to choose from and learn, some of which are free and others that aren't. In this session we'll focus on getting started with unit testing, specifically in a .NET world. We'll go over some different frameworks and tools, especially free ones (though we may talk briefly about a few paid tools).

Level 100 - Introduction
Presenter: Jonathan Turner


WPF for WinForms Developers
  14  

Ever try to jump in to WPF from WinForms and find it to daunting? In this class we will discuss ways to migrate your knowledge of WinForms development and make WPF apps!

Level 200 - (Beginner): Introductory / fast moving
Presenter: Jacob Glines


Building Windows 8 Metro Applications with XAML/C#
  10  

Come join this introductory session that will give an overview of building applications for Windows 8 using XAML and C#. See how your existing WPF and Silverlight skills translate to Windows 8, and get some insight into many of the new constructs found in the platform.

Level 200 - (Beginner): Introductory / fast moving
Presenter: Joe McBride


Microsoft Entity Model
  7  

Microsoft's Object Relationship Model (ORM) tool in depth from database to front end.

Level 100 - Introduction
Presenter: Michael Horn


Identity Federation with Windows Azure Access Control Service
  6  

Nothing drives users away more than asking them to create a new account and requiring them to remember a new set of credentials in order to use your application, or worse, having them use the same credentials they use everywhere else and spending precious development and IT hours ensuring that their credentials are safe and sound and managing identities. Windows Azure Access Control Service enables us to tackle this problem by allowing us to easily integrate with trusted and well established identity providers. Come learn how you can authenticate your users with Windows Live, Facebook, Google, ADFS and other providers using ACS and Windows Identity Foundation. Technologies Covered: Windows Azure Access Control Service, Windows Identity Foundation, Claims-Based Identity Model

Level 200 - (Beginner): Introductory / fast moving
Presenter: Fabio Cavalcante


Rocking WebForms with jQuery
  6  

Reports of WebForms' demise are very premature; in fact, WebForms still rock! And by adding just a little jQuery UI magic, they can rock even more. Whether you're beginning a new WebForms application, or maintaining an existing one, it's very easy to add a little UI razzle-dazzle that can both make your code cleaner and the application more user friendly. In this session, we'll look at what jQuery is, how to use it in ASP.NET WebForms applications, and what it can do for our WebForms applications. If you've used the ASP.NET Ajax Toolkit in your applications, you'll want to see what is replacing it.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Richard Dudley


LightSwitch Onramp
  5  

Microsoft's LightSwitch presents a radical new way of designing applications in Visual Studio. Applications can be quickly built using screen templates and prewritten code to handle routine tasks. Custom business logic can be added in VB.NET or C#. LightSwitch applications can access a number of data sources, including SQL Server and SQL Azure, and can be hosted locally or on Azure. LightSwitch will enable IT staff to quickly turn around those small-but-necessary enterprise apps end users are so fond of, and it's easy enough for power-users with limited programming experience to build their own apps. By the end of this session, we’ll understand what LightSwitch is, what we need to develop with LightSwitch, and how to get started developing a LightSwitch application. Most of this session is a walkthrough of building a simple application, so bring a laptop and code along if you want.

Level 200 - (Beginner): Introductory / fast moving
Presenter: Richard Dudley


Creating and integrating IVRs with 3CX and .Net
  2  

Voice over IP (VoIP) is an exploding industry and the need for communications to be integrated with other systems and websites is growing. Focusing on the 3CX IP-PBX platform, a mature windows based VoIP system that many SMBs are fast adopting in all industries, we'll cover how to make websites and other software systems communicate with a company's communication infrastructure.

Level 200 - (Beginner): Introductory / fast moving
Presenter: Shahzad Qureshi


Charmed to meet you
  2  

Windows 8 has “charms” to provide services to and inter application communication between Metro style applications. In this session we will look at the API for charms and how you can use them in your current and future applications. In this session you will learn: • The charms provided by Windows 8 • How to use the built in charms in your application • How to use charms to communicate between applications

Level 200 - (Beginner): Introductory / fast moving
Presenter: Scott Golightly


Testing in C++ and C# with TAEF
  2  

With the release of the Windows 8 Driver Development Kit, the Windows team has made available the Test Authoring and Execution Framework (TAEF). This framework is used by the Windows team and many other teams across Microsoft for writing and executing unit and feature tests. This session will introduce using TAEF to write and execute tests in both C++ and C#. In addition, this session will introduce some of the advanced capabilities it provides to test authors.

Level 200 - (Beginner): Introductory / fast moving
Presenter: Andrew Faust


Delivering Business Intelligence in SQL Server 2012 + SharePoint
  1  

PowerPivot & Power View demonstrations to demonstrate and end-to-end example of self-service business intelligence using SQL Server 2012 (RC0) PowerPivot (V2) and Power View (V1). Some discussion on how to enable self-service reporting.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Norman Warren



Development Practices

Extracting Dependencies to Make Your Legacy Code Testable
  13  

We've all had to work with old, ugly code. We want to make it better and add new features, but it's hard to do without breaking existing functionality. How can we make it easier to add new code without breaking existing functionality? Add unit tests of course! But how do you add unit tests to code that directly interacts with the database, reads files off disk and updates the UI all at the same time? There are lots of techniques for getting this code under test, but one of the most powerful is to separate your external dependencies from the code you want to test. In this session we'll start with some not so pretty code that has no unit tests and look at some techniques for starting to get it under test. We'll be using .NET technologies, but the principles covered will have much broader applications.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Jonathan Turner


Design Patterns 101
  13  

We'll take a look at the design patterns specified in the Gang of Four (GoF) book and discuss when it's appropriate to use these patterns and what kinds of problems they can salve. We'll also talk broadly about what a pattern is and what an anti-pattern is and how it can cause problems.

Volunteers: Jonathan Turner
Want to volunteer? I Can Present This!


CSS Best Practices
  13  

Best practices when creating CSS including organization, readability, naming / declarations, shorthand, CSS3/2 fallbacks, avoidances, and any other tips or tricks.

Volunteers: No Volunteers
Want to volunteer? I Can Present This!


Branches and Merges are Bears, Oh My!
  10  

One of the most important tools you have have is a Version Control System (VCS). But while it can be very useful, it can also be very frustrating. It's common to branch your code, but when it comes time to merge, it can be a big problem. In this session, you will learn concepts to avoid branching in the first place and when brancing makes sense. Whether you use a centralized or distributed VCS, you'll see how to apply practices that can make a big impact in managing your VCS.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Craig Berntson


Yo Dawg I Heard You Like CQRS
  10  

CQRS stands for Command Query Responsibility Segregation. The change that CQRS introduces is to split that conceptual model into separate models for update and display, which it refers to as Commands and Queries. The rationale is that for many problems, particularly in more complicated domains, having the same conceptual model for commands and queries leads to a more complex model that does neither well.

Level 200 - (Beginner): Introductory / fast moving
Presenter: Ryan Hansen


Simplify Testing with Test Doubles
  7  

This will be an introduction to code seams and a demonstration on how these seams allow us to use Fakes, Dummies, Stubs and Mocks in our testing. With these testing tools at our disposal unit testing will be easier and tests will be faster, more focused and less brittle. We will create test doubles by hand, then introduce 2 popular open source libraries for .NET that simplify this task: RhinoMocks and Moq. These libraries both allow us to reduce duplication and create more focused tests.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: David Adsit


Let's talk about Domain Driven Design!
  6  

At Pluralsight we've been refactoring toward a pristine, isolated domain layer using the guidelines in Eric Evans' book, "Domain Driven Design: Tackling Complexity in the Heart of Software". While we've still got a long way to go, we've learned a lot on our journey so far. This session won't be a lecture, rather a discussion that I would be happy to facilitate. I'd love to share some learnings our team has had, but I hope to hear from others who are having successes and challenges with DDD. Here are some ideas to get us started: * The DDD pamphlet on the web is dangerous * A persistence-free domain layer reduces friction * A domain-free presentation layer reduces friction * You need tests all the way up * Immutability is delightful * An entity has a single responsibility

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Keith Brown



Professional Development

It's All Geek to Me
  14  

The session teaches programmers how to communicate effectively and efficiently with non-technical co-workers, and the rest of the world in general. The session will cover how to communicate effectively:
• By e-mail
• In person
• By phone
• With upper management
• When saying "no"
• When saying "yes"
• When writing documentation

At the end of the session, attendees will understand how to get their message across clearly and quickly, in a variety of situations. They will also be able to communicate their message the first time. This will not be a boring session that puts attendees to sleep.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Michael Christian


How to Mentor Good
  5  

The title of this course is grammatically incorrect. You have just been mentored.
Being a mentor is easy. Being an EFFECTIVE mentor pays you back.

This session discusses how to do what you're already doing, but in a mutually beneficial manner. Raise the baseline skills of your team, while reinforcing your own skills and finding your weak points. Too bothersome? Requires too much time? You are most likely already a mentor, and don't know it.

This course is fit for EVERYBODY, no matter your profession (developer, manager, parent, chef, sewer scraper, whatever).

This session discusses:

  • What does it mean to be a mentor?
  • How to be a more effective mentor Developing your own skills by being a mentor How to be a good student (mentee?) How to be a good observer
This is a fun and interactive session. At the end of this session, you will know how to make your existing mentor relationships work for you, whether you are the teacher, student, or an observer.

Level 100 - Introduction
Presenter: Michael Christian



Open Source Development Track

Polling is for Chumps (WebSockets & Server-Sent Events)
  26  

Building a web application to show live data? Stop making requests every 5 seconds. Give your web server a break and let it tell you when new data has arrived. We'll cover two solutions, WebSockets and Server-Sent Events, for pushing messages down to the browser. Experience with Javascript is suggested.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Jason Staten


Test Driving Javascript
  24  

How to do TDD in javascript can be a daunting task. This course will cover the popular testing frameworks, and how to structure your javascript to make it testable so that practicing TDD when writing javascript is possible.

Volunteers: Matthew Smith
Want to volunteer? I Can Present This!


Learning Backbone.js
  18  

Backbone.js supplies the model view controller pattern to JavaScript rich applications. Using this framework, you can create single page apps that provide models, collections and views that bind models to views and events. A great new way to provide structure to new or existing applications.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Andy Ridd


FubuMVC - Why are those Russian dolls so full of themselves?
  16  

FubuMVC is the framework that gets out of your way. We will explore and demonstrate how to build a web application with FubuMVC. Topics will include getting started, behaviors, view location (with razor view engine), conventions, bottles, and the new asset pipeline.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Corey Kaylor


Introduction to Underscore
  12  

"the bow tie to jQuery's tux" - Underscore is to javascript what linq is to .NET. Learn to work with arrays and collections easily. Most of the underscore functions will be highlighted as well as the underscore templating engine.

Volunteers: Craig Peterson
Want to volunteer? I Can Present This!


Grokking Javascript
  10  

Javascript has a bad reputation as being an overly complicated toy language, so many developers wrinkle their nose when they have to write code in it. But it's here to stay for a long time, and a web developer can hardly get by without doing at least some javascript. Most developers who only do a little javascript here and there treat it like it's C# or Java just in a browser. Some basic fundamental understanding of javascript can give you the basis for not feeling quite so lost when coding in the browser. From closures to truthy to the most common frameworks, this course will give you a foundation for understanding the power of javascript.

Volunteers: No Volunteers
Want to volunteer? I Can Present This!


Introduction to jQuery
  9  

jQuery is the most popular javascript framework. Learn to handle basic tasks and utilize jQuery to improve your page responsiveness and user experience. See how to structure your pages, how to manipulate the page based on user interaction, and how to talk to the server using AJAX.

Volunteers: No Volunteers
Want to volunteer? I Can Present This!


Introduction to Knockout
  8  

An introduction to knockout. Using knockout's MVVM implementation you can clean up javascript code used to keep the page up to date with changing state on the client-side. Course will give a basic introduction to knockout and a walkthrough of building an interactive page.

Volunteers: No Volunteers
Want to volunteer? I Can Present This!


Turn Your LAMP On!
  1  

How to setup and configure a LAMP development environment. This course will provide instructions on how to get the most out of your LAMP development environment. There will be discussion on various technologies that make up LAMP. For example, linux distros, web servers, database servers and languages. There will be discussion on how to get the most out of your environment.

Volunteers: Ray Hunter
Want to volunteer? I Can Present This!



Mobile Development Track

Advanced Android
  15  

Android is an exciting platform to learn, and continues to gain more and more popularity. I'd like to share some features I've learned in some of the projects I have created. This will include code examples and tutorials. The features may include, but are not limited to: GPS, Maps, Chat, WebServices, ListViews, etc. Please share what you may be interested in and I'll make sure to do my best to include it.

Level 400 - (Advanced): Experience with subject matter is strongly recommended
Presenter: Andy Ridd


Building mobile applications for all of the major platforms using PhoneGap
  14  

PhoneGap is an HTML5 app platform that allows you to author native applications with web technologies and get access to APIs and app stores. PhoneGap leverages web technologies developers already know best... HTML and JavaScript.

Volunteers: Matthew Nielsen
Want to volunteer? I Can Present This!


Publishing in the Android Market
  11  

So you've gone through some Android tutorials and put together some test apps. Now you're ready to get serious and publish something to the Android Market. If that sounds like you then this is the session for you. We'll use an app that I've published (which has been downloaded over 100,000 times) as an example. We'll go over how to upload new versions of your app as well as what kind of statistics, user feedback and error reporting are available to you, among other things.

Level 200 - (Beginner): Introductory / fast moving
Presenter: Jonathan Turner


Android Development
  8  

The Android environment is a great area for development. This sesion will cover creating applications in Android and using some of the built in features, including creating new instances and accessing API's and internal storage.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Cody Henrichsen


JQuery Mobile
  5  

A unified, HTML5-based user interface system for all popular mobile device platforms, built on the rock-solid jQuery and jQuery UI foundation. Its lightweight code is built with progressive enhancement, and has a flexible, easily themeable design.

Volunteers: No Volunteers
Want to volunteer? I Can Present This!


Getting Started with Windows Phone 7
  3  

In this session we will look at how you can start developing for Windows Phone 7 for free. This demo heavy session will walk through the basics of creating a Silverlight or XNA application for the phone. We will end our discussion with a brief overview of the steps needed to get your application into the marketplace. You will learn: • Understand how to download tools and begin creating applications for Windows Phone • See how to create applications using either Silverlight or XNA • Understand unique issues with developing for the phone including application activation and requirements for placing the application in the marketplace

Level 200 - (Beginner): Introductory / fast moving
Presenter: Scott Golightly



Java Development Track

Java Multithreading
  6  

Learn how to make java applications using Mulithreading.

Volunteers: David Solum
Want to volunteer? I Can Present This!


Unified Log4j Logging with MongoDB from Java and PHP
  5  

Learn how to migrate existing java log4j implementations to send detailed logging to MongoDB Document database as JSON logging message from multiple sources, then query the logging documents as a unified logging view. Unified example will also show PHP applications logging to the same MongoDB instance for a truly unified database logging mechanism.

Level 200 - (Beginner): Introductory / fast moving
Presenter: Mick Knutson



Database Development Track

What to do with that new Shiny SQL Server
  4  

So your a developer in a company and you have no DBA and they say hey we have SQL Server x,y and Z! That you need to manage and take care of. What should you look for? What are the gotchas? What scripts do you need put on the servers? This presentation will walk you through the major Key points of what you should look for and why and what scripts are available out there for free to do much of the heavy lifting for you. Whether your a developer or a DBA this will show you what you need to look for in your SQL Servers.

Level 200 - (Beginner): Introductory / fast moving
Presenter: Pat Wright


Database Development for C# Coders
  3  

In this session we will discuss some of the concepts that developers should know in order to create applications that will "play well" with SQL Server. We will briefly discuss SQL Server architecture and the different features of SQL Server that are available for you the developer to use. We will then dive into some of the most common issues that C# developers have when developing SQL code.

Level 100 - Introduction
Presenter: Scott Golightly


Lap Around SQL Server 2012
  3  

Abstract: This session will look at some of the major enhancements in SQL Server 2012. We will examine how these changes will impact developers and applications. In this session you will learn: • How SQL Server 2012 provides even greater reliability and disaster recovery • How you can use Data Quality Services to provide clean accurate data to stakeholders • How to use the improvements in analysis and reporting to derive business insight from the data in your database

Level 200 - (Beginner): Introductory / fast moving
Presenter: Scott Golightly


Begin, Commit, and Everything In-Between
  2  

Transactions are among the most fundamental ideas of modern database systems, yet most developers choose to ignore them, hoping to have a new job by the time it comes back to bite them. This presentation will cover why database transactions are important, and how they work. It will then expand on the topic to include other systems where transactions also apply.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Joshua Tolley



Systems Architecture

Getting Started with MVVM
  7  

The Model - View - View Model architecture is the preferred UI architecture for WPF applications, but it's a good architecture for other technologies as well. Learn about the core principles of the MVVM architecture and how it's used to overcome issues that are difficult using other patterns.

Volunteers: No Volunteers
Want to volunteer? I Can Present This!



Electronics & Robotics Track

Going Beyond the Arduino
  11  

The Arduino has revolutionized the the hobbyist electronics and robotics enthusiast! It made programming microprocessors easy, but there are some limitations and to get past them you need to write code at a lower level. It's not as hard as you might think and it can take an idea from prototype to production ready. We'll also talk about ways to solve common electronics problems like conserving GPIO ports, Analog to Digital Conversion, debugging, etc.

Volunteers: Nathan Zaugg
Want to volunteer? I Can Present This!


Introduction to .NET Gadgeteer
  10  

.NET Gadgeteer is a platform for creating your own electronic devices using a wide variety of hardware modules and a powerful programming environment. Even someone with little or no electronics background can build devices made up of components like sensors, lights, switches, displays, communications modules, motor controllers, and much more. Just pick your components, plug them into a mainboard and program the way they work together. .NET Gadgeteer uses the .NET Micro Framework to make writing code for your device as easy as writing a desktop, Web or Windows Phone application. http://www.netmf.com/gadgeteer/what-is-gadgeteer.aspx

Volunteers: Nathan Zaugg
Want to volunteer? I Can Present This!


Programming for the Kinect
  4  

The Kinect is a motion sensing input device for the Xbox 360 video game console. The Kinect sold 8 million units in the first 60 days to claim the world record for the fastest selling consumer electronics device. Since then Microsoft has released a SDK that enables developers to write .NET code for the Kinect. This has enabled many games and other uses for the Kinect. In this session we will see how you can get started programming for the Kinect and what kinds of applications you can write. In this session you will learn: • How to turn the data from the sensors into a usable signal • Detecting skeletons and movements • Integrating Kinect into your application

Level 200 - (Beginner): Introductory / fast moving
Presenter: Scott Golightly



Show & Tell

Digital Comic Books!
  12  

I'm using standards based HTML5, CSS3 and Javascript to build a platform for 21st century comic books! I'll lay out the big idea, show off what has already been built and explain the code behind the immersive experience.

Level 100 - Introduction
Presenter: Jared Buttars


What are you working on?
  6  

Present your personal pet project. Why is it awesome and how did you build it?

Volunteers: Michael Christian , Alex Ford
Want to volunteer? I Can Present This!



Web Development

LESS is More: Dynamic CSS
  13  

CSS can be lame and very repetitive. Let's DRY it up. LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions. In this session we will take a plain old boring CSS file and transform it into a leaner, meaner, more awesome LESS file.

Level 300 - (Intermediate): Basic knowledge of subject matter is suggested
Presenter: Paul Navasard



Track Name

Session Name

Track

Level

Session Abstract