Twin Cities Software Symposium

March 2 - 4, 2012 - Minneapolis, MN


Hilton Minneapolis/Bloomington Hotel
3900 American Boulevard West
Bloomington, MN   55437
Map »

NOTE: You are viewing details about a past event. We will be back in MinneapolisOctober 4 - 5, 2013.
View the event details here ».

Video Preview

Rediscovering JavaScript

Friday 1:15 PM - Venkat Subramaniam

JavaScript is one of those very powerful languages that is often misunderstood and underutilized. It's quite popular, yet there's so much more we can do with it.

Watch Video Preview >

Introduction to Lean-Agile Software Development

Friday 1:15 PM - Paul Rayner

Successful software development is about building the right product at the right time for your customers. This means focusing attention on the right places in the portfolio of projects and products that your company provides, and optimizing the entire value stream from "concept to cash" for your customers and the development teams.

Watch Video Preview >

NoSQL Smackdown 2012

Friday 1:15 PM - Tim Berglund

Alternative databases continue to establish their role in the technology stack of the future—and for many, the technology stack of the present. Making mature engineering decisions about when to adopt new products is not easy, and requires that we learn about them both from an abstract perspective and from a very concrete one as well. If you are going to recommend a NoSQL database for a new project, you're going to have to look at code.

Watch Video Preview >

Continuous Delivery All-day Workshop, Pt. 1: Deployment Pipelines

Friday 1:15 PM - Neal Ford

Getting software released to users is often a painful, risky, and time-consuming process. This workshop sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers and operations, delivery teams can get changes released in a matter of hours–sometimes even minutes–no matter what the size of a project or the complexity of its code base.

Watch Video Preview >

Automated testing tools and techniques for JavaScript

Friday 3:15 PM - Venkat Subramaniam

Programmers often complain that it is hard to automate unit and acceptance tests for JavaScript. Testability is a design issue and with some discipline and careful design we can realize good automated tests.

Watch Video Preview >

Measure for Measure – Lean Principles for Effective Metrics and Motivation

Friday 3:15 PM - Paul Rayner

This presentation explores the nature of motivation and the place of metrics and measurement in software development, and how lean software development principles and practices shed light on motivation and metrics and how they can be used to support deep organizational improvement.

Watch Video Preview >

Cassandra: Radical NoSQL Scalability

Friday 3:15 PM - Tim Berglund

Want to go deep on a popular NoSQL database? Cassandra is a scalable, highly available, column-oriented data store in use at Netflix, Twitter, Reddit, Rackspace, and other web-scale operations. It offers a compelling combination of a rich data model, a robust deployment track record, and a sound architecture, making it a good choice of NoSQL databases to study first.

Watch Video Preview >

Programming with HTML 5

Friday 5:00 PM - Venkat Subramaniam

Developing a rich user interface for web applications is both exciting and challenging. HTML 5 has closed the gaps and once again brought new vibe into programming the web tier. Come to this session to learn how you can make use of HTML 5 to create stellar applications.

Watch Video Preview >

Build Your Own Technology Radar

Friday 5:00 PM - Neal Ford

A Technology Radar is a tool that forces you to organize and think about near term future technology decisions, both for you and your company.

Watch Video Preview >

Database Refactoring Workshop

Friday 5:00 PM - Tim Berglund

Take one ugly legacy schema, a toolbox full of simple database refactorings, and a world-class schema refactoring tool, and you've got 90 minutes of workshop that will equip you to bring a culture of database responsibility to your team.

Watch Video Preview >

Domain Modeling Using Domain-Driven Design (DDD)

Friday 5:00 PM - Paul Rayner

This presentation seeks to provide a solid introduction to the fundamentals of DDD. Learn why modeling a complex business domain in software is so advantageous to your business and ways in which your team can go about delivering software models to give your business a competitive edge.

Watch Video Preview >

Build Lifecycle Craftsmanship Tools

Saturday 9:00 AM - Matthew McCullough

