Twin Cities Code Camp

Spring 2012, Sun, Apr 01, 2012


  • Barry S. Stahl

    .NET TDD Kickstart

    by Barry S. Stahl

    In this session, the speaker and the audience will "pair up" for a coding session which will serve as an introduction to Test Driven Development in an Agile environment. We will use C#, Visual Studio and Rhino Mocks to unit test code to be built both with and without dependencies. We will also highlight some of the common issues encountered during TDD and discuss strategies for overcoming them.

  • Ananth Balasubramaniam

    2D Character Animation Techniques for XNA

    by Ananth Balasubramaniam

    As the trend of cutesy, fluidly animated 2D characters with a cartoon twist continues in the world of mobile games, developers need to come to grips with the technologies used by the pros to create and render this sort of game content. This session will take a deep-dive into the world of creating fantastic, realistic 2D characters/animations using simple sketches and freely available tools. We'll also see how to efficiently and flexibly render complex characters using WP7+XNA (Reach profile), touching upon topics like animation blending, artist-driven inverse kinematics and integration with physics engines like Farseer.

  • Mike Marshall

    Android Development for .NET Programmers

    by Mike Marshall

    The talk covers an introduction to Android application development using Eclipse, Java, the Android SDK and the Android Developer Tools(ADT) plugin. The talk targets .NET developers who have an interest in learning more about Android development but are unfamiliar with the toolset that is available.

  • Allen Sanborn

    Artificial Evolution, Zombies and JavaScript

    by Allen Sanborn

    Learn a bit about how to use artificial life algorithms and evolutionary algorithms to survive the coming zombie apocalypse. Evolutionary algorithms are inspired by some mechanisms from biologicial evolution (reproduction, mutation, recombination and selection) but aren't hindered by silly little things like how real biological systems actually work. We can harness these ideas to solve problems and optimize strategies that can help us get through our day to day activities or help us avoid having our brains eaten. The presentation will range from fundamental ideas to functional demos done in JavaScript (or CoffeeScript).

  • Joe Mayo

    Async: Today and Tomorrow

    by Joe Mayo

    Asynchronous programming (async) is emerging as a common programming practice, especially in .NET technologies such as Silverlight. In sophisticated scenarios, async can be complex, which is why Microsoft is adding language support in the next version of .NET. This talk will cover the current state of async, what the challenges are, and how your job will be made easier with the new language features.

  •         Wade Schultz

    Big Data and Healthcare: Wireless Monitoring, Data Storage, and Analysis

    by Wade Schultz

    In this session we will cover several topics related to obtaining, storing, and analyzing health and fitness data. With the increasing number of cheap, portable monitoring devices, individuals can capture and record health-related data almost constantly. Unfortunately, few of these devices are capable of integrating or providing a useful assessment of the measurements. We will demonstrate how to quickly capture data from Bluetooth-enabled devices such as the Wii Balance Board, Zephyr Bioharness, and others using both WPF and Android applications. Once the data is captured, we will store these real-time results in MongoDB and provide a simple web service secured with Windows Identity Foundation (WIF) to access and submit data securely from mobile devices. Providing efficient, integrated services such as these will be increasingly important in providing the best data and analysis possible to both healthcare providers and consumers.

  • John Urberg

    Boosting Your C++ Development with Boost

    by John Urberg

    There has been a resurgence if interest in C++. Boost is a set of open source C++ libraries that are designed to work well with the C++ Standard Library. The libraries are peer reviewed and many of the libraries are implementations of upcoming C++ standard library releases. The libraries are cross platform and work on most modern operating systems. The presentation will cover some common libraries that you may want to use to simplify and speed up your C++ development.

  • Rockford Lhotka

    CSLA .NET and Windows 8

    by Rockford Lhotka

    Windows 8 offers the exciting new “Windows Runtime (WInRT)” platform for application development. This new platform is similar to Silverlight in many ways, though it also supports JavaScript and C++ technologies in addition to .NET. CSLA .NET is a widely used open source framework for building reusable business logic in .NET that can run on .NET, Silverlight, Windows Phone, and Android. In this talk you will learn how CSLA .NET is being enhanced to support the new WinRT platform as well, allowing you to take your existing CSLA-based business logic and simply recompile it for use in building WinRT applications.

  •         Kevin Gisi

    Dart: A Replacement for JavaScript and Why You Should Care

    by Kevin Gisi

    It's widely regarded that JavaScript becomes a bit of a mess when scaled out to large project sizes. Yet the increase of client-side programming, and the advent of Node.js has driven us to use this language for lack of other options. Here, we'll examine Dart, Google's solution to the problem, and see how it stacks up against alternatives like CoffeeScript.

  • Lee Brandt

    Drinking From The Fire Hose: Web Edition

    by Lee Brandt

    We all know that technology moves fast, particularly web technologies. It can be overwhelming trying to keep up with it all. In this session I will show some techniques for drinking from the information fire hose, and quickly discuss some late-breaking technologies that web developers should be investing some time to learn, including MVC, KnockoutJS, BackboneJS, Jasmine, CoffeeScript, Bootstrap, KendoUI and more!

  • Avonelle Lovhaug

    Estimate: reflections on the approximate

    by Avonelle Lovhaug

    "When will it be done?" is the question most dreaded by software developers. You may think the most important tools for creating software estimates are a crystal ball and a divining rod, but there is a better way that won't involve magic. Plus, accurate software development estimates can enhance your professional image in your organization, and make life better by eliminating the mad dash at the end of the project. This session will improve your estimating accuracy by teaching you several techniques that I've learned through my 16+ years as a software consultant. It will also show you how to handle situations where an accurate estimate isn't possible. Bring your estimating questions and war stories!

  • Chad Kulesa

    Expressing Yourself with C# Expression Trees

    by Chad Kulesa

    Expression trees provide many new options for creating reusable code. Understanding expression trees will allow you to extend LINQ providers or even write your own LINQ provider. You can also write your own fluent API, removing the need for configuration or XML files. It is even possible to turn C# statements into Javascript! We will begin the journey of mastering expression trees, and adding this important skill to your repertoire.

  • J Wynia

    Extending .NET Applications with MEF Plugins

    by J Wynia

    The real world problems we're asked to solve with software are messy, the business rules change constantly, and they vary by customer or by context. Moving the things that change regularly into plugins lets you keep your core product solid while maintaining the flexibility your applications need. We'll use MEF (Managed Extensibility Framework) provide that functionality to a simple C# application.

  • Adam Ranfelt

    Extending Canvas: Going 3D with three.js

    by Adam Ranfelt

    We will be moving past the basics of the HTML5 <canvas> element and use the growing 3D library three.js. After going over the limitations and allowances available to the library, we will go over setting up a scene, the mesh model, primitive geometries, basic lighting, interaction, and go over tools to help you in your implementation. This presentation will cover the library being used for WebGL, though we will also cover the other available renderers.

  •         Mike        Hodnick

    Extensible, Durable JavaScript with Inheritance

    by Mike Hodnick

    In this session we'll talk about your options to implement inheritance with the squirmy, naughty, and very powerful language known as JavaScript. JavaScript has moved far beyond tricks like manipulating an HTML DOM and is being used to build powerful client-side (and server-side) libraries. As these libraries become more complex, inheritance can play a major role in how these libraries are implemented, consumed, and customized. With JavaScript's dynamic nature there is more than one approach you can take to achieve inheritance. Some of these approaches have performance implications, while others are more a matter of taste and style. In this session we'll discuss these approaches and which ones are best for different scenarios.

  • Joshua Ramirez

    First Principles of System Architecture

    by Joshua Ramirez

    If part of your job is designing architecture for a system then I'm sure you'll find this talk interesting. Many of us find ourselves struggling to keep up with the complexity of the evolving systems we support. Have you applied best practices but still feel like you could have better - a lot better? I have. Come find out what I've been learning about how to achieve some harmony in the design of an enterprise system. Find out how the lessons of OOP, SOA, EDA, DDD, CQRS, and other buzzwords can be distilled into a core set of first principles. Using these ideas I hope to share how to begin thinking about architecture instead of learning how to copy architecture. I'll be demonstrating this thinking in practice by walking you through the design of an online ordering system, and I'll leave you with the resources you need to continue your journey.

  • Jenna Pederson

    Gain Confidence with Continuous Integration

    by Jenna Pederson

    Instead of scheduling time to integrate code at the end of development, learn how to integrate often, find and fix bugs early, and improve developer productivity. See a popular CI tool in action and learn how the practice of continuous integration will give you more confidence in your software so you can start thinking about continuous delivery.

  • Andy Pickett

    Get Your SQL Server Under Source Control

    by Andy Pickett

    Have you ever had that dream, where you're coding away, and a team mate asks you to "mail them that 1 stored proc", so you do, then they come back and say "that broke my local DB's schema!!". And then you wake up only to realize.... IT WASN'T A DREAM!?! Science tells us that less than 8.268% of Dev Teams use source control for their database. That's crazy talk! How do you people sleep at night?! Come see some fresh techniques using tools by Microsoft and Redgate to tame the savage data beast. We'll explore getting schemas and data into your favorite source control repository, complete with change history and merge resolution. The Tour de Force will be leveraging these tools into a Continuous Integration AND Deployment process, complete with auotmated Test Data Generation and Integration Tests. Then sleep well at night knowing all your data babies are snuggled in and safe.

  • Brad Broulik

    Getting Started with jQuery Mobile

    by Brad Broulik

    You need to build an app, and you need it to run everywhere. And you need it now! jQuery Mobile gives you the ability to write once and run everywhere. In this talk, we will discuss jQuery Mobile's advantages and unique features. We will also talk about jQuery Mobile design strategies, highlight many tips along the way, and see how to get up and running quickly.

  • Rich Dudley

    Getting Started with SignalR

    by Rich Dudley

    SignalR is an asynchronous signaling library for ASP.NET. It's designed to help you build real-time web applications without a lot of hassle. In the past, developers would have to wire up "real-time" applications as a series of polls to a webserver, waiting for it to receive data back that was useful. This approach usually cost more in bandwidth than we wanted it to. SignalR simplifies this process, and makes it more useful for the ASP.NET developer. In this presentation, Kevin Griffin will guide you through implementing SignalR into your applications, and how you can take advantage of everything it has to offer.

  • Kevin Hakanson

    HTTP Potpourri

    by Kevin Hakanson

    Embracing HTTP is an important property of well constructed ReSTful and web apis. Every web developer is familiar with GET and POST, 200 and 404, Accept and Content-Type; but what about 207 and 413, OPTIONS and PROPFIND, Transfer-Encoding and X-File-Size? This session will be based on usage of various HTTP methods, headers and status codes drawn from the development of large scale, web applications. Examples will include raw HTTP, mixed in with JavaScript and ASP.NET MVC code.

  • Aaron Wallestad

    Introduction to KnockoutJS 2.0

    by Aaron Wallestad

    With the announcement from Microsoft that KnockoutJS would ship as an integrated part of MVC 4.0, KO is receiving a great deal of interest from the web development community. This talk will take you through a ground up implementation of Knockout 2.0 including observables and data-bindings. In addition, the presentation will cover some of the mistakes and pit falls common to first time users and will showcase a couple of advanced features such as custom bindings that can be used to overcome them.

  • Todd H. Gardner

    Islands of Richness: Structuring Rich Client-Side Applications in Javascript

    by Todd H. Gardner

    GMail, Twitter, Turntable; Rich client-side applications are hot! Plus there are great advantages to it: highly responsive to the user, minimized network traffic, and consolidated rendering logic.

    But Javascript tends to decay faster than strongly typed languages. This makes it even more important to structure your code in a modular, testable, and maintainable way. Modern Javascript libraries like these make structuring your application easier than ever!

    • Backbone.js -- Model-View-Template structure
    • Underscore.js -- General Purpose Javascript Utility
    • Require.js -- Dependency Management

    Together, we will build a Javascript web application atop these libraries--exploring client-side rendering, managing user state, consuming data, and error handleing.

  •         Nick        Schweitzer

    Javascript Unit Testing with QUnit and Mockjax

    by Nick Schweitzer

    Unit testing is a core part of a developers job, and is an important part of software quality. All too many times though, Javascript is left out of the unit testing mix. Learn how to architect your Javascript to make it more testable, and also how to use unit testing frameworks to mock your AJAX calls, create repeatable unit tests, and integrate those unit tests with a continuous integration server.

  • Jason More

    KnockoutJS and SignalR Mashup to Create Maintainable Real-Time Applications

    by Jason More

    Combining two powerful web technoglies - KnockoutJS (MVVM for the web) and SignalR (Async signaling for real-time, multi-user web applications), you can create a web application that lets users communicate in real time with minimal development. We'll quickly explore simple setup for both, then show how nicely they compliment each other. We'll finish with an audience driven game of "Family Feud" built on this technology stack.

  • James Greene

    Leveraging jQuery's Special Events API

    by James Greene

    The jQuery JavaScript library has become a household item in the web development community. It allows for simple event binding, DOM manipulation, and asynchronous requests. Many developers know they can extend jQuery using their simple plugin development process ... but did you also know that jQuery is extensible in other ways as well? We will focus on extending jQuery's event system via the Special Events API in order to create our own custom bindable events, such as "multiclick", "textSelect", and "swipe".

  • Jason Bock

    Managing the .NET Compiler

    by Jason Bock

    With the public release of Project Roslyn, Microsoft has finally let .NET developers get access to their long-awaited compiler APIs. The potential impact of having a compiler API available for all developers is immense. In this session, you'll get a tour of the elements behind this new API, such as syntax trees and engines, and how you can use them in code analysis and metaprogramming techniques.

  •         Brandy Favilla

    Marketing Yourself Using Various Forms of Social Media

    by Brandy Favilla

    The social media rocket has launched. Facebook, Twitter, LinkedIn and more – are these time distractions or actual tools you can use to be more productive and/or assist in reaching your career goals? This seminar will take a look at some of the most commonly used social media tools and how best to use them in your career management planning, building awareness and engagement to be noticed by your peers and future employers. We will look at what career management means (whether you are actively looking for a new position or not) and how you can leverage social media as a tool to reach your goals.

  • Chris Black

    Monetizing Mobile Apps

    by Chris Black

    Make more money with your mobile apps. The biggest hurdle in the mobile market right now is segmentation. We'll cover techniques to create, distribute and market applications across multiple platforms. Create apps with a variety of screen sizes in mind. Utilize cross platform tools to distribute software to multiple devices. Take advantage of mobile display networks to target people outside of the marketplace. Overcome segmentation and increase the success of your application by reaching out to a larger audience.

  •         Judah Himango

    Move Your Silverlight Skills to the Native Web with KnockoutJS

    by Judah Himango

    The war's over. Web plugins like Silverlight and Flash have served their purpose well, but the native web is now sufficiently powerful to render web plugins superfluous and irrelevant. What's a Silverlight developer to do? Enter KnockoutJS. Instead of throwing away our existing skills built up through Silverlight, I'll show you how to transfer your skills to the native web via KnockoutJS, using familiar technologies like data binding, MVVM, templates, and commanding support.

  • Brent Edwards

    MVVM with Caliburn.Micro

    by Brent Edwards

    With all the MVVM frameworks out there, it’s hard to know which one is best for you. In this session, we will look at one of the best MVVM frameworks out there: Caliburn.Micro. We will build an application from the ground up to show how to get started with Caliburn.Micro from the perspective that matters the most: the code.

  • Vince Bullinger

    NuGet: From Concepts to Implementation

    by Vince Bullinger

    NuGet is a relatively new package management tool for the .Net framework. While many of us have used it, not many of us have really looked too deeply into it. In this talk, we'll learn what NuGet is, how to use it, how to get the most out of it, how to build your own NuGet package and host it on your own NuGet feed.

  • Keith Dahlby

    Open Source 101: Get Involved with GitHub

    by Keith Dahlby

    One of the best ways to grow as a developer is to contribute to the ever-growing library of open source software, either with your own project or by working on an existing one. In this session we'll talk through some of the reasons you should get involved, and then take a closer look at how that process works with Git and GitHub.

  • Chris Johnson

    Pair Programming Techniques

    by Chris Johnson

    Pair programming is a trending practice. The old saying of "Two minds are better than one" holds true. However there isn't just one way to pair program. Here we'll cover techniques related to pairing locally as well as pairing remotely.

  • Greg Levenhagen

    Parallel Programming in .NET and Azure

    by Greg Levenhagen

    Parallel programming remains a difficult task, but the .NET framework keeps making things easier for developers. With the various constructs available, like the addition of the Task Parallel Library in .NET 4, it is important to know what is appropriate for different situations. Devices continue to gain cores and the cloud offers easily distributed computing, so developers should understand how to utilize the environments. Come for a walk-through of how and when to use these constructs, whether that is in the cloud, a mobile device, desktop application or the web.

  •         Matt        Ronge

    Performance and Stability Tips for your iOS App

    by Matt Ronge

    Nothing will sink your app's reviews like crashes and sluggish performance. Learn how to eliminate crashes and speed up your app from experience gained working on complex iOS apps. In this talk you'll learn tips and trick that lower your memory usage and weed out crashers. I'll go over Apple's profiling tools and how to best use them. In addition I'll give real world examples of performance optimization and how they apply to your code.

  • Brian Repko

    Specification by Example with JBehave

    by Brian Repko

    The ability to communicate requirements via executable specifications is moving from bleeding edge to leading edge as team's are seeing it's value for both their agile processes as well as their continuous delivery pipeline. This talk will demonstrate testing a system's behavior using JBehave - a pure-Java BDD/ATDD tool with a syntax similar to Cucumber's Gherkin. We will cover basic stuff up to and including Selenium testing with Page Objects.

  •         Robert        Boedigheimer

    Targeting Mobile Devices with HTML5 and CSS 3

    by Robert Boedigheimer

    Mobile devices adoption rates have been amazing, including smartphone sales passing sales for PCs. Does your web site work well on mobile devices? Do you want to leverage your web development skills to provide mobile solutions to a broad range of devices rather than learn how to develop in multiple languages for multiple device platforms? Learn how HTML5 and CSS 3 are dramatically changing the capabilities of web sites on mobile devices, and how you can adapt your web site to be not just available but efficient across a broad array of devices.

  • Tommy Davis

    Teach Your Kids to Program

    by Tommy Davis

    If you are going to code camp, you likely know how valuable programming skills are, and perhaps you one day want your kids to learn these skills too. Programming teaches kids many valuable lessons: how to think logically and rationally, how to plan ahead, how to problem solve, and how to swear properly. But how do we teach kids to program today? When we were kids we were ecstatic to see a green blinking cursor on the screen prompting us to type our name so we could have the program print it repeatedly on the page while(true). How do we get today’s kids with XBoxes and Nintendos interested in rudimentary programming of “if” statements? In this session Tommy Davis (age 9) and his dad Scott will discuss four programming languages and how they work for kids: Scratch, Lego Mindstorms, Python, and C#. We will demonstrate each language and talk about Tom’s experience in each, what worked well and what didn’t, and what approaches you might take to get your own kids into programming. Tommy attended his first Twin Cities Code Camp last fall, where he showed off the Windows Phone game he had made before coming to the conference as the youngest programmer in attendance.

  • Aaron Erickson

    Understanding the MVP - Connecting Continuous Delivery to the Lean Startup Movement

    by Aaron Erickson

    The minimum? Why would I only want to do the minimum? It seems counter-intuitive - the idea that the best path forward when embarking on new product development should focus on the smallest possible product. Why not go big and try to launch with a big splash? Won't your customers be turned off by a lack of features and glorious complexity? As it turns out, taking the path of humility towards your market is a far more productive path. You can start with a small hypothesis - test that hypothesis against real customers. Using continuous delivery, you can rapidly iterating over your product, using data, rather than opinion, to guide your product development efforts. Such an approach not only costs less money, it allows you to vet the initiative before it becomes "too big to fail". In this session, we will cover what the MVP is, how you define one, and how you use validated learning to guide your efforts. Further, we will cover how agile software development and continuous delivery are essential to product development efforts that use this approach.

  • Matt Milner

    Understanding WebAPI in ASP.NET MVC 4

    by Matt Milner

    WebAPI is a new feature in ASP.NET MVC 4 for building HTTP services. Come this session to find out why HTTP and WebAPI matter and learn how you can use WebAPI to build services. You will learn how WebApi enables you to take full advantage of HTTP including caching, content negotiation, and eTags. In addition you will see how WebAPI integrates with MVC and how you can use it in a self-host scenario. We’ll cover all the good stuff like dependency resolution and unit testing of your services too!

  •         Brian        Hogan

    Using Rails and jQuery Mobile For The (Quick) Win

    by Brian Hogan

    Right now, there's a focus on creating native applications for mobile devices, but that can be costly, require a lot of additional time, and may be overkill for what you're doing. By combining the flexibility of Ruby on Rails with the ease of use of jQuery Mobile, you can develop quality mobile web apps. In this talk, we'll walk through creating a simple app, from scratch, that presents both a desktop and mobile view, and we'll talk about the ups and downs of this approach. Best of all, no prior knowledge of Ruby on Rails is assumed, and you'll have all the source code you need to recreate this project on your own.

  • Jeff Brand

    Web, Meet Windows. Hello XAML, My Old Friend

    by Jeff Brand

    Interested in the how to develop for Windows 8. Focusing on Metro-style applications and WinRT, this session will provide an introduction to the Windows 8 developer platform. Covering both XAML and HTML 5, we will look at the platform, tools and services available to Metro applications. From “Hello World” to leveraging Sharing contracts, along with a look at the Windows Store, we will cover a lot of ground to give you a solid starting point for developing and publishing applications.

  • Jeff Klawiter

    Windows 8 Metro Apps Crash Course

    by Jeff Klawiter

    Get the answers to the following questions: What is WinRT? Are you kidding me that you can use C# libraries in Javascript? Really, what am I "required" to do to get my app into the marketplace? Tell me Jeff...what do you "really" think about WinRT and Windows 8? Can you really teach me all I need to know in one session?

  •         Mohammad Faridi

    Windows Server AppFabric Caching. Server Rich, Cache Poor!

    by Mohammad Faridi

    The what, and how of Windows Server AppFabric caching 1.1. In this talk we will work with AppFabric Caching, getting it set up, how to place items in the cache, retrieve them, etc. We will talk about using Powershell to create cache, and monitor it. We will also talk about the pros and cons of configuration of the AppFabric Cache service. If we have time we might go over differences b/w Azure Cache and Windows Server Cache.