Twin Cities Code Camp

Spring 2014, Tue, Apr 01, 2014


  • John Culviner

    Introduction to Angular.js

    by John Culviner

    Come find out what all the hype for Angular.js is and learn how to build a full blown application! First we’ll see how it compares to other JavaScript libraries and frameworks out there and then we'll do a deep dive live coding a single page web application with Angular.js visually learning core concepts, tips and tricks along the way. Expect to leave the presentation feeling confident you could start to use Angular.js right away to replace a few jQuery spiderwebs all the way up to a full-blown enterprise SPA.

  • Kevin Hakanson

    Make Your Own Print & Play Card Game Using SVG and JavaScript

    by Kevin Hakanson

    Want to leverage your creativity, love of board games, and web platform experience to do something different? Turn your imagination into a Print & Play card game using only a modern web browser, color printer and text editor.

    This session will use the Scalable Vector Graphics (SVG) image format and JavaScript programming language to make a deck of cards for a simple game. Creating a few cards in graphics software like Inkscape is one thing, but what about 50 or 100 cards? What happens when you need to update them all? That’s the value of generating your SVG using JavaScript.

    We will start with a blank screen, adding color and graphics elements like lines, shapes, text and images. Learn about container elements and defining content for re-use. Understand how units in the SVG coordinate system can transform our on-screen creation into an 8.5 by 11 inch printed page (or PDF). SVG examples will be both in their native XML format and created from JavaScript using Snap.svg, an open source library from Adobe designed for modern web browsers.

    You will leave this session with a basic knowledge of SVG concepts, how to programmatically generate SVG using JavaScript, and how to make your SVG creation printer friendly.

  • Mike Hodnick

    Live Coding: Unleash the Soul of Programming

    by Mike Hodnick

    What is Live Coding? Live Coding is an emerging art form in which performers use programming languages to create live, improvised sound and visuals. Rebuffing trends in turn-key computer DJ software, Live Coding embraces transparency, improvisation, and a raw, genuine, hands-on approach to electronic musical performance. In this session we will explore Live Coding and its impact on the arts, education, and software engineering. We will dig in to some popular Live Coding environments that YOU can use today to create with. Last, but certainly not least, we will make beautiful noise with code and a pair of speakers.

  • David Washington

    Designing Touch-First App User Experiences

    by David Washington

    The latest trend in mobile apps is to differentiate through hyper-interactive touch interfaces. Designing and thinking for touch means being prepared to re-think your UX for touch first. In this session, we’ll walk through how to design a non-traditional user experience with direct manipulation, real-time feedback and learnable feedback.

  • James Greene

    The Art of Node: An Introduction to Node.js

    by James Greene

    By now, most developers have heard of Node.js — the dominant "server-side JavaScript engine" — but many still haven't worked with it. Come listen, learn, and play along as we explore the world of Node.

    Attendees can expect answers to the following questions:

    • What is Node, really?
    • What is Node good for? What is Node exceptionally great for?
    • Why should I care about Node? Isn't it only used by "hipster" startups? I work in the enterprise!
    • How do I use Node?
    • How should I structure my Node application?
    • What is NPM? How do I use it?
    • Is there an analogous Node module to my beloved "Library XYZ" for .NET (or other languages/runtimes)?
    • Can I only use Node on the server-side?
    • ...and so much more!

    Attendees should have basic familiarity with the JavaScript language and how to use a command line (terminal).

  • Dan Callahan

    Don't : How Web Components will Redefine the Web

    by Dan Callahan

    Create your own HTML tags with Custom Elements!

    Take your hands off the handlebars.js with HTML Templates!

    Seamlessly reuse front-end code with HTML Imports!

    Shine light on the Shadow DOM!

    In this session, you'll learn how the brand new "Web Components" standards will help you "define widgets with a level of visual richness and interactivity not possible with CSS alone, and ease of composition and reuse not possible with script libraries today." In other words, you can finally encapsulate and extend HTML itself, and it's awesome.

    Plus, we'll make a brand new <custom-blink> tag in the first five minutes. The Web will thank us later.

  • Vince Bullinger

    Cross-Platform Mobile Development with Xamarin

    by Vince Bullinger

    Creating enterprise-caliber mobile applications presents a myriad of problems. One of those problems is having an entirely separate team of developers with an entirely separate skillset for each platform on which you’d like your app to work. Cross-platform mobile development seeks to alleviate this problem.

    In this talk, we’ll take a deep-dive into the Xamarin framework. We’ll take an in-depth look at the Xamarin 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 Xamarin development for the enterprise environment and take a look at tools associated with Xamarin.

  • Matthew Renze

    Why Agile? The Economics, Psychology, and Science of Agile's Success

    by Matthew Renze

    Most presentations on Agile practices only cover what Agile is and how Agile practices work. However, in this session, you will learn why Agile practices like Scrum, TDD, and refactoring are so effective in terms of economics, psychology, and science. In addition, we'll explain the success of Agile practices with insights from various scientific fields including Information Theory, Network Theory, and Game Theory. Whether you're still unsold on the value of Agile, actively practicing Agile, or need to convince others of the value of Agile, this presentation is for you.

  • Jake Good

    Lightning Talks - Hosted

    by Jake Good

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

    Topic ideas:

    • Why I love llamas and how they help me write code
    • Check out this cool TODO app I wrote in Brainf*ck
    • This is my secret SSH session to an FBI computer
    • My startup, FaceSpaceLinkedVine is launching next week, here's our awesome landing page where you can share your email with us and that's about it.

    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.

  • Nate Young

    Making Massive Apps Mini: Google's Closure Compiler

    by Nate Young

    Google's Closure Compiler is more than just a run-of-the-mill JavaScript minifier, it's a whole-program optimizer with a number of tricks up its sleeve: dead code elimination, inlining, a rich standard library, and even type-checking. It is, like lots of tools Google throws over its high ivory walls, a bit intimidating to get started with, though. This talk will show you how to get up and running with Closure, how to integrate it into a one-touch build process and the ins-and-outs of its most useful features. I'll show you what I did to take a rich, single page app with 456K of JavaScript spread over 123 files and turn it into a single 74K file.

  • Nick Stevens

    Quest for the Holy Gradle: Software Build Top-to-Bottom

    by Nick Stevens

    Historically JVM build tools have been locked in the JVM playground - languages other than Java need not apply. Gradle is a blossoming build tool that changes that - providing build capabilities for everything from C to JavaScript, Scala to Java.

    This session is going to be heavily based on doing: creating a simple project that spans Java, Groovy, JavaScript, and CoffeeScript. I'll show you how to perform all steps of a build and assembly process with a single Gradle command, from a workstation with only the JDK installed.

  • Jason Clifford

    What is DevOps/Infrastructure as Code and Why Should I Care?

    by Jason Clifford

    DevOps has become an increasingly popular buzzword over the last few years and is surrounded by many misconceptions. We’ll cover what DevOps really is, it’s history and how it can provide a competitive advantage. We will also go over an introduction to Chef and Puppet with examples for both Linux and Windows.

  • Brad Broulik

    Responsive Web Development Patterns

    by Brad Broulik

    Want to learn how to create a single responsive site that can be viewed across all devices by applying the latest Web techniques and strategies? In this talk, we’ll explore the patterns and strategies we can apply to create sites that adapt across all our devices including mobile phones, tablets and desktop browsers. Topic discussed will include:

    • Building responsive sites with fluid grids, media, and media queries
    • Learn to implement the appropriate layout patterns for your content
    • Learn to apply a responsive image strategy
    • Learn to build responsive navigation
    • Learn responsive workflow patterns
    • Learn about tools and frameworks that help simplify responsive web development
    • Learn performance strategies that keep sites lean, fast, and responsive
  • Jason More

    Angular.js Testing

    by Jason More

    The first time you you write tests for any new framework can be challenging. How do you setup the tests? How do you run them efficiently? What about mocking upstream callers? Is any of it really worth it?

    During this talk I’ll show you how to write unit tests for Angular controllers, directives, services, along with browser components such as setTimeout and making HTTP calls. I’ll be writing my tests in Jasmine, and continuously running them in Karma. Then we will wrap up by writing one end-to-end test using Protractor.

  • Todd H Gardner

    Traces of Errors: Getting Better JavaScript Stacktraces

    by Todd H Gardner

    The web is full of broken JavaScript: broken forms, browser fragmentation, interaction race conditions, and malfunctioning API's. The lack of quality is approaching crisis: we're losing users, losing customers, and losing credibility.

    Let's write better JavaScript. Let's find and debug our errors. The first step is to understand them. We'll discuss JavaScript Error object in detail: How to use errors, how to catch them, and how to understand them. The asynchronous capabilities of JavaScript pose challenges to error handling that confuse many developers, so let's talk about some techniques to deal with errors across asynchronous boundaries. I'll also share some tips to improve the maintenance of your JavaScript applications.

    Let's fix our bugs!

  • Richard Isaacson

    Systems Inferno: Automation from Hell to Heaven

    by Richard Isaacson

    A conversation of the Systems journey from Operator to Architect. We will cover techniques and tools that apply to each of the job title stages. In addition we will talk about how systems automation isn’t confined and is becoming relevant to the application development life-cycle. While this talk is very Unix family focused the general topics should apply to any operating system. Management is welcome to attend as the talk may give them an idea of what their teams should be doing and how to support their team.

    We will not be dwelling long on on any one technology stack as we will favor a strong overview of what the journey should look like. Executing commands from notes, from memory, in scripts, as a part of tools, and via push button self-service will be our major mile markers.

  • David Shepherd

    Regex Searches: Ain't Nobody Got Time for That!

    by David Shepherd

    Developers are busy people, running from sprint to sprint, with little time for self-reflection. They don't notice how often they mutter "..how'd he implement that.." or "..where's that method that does X?" They don't notice that the search tool they use to answer these questions is from the 1960s. They don't even seem to notice that 90% of these type of searches fail! Fortunately, a developer turned researcher did notice, and has dedicated the better part of the last decade to eliminating this quiet productivity-killer.

    In this talk, I'll use both video examples and a massive repository of real developer activity data to prove that the typically-used regex searches waste a significant part of your day. Yet this talk won't dwell on the past; it focuses squarely on a better search future. I'll provide a tour of Visual Studio's many built in searches, demonstrate two search tools available as extensions, and provide guidelines for better searching. By attending this talk you will become a more effective searcher, a skill that is surprisingly fundamental to software development, and I estimate you can eliminate 10-30% waste from an average sprint.

  • Robert Boedigheimer

    HTML5 for Better Web Sites

    by Robert Boedigheimer

    The latest version of HTML is not completely standardized yet, but there are parts that are available in the latest version of browsers. There are many new elements, including those that provide more semantic meaning to common <div> elements (like header, footer, etc). A new <canvas> can be used for drawing, while the <audio> and <video> provide new multimedia capabilities. New input types are utilized by devices to provide context sensitive keyboards and improved usability. The new application caching and web storage provide the capability for disconnected web sites for smartphones and tablets. Learn about support for HTML 5 in major browsers, and see how Modernizr can provide feature detection and smooth fallbacks via various polyfills.

  • Kristina Durivage

    Building Wearables

    by Kristina Durivage

    The area of wearable technology is getting increasingly popular and taking all sorts of forms. This talk will follow one path to making wearable technology, and will cover some tips and common pitfalls to avoid.

  • James McConnell

    Learning the Managed Extensibility Framework

    by James McConnell

    Want true de-coupling in your code? Want to be able to write small, isolated pieces of functionality and hook them all up together at run-time? Come learn about the Managed Extensibility Framework, one of the more obscure parts of the .NET Framework where we will learn some magic about composing an application from separate parts.

  • Chris Wilson

    Hands-on Haskell 101

    by Chris Wilson

    I've given a few talks about Haskell at previous TCCCs, but one thing that kept coming up was that people would say "hey, I want to do some hands-on stuff."

    Well you're in luck. I'm going to go through a quick hands-on intro to Haskell. Bring your computer and get ready to hack. I'll teach the basics of programming with Haskell. You'll learn the data structures, functions, and other tidbits necessary to start really writing code. Come see for yourself what everyone's been talking about!

    I'll assume only a basic level of computer programming. If you're comfortable in another language like JavaScript, Python, Ruby, C#, or Java you'll be fine. Even if you aren't quite comfortable, you should still be able to follow along and maybe you'll even be at an advantage, not having to ignore all you know about imperative programming!

  • Dan Nordquist

    Markdown - In Praise of Plain Text

    by Dan Nordquist

    Whether you're typing out a Subversion log message, a blog post, or an email, sometimes plain text just isn't enough. Join Dan Nordquist for a discussion of Markdown, a language (and program) that enables people to write HTML without the hassle. Learn how to use Markdown, who uses it today, what problems it solves, and how to include it in your projects.

  • Robert Boedigheimer

    Web Performance - Live Site Reviews!

    by Robert Boedigheimer

    Do you have questions about your web site's performance? Would you like to have your site reviewed live? Don't worry, I'm not selling anything, but you'll be selling a lot more when your site is so much faster! There are many techniques such as HTTP compression, caching with expirations, bundling and minification, image optimization, CDNs, and more that we will review in the context of attendees' real web sites. We will also discover tools such as Fiddler and Page Speed you can use to diagnose performance on your own. Ever wanted a free performance review of your web site with tips to improve it, now's your chance!

  • Justin Wendlandt

    Visual Studio Automation

    by Justin Wendlandt

    There are a lot of exciting talks about how to implement particular functionality X in Framework Y using programming language Z. Not too many people get excited or present about how to improve your daily development workflows and tasks.

    This talk will focus on how to automate everything you can imagine using Visual Studio 2013. This includes topics involving T4 templating languages, custom code generators, creating Visual Studio project templates (.vsix files) and building NuGet packages. We will also examine how to use the Visual Studio DTE COM-API to automate tasks in Visual Studio. The emphasis on this talk will be around how you as an architect or team lead can enable the other members on your team to start up a project or application using pre-built templates so that you can maintain consistency between all of your applications in the enterprise.

    A lot of contribution work going on at Microsoft to enable the open source community to contribute more project and project item templates for Visual Studio that you can check out / contribute to located at http://sidewaffle.com/.

  • Jenna Pederson

    Agile Testing with a Side of TDD

    by Jenna Pederson

    As teams start to adopt agile practices, feedback and quality are core components. We will take a look at what goes into agile testing, patterns for success, and the reasons why test driven development is effective. The second half of the session will focus on the test driven development workflow where we will work through some examples.

  • Brian P. Hogan

    Grunt From The Ground Up

    by Brian P. Hogan

    Modern web development requires managing CSS, JavaScript, HTML, and other assets, and things can get out of hand quickly. Grunt has become the standard for managing all of the tasks related to modern development, from concatenating files to minifying files for production. Unfortunately, most documentation on the Web focuses on how to cut and paste configuration files together. That’s not very helpful.

    In this talk you'll learn how to use Grunt for a variety of purposes as we explore how it all works. We’ll cover how to develop Grunt tasks, how to work with files, how Multitasks work, and how to use Grunt and its plugin system to manage the development of a single page app that uses CoffeeScript, Sass, and Angular. When we’re done you’ll know exactly how Grunt works so you can use it on your own projects right away.

  • John Urberg

    Grails in the JavaScript Age

    by John Urberg

    We are in the "JavaScript Age" where more and more web applications are making heavy use of JavaScript on the client. Many of us are still writing "LAMP Age" applications where we generate pages on the server side using our favorite MVC framework. When we develop our server side code, we know we should be using good engineering practices such as modularity and unit testing. As we continue to add more and more JavaScript, we should be applying those principles to our JavaScript code. This session will show how to refactor your JavaScript code to incorporate these principles using only PhantomJS and your framework's build tools. The presentation uses Grails but the concepts should apply to your favorite server side framework.

  • Kyle Boon

    Vagrant Up

    by Kyle Boon

    Vagrant is a tool to create and configure development environments in a virtual machine. I'll go over the basics of vagrant plus orchestration tools like chef. I'll also show how Bloom Health uses Vagrant to help developers cope with our growing services based stack. These tools allow developers to focus on writing business logic and not worry about mysql versions and other minutiae.

  • Scott Heckel

    Progressive Enhancement – The Reports of my Death are Greatly Exaggerated

    by Scott Heckel

    The web was meant to be enjoyed by everyone and progressive enhancement is a strategy that will allow all of your users to enjoy the same content. We will take a hands-on look at how the concept of progressive enhancement of JavaScript will enhance your customers experience with only a little extra thought and elbow grease from your development team. Finally, we’ll take a look at where progressive enhancement sits in the modern world of single page applications. Basic HTML, JavaScript and CSS understanding are fundamental to this talk with some brief server-side content (ASP.NET and Node.js discussed).

  • Lou Miranda

    Mobility: Designing & Developing for Tablets and Smartphones

    by Lou Miranda

    Mobility isn’t just about smartphones anymore. Since the advent of the iPad, four years ago, tablets have sold in the hundreds of millions. Recent studies on consumer spending for the 2013 holiday season demonstrate that much mobile commerce occurs on tablets. And as a productivity device, a tablet can be much more useful than a phone-sized device.

    But is designing and developing for tablets too difficult? Are there reasonable ways of cutting costs when developing tablet apps? How much visual design and code reuse is there in “universal” apps that run on phones and tablets? How different is a tablet from a laptop, and how different is it from a phone? All this and more will be discussed as we cover one of the leading trends for mobility in 2014.

  • Ken Korth

    Angular Tips and Tricks From a Newbie for Newbies

    by Ken Korth

    Did you drink the AngularJS KoolAid(r)? If you have already started developing in AngularJS, you know by now that there are little things that can catch you by surprise. That is what this session is all about: little tips and tricks that can help you reach 'Ahah!' moments with AngularJS.

    This session is aimed toward beginning Angular developers who are struggling with questions like:

    • What is the best way to have controllers communicate?
    • Why is $scope often getting in my way?
    • How does $q and the promise API work in Angular?
    • How do $apply and $digest work (and more importantly, why you should or shouldn't use them)?

    We'll walk through these questions and more as we help flesh out a mental model of AngularJS, helping participants become more familiar with this powerful JavaScript framework.

  • Eric Brandes

    Big Data in Real Time with Elastic Search

    by Eric Brandes

    You have mountains of data. Users demand instant rich interactions. Businesses need deeper insights from that data. How can you group, search, and drill down into big data in real-time without crushing the database or writing cumbersome map/reduce jobs?

    Elastic Search is the distributed, open source answer to your problems. It’s a powerful tool that slices and dices massive data sets in real-time. In this talk we’ll see some live demos that showcase the power of Elastic Search, but would melt a traditional database. Things like full text searching, nested groupings, and real-time analytics. We’ll also discuss when and why you would use Elastic Search over more conventional alternatives.

  • Chris Johnson

    Packing Your *nix Toolbox

    by Chris Johnson

    Do you use OS X or Linux daily for development? Ever wondered how to automate those tasks you repeat over and over? Want to make managing remote servers easier?

    In building your *nix tool box we'll learn how to use some simple scripts and libraries to build out a custom tool box tailored to your specific situation.

    This will bring you one step closer to saying 'Unix is my IDE'.

  • Paul Timmerman

    An Optimistic Approach: Utilizing Snapshot Isolation in SQL Server

    by Paul Timmerman

    Readers block writers and writers block readers. You’ve got to write your T-SQL code with that in mind, right? Not necessarily! By utilizing the Read Committed Snapshot database option or the Snapshot Isolation level within SQL Server, you can dramatically increase concurrency for your database applications. After a high level overview of SQL Server isolation levels, we’ll spend the majority of this session discussing the implementation of optimistic concurrency control within SQL Server. We’ll look at the benefits and drawbacks of using an optimistic isolation level and discuss use cases where it may or may not be appropriate. Come learn how to put one of the more powerful, but least understood, aspects of SQL Server to work for you!

  • Norton Lam

    Intro to Google Glass Development With the GDK

    by Norton Lam

    A lot of media attention has been given to Google Glass. Some believe it is the future, others think it is just a passing fad. Like the iPhone before it, it's success will depend a lot on the applications that will be developed for it.

    Google is selling Glass to those interested in trying out the technology, called Glass Explorers. Many of them are beginning to create very interesting applications for the device.

    This talk will introduce you to Glass and the basics of Glass development with the Glass Development Kit. Topics will include hardware and software capabilities and show code that accesses them. The Mirror API will be touched on, but not covered.