You've heard a bit about Git, Gradle, Jenkins, and Sonar, but are you putting them to use? Are you maximizing what they can offer in terms of standardized project models, faster incremental compiles, automated commit-triggered builds, and rapid source code analysis? In this intense presentation, live demonstrations will be given for all of the latest versions of the aforementioned tools and what they have to offer a highly proficient Java developer.

Watch Video Preview >

Programming with Actors

Saturday 9:00 AM - Venkat Subramaniam

Actor based concurrency was popularized by languages like Erlang and Scala. This model of programming provides isolated mutability (as opposed to shared mutability) and easy way implement coordinating processes or tasks. Actors can be local to a JVM, or distributed across VMs and machines. In this presentation we will learn how to use Akka Actors to design and implement distributed concurrent Java applications.

Watch Video Preview >

4 Practical Uses for Domain Specific Languages

Saturday 9:00 AM - Neal Ford

Domain Specific Langauges seems like a cool idea, but where's the payoff? This talk provides an overview of how to build both internal and external DSLs (including the state of the art tools), stopping along the way to show how this is practical to your day job.

Watch Video Preview >

Strategic Design Using DDD

Saturday 9:00 AM - Paul Rayner

Not every part of a software system will be well-designed. How do you know where to put the time and effort to refine the design, or refactor existing code? Learn how strategic Domain-Driven Design (DDD) patterns can show you how to know which parts of your system matter most to your business and how to focus your team's design efforts most effectively.

Watch Video Preview >

Sonar Code Metrics Workshop (Bring a Laptop)

Saturday 11:00 AM - Matthew McCullough

You're serious about improving the quality of your code base, but with 10,000 lines of code, where do you start and how do you ensure the greatest ROI for the re-work your team members will perform?

Sonar is an open source tool that brings together the best of breed static and dynamic analysis of Java projects. The result is a unified view of problematic areas of your code on a time-line basis, allowing the team to attack the problems with the best ROI, and maintain a more watchful eye for positive and risky trends in the codebase in the future.

Watch Video Preview >

Taming Shared Mutability with Software Transactional Memory

Saturday 11:00 AM - Venkat Subramaniam

Mutability is something we're quite used to in Java. Sharing is a good thing. However, shared mutability is pure devil's work. If we remove shared mutability, all the problems of concurrent go away. In practice, however, it's hard to completely get rid of shared mutability. This is where STM comes in with managed shared mutable variables. In this presentation we will take an example driven approach to dive deep into STM, look at what it has to offer, explore different implementations, and how we can design concurrent applications without any explicit locks.

Watch Video Preview >

Lightweight Web Apps with Ratpack

Saturday 11:00 AM - Tim Berglund

Ratpack is a hyper-lightweight, Groovy-based web framework for developing and deploying simple apps in a hurry. Like its high-achieving cousin Gaelyk, it provides Groovy developers with a way to create web apps without days of iteration zero setup time.

Watch Video Preview >

Using DDD Patterns for Supple Design

Saturday 11:00 AM - Paul Rayner

Come on a guided tour of how applying Domain-Driven Design (DDD) building block patterns can make your code cleaner, more expressive, and more amenable to change. We cover examples of DDD patterns such as entities, value objects, closure of operations and side-effect-free functions. We will focus particularly on how implementing value objects can lead to more supple design.

Watch Video Preview >

Effective Spring

Saturday 1:30 PM - Craig Walls

After almost a decade and several significant releases, Spring has gone a long way from challenging the then-current Java standards to becoming the de facto enterprise standard itself. Although the Spring programming model continues to evolve, it still maintains backward compatibility with many of its earlier features and paradigms. Consequently, there's often more than one way to do anything in Spring. How do you know which way is the right way?

Watch Video Preview >

Git Workshop (Bring A Laptop)

Saturday 1:30 PM - Matthew McCullough

Git is a version control system you may have been hearing a bit about lately. But simply hearing more about it may not be enough to convince you of its value. Getting hands on experience is what really counts. In this workshop, you'll bring your Windows, Mac or Linux laptop and walk through downloading, installing, and using Git in a collaborative fashion.

Watch Video Preview >

Decision Making in Software Teams

Saturday 1:30 PM - Tim Berglund

