Twin Cities Code Camp

Fall 2014, Wed, Oct 01, 2014


  • Benoy John

    Acceptance Test Driven Development

    by Benoy John

    Acceptance Test-Driven Development (ATDD) is a development methodology based on communication between the business customers, the developers, and the testers. ATDD encompasses many of the same practices as Specification by Example, Behavior Driven Development (BDD), Example-Driven Development (EDD), and Story Test-Driven Development (SDD). All these processes aid developers and testers in understanding the customer’s needs prior to implementation and allow customers to be able to converse in their own domain language. This talk will focus on why we need to do ATDD, How we can include ATDD into our development process, the advantages and challenges in implementing ATDD. Examples for this talk will be in .Net/SpecFlow. If you are a Developer, Tester, Business Analyst, Product Owner or a stakeholder in a software development project this talk will show you how you could build products with in-built quality and value and can be extended easily.

  • Justin Wendlandt

    Angular, TypeScript and Project Katana

    by Justin Wendlandt

    What do you think about when someone brings up the topic of ASP.NET vNext? Is it another version bump of WebForms? Is it another version bump of MVC? This talk will focus on what problems the teams at Microsoft are trying to solve in the world of Web Development. It will cover topics such as Angular JS, TypeScript, Web API and modern web development. The talk will showcase what OWIN means and what is going on with Project Katana. Welcome to the future of Web Development.

  • Mike Benkovich

    Avoiding Hacker Tricks

    by Mike Benkovich

    Are you afraid? Should you be? Computer hacking isn’t a new thing, but the threat remains. In this attackers advantage and a defenders dilemma, how do you keep your data and secrets safe? Today’s ever changing technology landscape means that the fundamentals of writing secure code are more important than ever. In this session we take a look at the secure development approach and go thru the top exploits that you need to know about. We'll show how you can use .NET features to stop exploits before they happen. You don’t want to be at the center of the next media frenzy over lost data and compromised records, or lose your customers confidence and trust in how you do business. From injection attacks and cross site scripting to security misconfiguration we look at the hacker's psyche and show how they think and work, and learn what we can do to build more secure software.

  • Brent Edwards

    Building a Modern Windows App

    by Brent Edwards

    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.

  • Shannon Hofer

    Building SPAs with the MEAN Stack

    by Shannon Hofer

    From prototyping to production, having a light stack can simplify and speed up application development. MongoDB, ExpressJS, Angular and NodeJS team up and form one of web-dev’s latest stacks and in this session we will cover how to build single page applications using these four tools.

  • Judah Himango

    Call of the Raven: RavenDB for the .NET Developer

    by Judah Himango

    The NoSQL movement continues to pick up steam as developers discover they don't need monolithic relational databases. Sometimes, we just need to get some work done and start storing our data without worrying about tables schemas or PM > Update-Database. What's a developer to do? RavenDB might just be the ticket. The new RavenDB sports a high-speed managed storage engine, fully transactional document store, an HTML5 tooling, and -- oh yes! -- first-class LINQ support. What more could a developer ask for, eh?

  • Vince Bullinger

    Cross-Platform Mobile Development with Titanium and the Appcelerator Platform

    by Vince Bullinger

    Mobile apps are becoming more and more important for business to roll into their development landscape. Cross-platform mobile development is commonly the best solution for many situations. Many frameworks have cropped up to solve these problems.

    In this talk, we'll take a deep-dive into the Appcelerator platform. We'll take an in-depth look at the Titanium approach to solving this problem, as well as briefly touch upon native development and other technologies' cross-platform solutions and when each one may be appropriate to use. We'll also go over some best practices for Titanium development for the enterprise environment and take a tour through the Appcelerator tools.

  • Jeremy Ellis

    Cross-Platform Mobile with Xamarin.Forms

    by Jeremy Ellis

    Presentation will demonstrate and code the basics to show how to write a single Xamarin.Forms application that has single code base for iOS, Android and Windows Phone.

  • Kamran Ayub

    Demystifying TypeScript

    by Kamran Ayub

    Have you ever tried to refactor a monstrous JavaScript application? There will be blood and tears. In this session, I'm going to demystify TypeScript and address common myths and general misconceptions I've heard when talking to fellow developers. I'll show you why TypeScript is an excellent way to organize (and maintain) application-scale JavaScript projects and why you should leverage it in your projects to make your life more productive and less stressful, something everyone can relate to. It's time to conquer your codebase.

  • Brian Bosak

    Developing Highly-Scalable Apps for the Azure Cloud

    by Brian Bosak

    One of the biggest topics in computing these days is cloud computing, and with the cloud often comes the question of how to efficiently store and process large quantities of data, as well as maintaining an active front-end that is consistently accessible to end-users while providing predictable performance. Many people still see the public cloud as prohibitively expensive; particularly if they are used to large on-premise servers with very fast processors and high quantities of memory per server. However; on Azure, it is more economical to "scale out" rather than "scale up". In this speech, I will discuss techniques for developing a highly scalable app for the Azure cloud, as well as minimizing the cost of hosting while maximizing performance.

  • Scott Colestock

    DevOps with Elastic Beanstalk

    by Scott Colestock

    With all of the maturing configuration frameworks available (Chef, Puppet, Ansible, and others), what can you accomplish with pre-packaged containers such as Amazon's Elastic Beanstalk?

    This talk will explore exactly what is provided with this Elastic Beanstalk for load-balanced multi-node server farms, both web and worker roles - and how multiple environments, configuration, health check, and rolling upgrades are all handled.

    In addition, we'll talk about how one team used Github, Jenkins, and Elastic Beanstalk to create continuous delivery pipelines for a set of related applications across multiple environments.

    Finally, we'll talk pitfalls and gotchyas - and why you might prefer to deploy via fully scripted goodness.

  • Charles Oliver Nutter

    Doing Open Source the Right Way

    by Charles Oliver Nutter

    Have you ever used an open source project? Well of course you have, but how about contributed to one? Filed a bug report? Submitted a patch? Have you ever started your own OSS project, or taken a closed/private project public? What licenses should you use? How do you manage contributions? How do you encourage contributors and get work done? In this talk we'll go over the basics of OSS: how to get involved, how to start a project, how to manage contributions. We'll discuss project lifecycles, legal CYA tips, and how to keep projects moving. You'll see the inner workings of real OSS projects, and learn how to be a better OSS user and producer.

  • Mike Marshall

    Eradicate "Not Invented Here" - Libraries and Services for Common Application Needs

    by Mike Marshall

    Remember that time you wrote your own authentication framework, or that cool logging/tracing library that you were sure would impress your co-workers? Although "NIH" may not be as prevalent as it used to be, we'll talk through free and low-cost alternatives to those last few aspects of your application that should really be leveraging existing libraries and services. Logging, fault reporting, authentication and more.

  • Philip Nelson

    Evolving From REST to Hypermedia Designs

    by Philip Nelson

    RESTful approaches for exposing data via HTTP have become very popular over the last 5 years, but it turns out we aren’t done with this yet. The original paper by Roy Fielding that coined the phrase was actually talking about something quite different than what we think of REST being today. His idea’s focus was the messages (media types) used to transition from one state to another in a process oriented design using a small number of “verbs”. This is quite different from the entity oriented designs where the client holds the knowledge of the overall process that we have grown used to. At the center of the style is a state machine that is used to tell the client what it’s possible next steps are which it does with every response. Come and explore what a hypermedia design looks like from both the client (Wordpress plugin or javascript) and server’s (in c#) perspective with an application written on the Hypertext Application Language (HAL).

    • What do mean only one starting url?
    • Hey you changed the url of my kittens link, what the heck!
    • So I can just ignore that rel and profile stuff, ok?
    • A resource, so you just mean my database, right?
    • A media type is like my mp3’s, right?
    • I love version numbers, so where do they go?
    • How do know when I can update my kitten photo and when I can’t?
    • No hacker will try to use this I am pretty sure.
  • Mike Benkovich

    From App Studio to Mobile Services to Xamarin - Connecting the Dots

    by Mike Benkovich

    The only thing that’s constant is change, and nowhere is that more true than in mobile technology. New phones, tablets and phablets mean new opportunities for developers to create great ways of connecting people and the data. In this session we’ll explore how you can go cross platform with data, identity and services to create the ultimate connected experience. From creating a quick start application with App Studio to connecting it with Mobile Services data and identity, to delivering it across platforms we will show you how to build applications that share data and identity, and connect it all with the cloud.

  • Richard Brantley

    Getting Started with node.js

    by Richard Brantley

    Node.js is a platform for executing JavaScript outside of a web browser. It is mostly used for high-traffic web services and where using the same language on the client and server are a benefit such as Single-Page Applications. This presentation will introduce you to Node.js, discuss when to use it (and when not to use it), and will show you the basics of writing node command line and web applications including modules and unit tests.

  • Brandon H

    Give Your App Some Global Appeal

    by Brandon H

    The US isn't the only place the action is! Learn how to use Microsoft's Multilingual App Toolkit to add translations to your app in a highly automated fashion.

  • Md khan

    High Performance JavaScript

    by Md khan

    Learning rules, best practices, jsLints or jsHints do not help you to write faster javascript. Because you forget them before you learn. Its not about the rules somebody tells you to follow blindly. Rather its the reasons or the process in the language that makes something faster than others.

    You don’t need to be an expert to write faster JavaScript.

    By being aware of how certain things work, you can write faster javascript array, loop, scope, event bubble, closure, DOM manipulation, etc. After this talk, your grandma could understand and make her own standards or best practices for you. Besides, modern tools that could make you a rock star at debugging performance related issues will also be demonstrated.

    “Don’t trust a rule, trust your tool”. "Explore and ask before you jump. Don't do a belly flop!"

  • Travis Feirtag

    Intro to Kinect HD for Windows

    by Travis Feirtag

    Kinect HD was first available to the public when the Xbox One was released in November 22, 2013. However it came with a special connector that did not allow the user to plug it into the PC. So we were left wondering, when will we be able to write software for the next version of this awesome sensor?! I am currently on the early preview program for the Kinect HD for Windows. The Kinect HD for Windows was officially released to the public on July 15th. However they haven’t released all the features of the SDK to the public yet. I am proud and excited to show you the great new features that come with the Kinect HD sensor.

    Besides being a full HD (1920x1080) sensor, it also allows you to track up to six people simultaneously. Body tracking has greater detail and more points to work with. The sensor is less susceptible to ambient lighting. The overall programming interface has been updated to be much more efficient. Audio filtering has been greatly enhanced to minimize noise. You can even use the Kinect HD sensor for Windows Store Apps.

    There are many exciting possibilities for the Kinect HD sensor. I hope you will join me as I show you what it can do for you.

  • Joel Kaufmann

    Intro To Nancy

    by Joel Kaufmann

    In this session we’ll take a look at the alternative .NET web framework Nancy, which is based on the Ruby library Sinatra. Nancy is a lightweight, low-ceremony, framework for building HTTP based services on .NET. The goal of the framework is to stay out of the way as much as possible and provide a super-duper-happy-path to all interactions.

  • Jason Clifford

    Intro to Puppet

    by Jason Clifford

    Puppet enables speed, reliability and repeatable of machine management. This can be critical for not only production infrastructure but can also improve development workflow and CI. We will explore the Puppet technology stack and dive into some basic patterns and practices for writing Puppet modules and managing environments. Due to the preparation needed to run demos without an internet connection if you have any specific demo requests please send a message on twitter to @jasonjclifford.

  • Austin Thompson

    Intro to Translation: From Zero to Implementation

    by Austin Thompson

    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.

  • Joe Koletar

    Introduction to Swift for iOS

    by Joe Koletar

    Apple released the Swift language as an alternative to Objective-C and the first iOS Swift based apps are now available in the App Store.

    In this session we will cover the basics of the language including declaring variables, implementing classes, and using generics and collections. We will also take a look at the xCode playground feature that allows you to test code in real time.

  • Jake Good

    Lightning Talks - Hosted

    by Jake Good

    Round 2 of the popular lightening talks... Last camp, we had a packed house and a full lineup of talks... Let's do it again this camp!

    Lightning talks are short presentations, back to back, about almost any topic you can speak about in 5 minutes. Spots will be limited as 60 minutes will allow for 12 spots through the session.

    Topic ideas:

    • I often code in my underwear and it makes me more productive. The reasons are...
    • When I'm in my mothers basement, I find myself searching for my old C64. Here's the research I found into why that happens.
    • I built a robotic potato gun so that I could shoot myself in the shin. I've always wondered how it would feel. Here's my story.
    • My new startup, Guilt... is the Gilt of Products that helps with Bad Decision Making...

    We'll have a laptop setup for short demos (web/app/etc) or if you can cobble together your laptop fast enough, you can use that.

  • Oren Eini, aka Ayende Rahien

    Low Flying Ravens - How Voron is Built

    by Oren Eini, aka Ayende Rahien

    In this session, Oren will discuss the design and implementation process for Voron, RavenDB's new storage engine. This is a low level talk that will focus on the internal implementation decisions, and the implications there of. Topics for discussion: trees, storage, transactions and concurrency.

  • Jason Bock

    Managing the .NET Compiler

    by Jason Bock

    With the new compiler APIs, Microsoft have let .NET developers get access to the internals of the compilation process. 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 parsers, and how you can use them in diagnostic analysis and refactoring tools.

  • Eric Brandes

    Next Generation Web Applications With React

    by Eric Brandes

    Client side frameworks like Angular, Knockout, and Ember rely on two-way data binding to keep view and model in sync. Two-way binding works great at first, but quickly breaks down as all the complex interactions make reasoning about the state of the application impossible. And, if you're not careful, you'll be thrashing the DOM and killing performance to boot.

    React is a JavaScript framework that takes a different approach.  It uses a "unidirectional" data flow to keep state transitions explicit and rendering lightning fast.  In this talk we'll see how a virtual DOM, new markup syntax, and some ideas from the functional programming world combine to make a great client side framework. Come see why you should write your next web application using React!

  • Nick Melnick

    NoSQL Done Right: Introduction to Couchbase

    by Nick Melnick

    Couchbase is a NoSQL solution that provides incredible speed combined with unparalleled elasticity, built on top of a stack that includes Memcached and CouchDB. It has built-in clustering, built-in caching, replication with auto-failover, and can be upgraded with zero downtime. Data stores can be based in memory or disk, or a combination of the two, and data can be replicated across a cluster of machines, or to multiple geographic locations with eventual consistency. As an added bonus, the language support is great.

    This is a no-BS introduction to Couchbase, without a language focus. We will go over the Couchbase admin interface and building a small cluster in the cloud, and demo basic document storage and map reduce functions in JavaScript. We'll spend a little time on XDCR, for replicating to other data centers, or to ElasticSearch. We will then create and walk through an example client application for Couchbase, written in JavaScript, and showing a mirror application in C#.

  • Justin Chase

    Oculus Rift and the Impending VR Revolution

    by Justin Chase

    Learn how to create VR applications for the Oculus Rift with Unity3D and discuss the impact on software development that Virtual Reality may hold.

  • Keith Dahlby

    One Delegate to Rule Them All: Understanding OWIN

    by Keith Dahlby

    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.

  • Oren Eini, aka Ayende Rahien

    Polyglot Persistence

    by Oren Eini, aka Ayende Rahien

    Today's world doesn't allow us to think in just one way. We have already learned that when we run into the limitations of the relational world. Document databases aren't suited for every category either, but in this talk, we'll explore the polyglot persistence option. A single database that provide multiple persistence options. Among those that will be shown are: distributed counters, event aggregation, and time series databases. All tailored specifically for their single task.

  • Kevin Hakanson

    Securing TodoMVC Using the Web Cryptography API

    by Kevin Hakanson

    The open source TodoMVC project implements a Todo application using popular JavaScript MV* frameworks. Some of the implementations add support for compile to JavaScript languages, module loaders and real time backends. This presentation will demonstrate a TodoMVC implementation which adds support for the forthcoming W3C Web Cryptography API, as well as review some key cryptographic concepts and definitions.

    Instead of storing the Todo list as plaintext in localStorage, this "secure" TodoMVC implementation encrypts Todos using a password derived key. The PBKDF2 algorithm is used for the deriveKey operation, with getRandomValues generating a cryptographically random salt. The importKey method sets up usage of AES-CBC for both encrypt and decrypt operations. The final solution helps address item "A6-Sensitive Data Exposure" from the OWASP Top 10.

    With the Web Cryptography API being a recommendation in 2014, any Q&A time will likely include browser implementations and limitations, and whether JavaScript cryptography adds any value.

  • Josh Renner

    Stylesheet Retrospective

    by Josh Renner

    If you are a full stack developer, you probably occasionally work with stylesheets. If you feel like you are poking a stick blindly into a house of cards when you do, this session is for you. Web design has come a long way since styles were inline and dispersed throughout the markup. Browser support of CSS3 is better, preprocessors have become ubiquitous, and tables are blasphemous. If you haven't been immersed, it's easy to feel lost. This session aims to give you a solid understanding of modern CSS development.

    We will review how preprocessors make life easier. We'll differentiate between SASS, Stylus, and LESS and take a look at the Compass framework and libraries like Bourbon. We'll quickly touch responsive design, some of the best parts of CSS3, and testing. The retrospective portion of the talk will involve looking at patterns I've used and encountered. We'll call out the good, bad and ugly to find anti-patterns and appropriate use of what is working. SAAS and lean proof-of-concepts require different strategies, but both should have styles that are scalable and maintainable. We'll define the tools and patterns that can make this possible. You won't be a ninja, but you will be able to include considerations of this important piece of your app's UI when architecting it and help guide practices that will result in better deployments and coverage.

  • Carl Schweitzer

    Talking to Cortana: How to Set Up and Use Voice in Windows Phone

    by Carl Schweitzer

    You just built the ultimate killer Windows Phone app, it may be good, but its not great. Why not? Because you haven't told Cortana about it!

    The Windows Phone speech APIs help you integrate your app into the system-wide speech and natural language user experience. In this session you will be shown how to set up your app to be launched with voice commands, how to use Cortana to deep link into your app, and how to appropriately respond when a user uses different contexts context.

  • Zac Harlan

    When Learning Stops: Recovering from an Expert Beginner

    by Zac Harlan

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