Alistair Cockburn has described software development as a game in which we choose among three moves: invent, decide, and communicate. Most of our time at No Fluff is spent learning how to be better at inventing. Beyond that, we understand the importance of good communication, and take steps to improve in that capacity. Rarely, however, do we acknowledge the role of decision making in the life of software teams, what can cause it to go wrong, and how to improve it.

Watch Video Preview >

Effective Java Reloaded

Saturday 1:30 PM - Matt Stine

Even with the recent explosion in alternative languages for the JVM, the vast majority of us are still writing code in "Java the language" in order to put bread on the table. Proper craftsmanship demands that we write the best Java code that we can possibly write. Fortunately we have a guide in Joshua Bloch's Effective Java.

Watch Video Preview >

Enterprise Security API library from OWASP

Saturday 1:30 PM - Ken Sipe

When it comes to cross cutting software concerns, we expect to have or build a common framework or utility to solve this problem. This concept is represented well in the Java world with the loj4j framework, which abstracts the concern of logging, where it logs and the management of logging. The one cross cutting software concern which seems for most applications to be piecemeal is that of security. Security concerns include certification generation, SSL, protection from SQL Injection, protection from XSS, user authorization and authentication. Each of these separate concerns tend to have there own standards and libraries and leaves it as an exercise for the development team to cobble together a solution which includes multiple needs.... until now... Enterprise Security API library from OWASP.

Watch Video Preview >

Developing Next-Generation Applications

Saturday 3:15 PM - Craig Walls

For a long while, we've built applications pretty much the same way. Regardless of the frameworks (or even languages and platforms) employed, we've packaged up our web application, deployed it to a server somewhere, and asked our users to point their web browser at it.

But now we're seeing a shift in not only how applications are deployed, but also in how they're consumed. The cost and hassle of setting up dedicated servers is driving more applications into the cloud. Meanwhile, our users are on-the-go more than ever, consuming applications from their mobile devices more often than a traditional desktop browser. And even the desktop user is expecting a more interactive experience than is offered by simple page-based HTML sites.

With this shift comes new programming models and frameworks. It also involves a shift in how we think about our application design. Standing up a simple HTML-based application is no longer good enough.

Watch Video Preview >

Gradle Workshop (Bring a Laptop)

Saturday 3:15 PM - Matthew McCullough

Gradle. Another build tool? Come on! But before you say that, take a look at the one you are already using.

Whether your current tool is Make, Rake, Ant, or Maven, Gradle has a lot to offer. It leverages a strong object model like Maven, but a mutable, not predetermined one. Gradle relies on a directed acyclic graph (DAG) lifecycle like Maven, but one that can be customized. Gradle offers imperative build scripting when you need it (like Ant), but declarative build approaches by default (like Maven). In short, Gradle believes that conventions are great -- as long as they are headed in the same direction you need to go. When you need to customize something in your build, your build tool should facilitate that with a smile, not a slap in the face. And customizations should be in a low-ceremony language like Groovy. Is all this too much to ask?

Watch Video Preview >

Getting Agile Right!

Saturday 3:15 PM - Ken Sipe

Whether you are just getting started, or you’ve made an attempt and well… it could be better… a lot better, this session is for you. Ken has been working on Agile projects as a coach and mentor for a number of years. Come discover the common reasons teams fail to get it right. Bring your own challenges and lets discuss. This is set to be an engaging and illuminating discussion.

Watch Video Preview >

Resource-Oriented Architectures : REST I

Saturday 3:15 PM - Brian Sletten

The first in a series of talks that are part of an arc covering next-generation information-oriented, flexible, scalable architectures. The ideas presented apply to both external and internal-facing systems.

Watch Video Preview >

Stop, DevOp, and Roll Out Software

Sunday 9:00 AM - Matt Stine

What is the DevOps movement? It a nutshell, it is the idea that the days of silos are over. Development, QA, and operations can no longer be thought of as separate warring divisons with their own "turfs." Instead, we must focus on the fact that we are all part of a single value stream for the customer. By collaboration and shared expertise, we can find real overlaps between our previously segregated areas of expertise and optimize that value stream.

Watch Video Preview >

Resource-Oriented Architectures : REST II

Sunday 9:00 AM - Brian Sletten

The second in a series of talks that are part of an arc covering next-generation information-oriented, flexible, scalable architectures. The ideas presented apply to both external and internal-facing systems.

Watch Video Preview >

JavaScript Libraries You Aren't Using...Yet

Sunday 9:00 AM - Nathaniel Schutta

You're all over jQuery - you write plugins in your sleep - and before that, you were a Prototype ninja. Your team treats JavaScript like a first class citizen, you've even written more tests than Kent Beck. Is that all there is in the land of the JavaScript developer? Believe it or not, the JavaScript party hasn't stopped. What other libraries are out there? What do they offer? This talk will survey the field of modern JavaScript libraries getting you up to speed on what's new. We'll dive in just deep enough to whet your appetite on a wide variety of libraries such as Backbone, Underscore, Zepto and more.

Watch Video Preview >

Securing the Modern Web with OAuth

Sunday 9:00 AM - Craig Walls

In this session, we'll look at OAuth, focusing on OAuth 2, from the perspective of an application that consumes an OAuth-secured API as well as see how to use OAuth to secure your own APIs.

Watch Video Preview >

MongoDB: Scaling Web Applications

Sunday 9:00 AM - Ken Sipe

Google “MongoDB is Web Scale” and prepare to laugh your tail off. With such satire, it easy to pass off MongoDB as a passing joke… but that would be a mistake. The humor is in the fact there seems to be no end to those who parrot the MongoDB benefits without a clue. This session is about getting a clue.

Watch Video Preview >

Cooking Up Infrastructure with Chef

Sunday 11:00 AM - Matt Stine

Chef is a community-developed platform for automated provisioning, configuration, and integration of software infrastructure. It currently boasts 190+ individuals and 40+ companies (including parent company OpsCode) as contributors, and companies like EngineYard, ElectronicArts, GoTime, and Rhapsody as adopters.

Chef achieves fully automated infrastructure via three primary disciplines:

  • Automated provisioning of bare metal, virtualized, and cloud environments
  • Configuration of servers via roles ("webserver", "appserver", "loadbalancer") and recipes, which are declarative descriptions of resource (e.g. Apache, MySQL, Hadoop) configurations written in a Ruby DSL
  • Systems integration via dynamic lookup and discovery
Watch Video Preview >

Beyond jQuery

Sunday 11:00 AM - Nathaniel Schutta

It's been ages since you copied random JavaScript off a nameless webpage and your JavaScript is every bit as elegant as any server side code. You know the ins and outs of jQuery and you've even built a plugin or three...but is that it? How do we build rich web applications without resorting to heavy weight proprietary components? How do we leverage HTML5 and everything it brings to the table? How do we craft elegant user experiences that integrate fully with the RESTful web services that are all the rage on the backend? How do we build apps that are at home on a 3.5 inch phone as they are on the 15 inch notebook? This talk goes beyond jQuery to explore new libraries like Backbone are bringing even more to the front end developer's toolbox.

Watch Video Preview >

Groovy Power Tools

Sunday 11:00 AM - Ken Sipe

Groovy has been around for some time and is generally recognized as a highly productive object-oriented language with a tight association with Java. Groovy seems to be going through a second wave of popularity with a more diverse repertoire of benefits, including building, deploying and testing, in addition to rapid web development. The fastest growth of productivity tools are all powered by Groovy. Discover the Groovy Truth!

Watch Video Preview >

Building Social Web Clients

Sunday 11:00 AM - Craig Walls

You see them everywhere: "Like" buttons, "Tweet" buttons, and now there are "+1" buttons. The social networks have extended their reach beyond their own websites and into almost every web site you visit. But did you know that these simple little buttons are just the tip of the iceberg when it comes to adding social features to your website?

Watch Video Preview >

Resource-Oriented Architectures : REST III

Sunday 11:00 AM - Brian Sletten

The third in a series of talks that are part of an arc covering next-generation information-oriented, flexible, scalable architectures. The ideas presented apply to both external and internal-facing systems.

Watch Video Preview >

Master of Puppet

Sunday 2:15 PM - Matt Stine

Puppet is a powerful framework for the automation of tasks typically performed by system administrators as part of software infrastructure provisioning and maintenance. Puppet adoption is rapidly increasing, boasting use by companies such as Google, RedHat, Constant Contact, Zynga, and Shopzilla.

Puppet is composed of three principle components:

  • a declarative language for expressing system configuration,
  • a client and server for distributing it,
  • and a library for realizing the configuration
Watch Video Preview >

Designing for Mobile

Sunday 2:15 PM - Nathaniel Schutta

The word just came down from the VP - you need a mobile app and you need it yesterday. Wait, you've never built a mobile app...it's pretty much the same thing as you've built before just smaller right? Wrong. The mobile experience is different and far less forgiving. How do you design an application for touch? How does that differ from a mouse? Should you build a mobile app or a mobile web site? This talk will get you started on designing for a new, and exciting, platform. Whether that means iPhone, Android, Windows Phone or something else, you need a plan, this talk will help.

Watch Video Preview >

Securing Spring

Sunday 2:15 PM - Craig Walls

In this session, I'll show you how to secure your Spring application with Spring Security 3.0. You'll see hot to declare both request-oriented and method-oriented security constraints. And you'll see how SpEL can make simple work of expressing complex security rules.

Watch Video Preview >

Spock - Unit Test and Prosper

Sunday 2:15 PM - Ken Sipe

Spock is a groovy based testing framework that leverages all the "best practices" of the last several years taking advantage of many of the development experience of the industry. So combine Junit, BDD, RSpec, Groovy and Vulcans... and you get Spock!

This is a significant advancement in the world of testing.

Watch Video Preview >

Resource-Oriented Architectures : RDF/SPARQL

Sunday 2:15 PM - Brian Sletten

The fourth of a series of talks that are part of an arc covering next-generation information-oriented, flexible, scalable architectures. The ideas presented apply to both external and internal-facing systems.

Watch Video Preview >

The Mobile App Smackdown: Native Apps vs. The Mobile Web

Sunday 4:00 PM - Nathaniel Schutta

Mobile is the next big thing and your company needs to there. But what does there actually entail? Should you build a native app? On which platforms? Do you have the skills for that? What about the web? Can you deliver an awesome experience using nothing but a mobile web browser? This talk will help you navigate these treacherous waters. We'll discuss the pros and cons of the various approaches and give you a framework for choosing.

Watch Video Preview >

Resource-Oriented Architectures : RDFa

Sunday 4:00 PM - Brian Sletten

The fifth in a series of talks that are part of an arc covering next-generation information-oriented, flexible, scalable architectures. The ideas presented apply to both external and internal-facing systems.

Watch Video Preview >

Complexity of Complexity

Sunday 4:00 PM - Ken Sipe

Of all the non-functional requirements of software development, complexity receives the least attention and seems to be the most important from a long term standard point. This talk will look at some of forces that drive complexity at the code level and at a system level and their impact. We will discuss what causes us to over look complexity, how our perception of it changes over time and what we can do about it?

Watch Video Preview >

Spring Data

Sunday 4:00 PM - Craig Walls

This session starts with a high-level look at all that the Spring Data project has to offer. Then we'll dive deeper into a few select Spring Data modules, including Spring Data Neo4j, Spring Data MongoDB, Spring Data Redis, Spring Data JPA, and Spring Data JDBC Extensions

Watch Video Preview >

Executable Specifications: Automating Your Requirements Document with Geb and Spock

Sunday 4:00 PM - Matt Stine

One of the hallmarks of lean software development is the elimination of waste. Several of the key wastes in software development revolve around incomplete, incorrect, or obsolete documentation, especially documentation of requirements. One effective means of ensuring that your requirements documentation is complete, correct, and up-to-date is to make it executable. That sounds nice, but how do we get it done, especially in the world of modern, cross-browser web applications?

Watch Video Preview >