Twin Cities Software Symposium Hilton Minneapolis/Bloomington Hotel March 4 - 6, 2011

Fri, Mar. 04, 2011 Salon A Salon B Salon C Washington Jefferson 12:00 - 1:00 PM REGISTRATION 1:00 - 1:15 PM WELCOME 1:15 - 2:45 PM NoSQL Smackdown! What's new in Spring Agile Engineering Practices Concurrency without Busy Developer's Tim Berglund Craig Walls Neal Ford pain in pure Java Guide to Java 7 Venkat Subramaniam Ted Neward 2:45 - 3:15 PM BREAK 3:15 - 4:45 PM Pragmatic Architecture Complexity Theory and 4 Practical Uses for Domain Collections for Concurrency Cascading through Hadoop: A Ted Neward Software Development Specific Languages Venkat Subramaniam DSL for Simpler MapReduce Tim Berglund Neal Ford Matthew McCullough 4:45 - 5:00 PM BREAK 5:00 - 6:30 PM Introducing Spring Roo: Sonar: Code Quality Build Your Own Technology Cassandra: Radical Architectural Kata Workshop From Zero to Working Spring Metrics Made Easy Radar Workshop for Architects NoSQL Scalability Ted Neward Application in Record Time Matthew McCullough Neal Ford Tim Berglund Craig Walls 6:30 - 7:15 PM DINNER 7:15 - 8:00 PM Keynote: by Neal Ford Twin Cities Software Symposium Hilton Minneapolis/Bloomington Hotel March 4 - 6, 2011

Sat, Mar. 05, 2011 Salon A Salon B Salon C Washington Jefferson 8:00 - 9:00 AM BREAKFAST 9:00 - 10:30 AM Programming HTML5 Testing the Entire Stack Integrating JVM Languages Cryptography on the Modular Java: Intro to OSGi Tim Berglund Neal Ford Venkat Subramaniam JVM: Boot Camp with Spring-DM, OSGi Matthew McCullough Blueprints, and Gradle Craig Walls 10:30 - 11:00 AM BREAK 11:00 - 12:30 PM Decision Making Developing Social- State of Scala Simpler Cryptography Busy Java Developer's in Software Teams Ready Web Applications Venkat Subramaniam with 3 JVM Libraries Guide to Guava Tim Berglund Craig Walls Matthew McCullough Ted Neward 12:30 - 1:30 PM LUNCH 1:30 - 3:00 PM The Busy Java Agile.next Git Going with Distributed Gaelyk: Lightweight Groovy Testing with Easyb Developer's Guide to Akka Neal Ford Version Control on the Venkat Subramaniam Ted Neward Matthew McCullough Tim Berglund 3:00 - 3:15 PM BREAK 3:15 - 4:45 PM Busy Java Developer's HTML 5 Overview Git Workshop Improve Your Java with Groovy Rediscovering Apprenticeship Guide to Android: Basics Brian Sletten Matthew McCullough Kenneth Kousen in the 21st Century Ted Neward Dave Klein 4:45 - 5:45 PM BOFs Twin Cities Software Symposium Hilton Minneapolis/Bloomington Hotel March 4 - 6, 2011

Sun, Mar. 06, 2011 Salon A Salon B Salon C Washington Jefferson 8:00 - 9:00 AM BREAKFAST 9:00 - 10:30 AM Resource-Oriented Spock: Logical Testing for jQuery: Ajax Made Easy Intro to Clustering with Terracotta The Seven Wastes of Architectures : REST I Enterprise Applications Nathaniel Schutta Pratik Patel Software Development Brian Sletten Kenneth Kousen Matt Stine 10:30 - 11:00 AM MORNING BREAK 11:00 - 12:30 PM Resource-Oriented The Gradle Will Rock Going Mobile with jQuery From Zero-to- Executable Specifications: Architectures : REST II Kenneth Kousen Nathaniel Schutta Hero with EHCache Automating Your Requirements Brian Sletten Pratik Patel Document with Geb and Spock Matt Stine 12:30 - 1:15 PM LUNCH 1:15 - 2:15 PM EXPERT PANEL DISCUSSION 2:15 - 3:45 PM Code Craft Automated UAT Shootout: Busy Java Developer's : Bringing Radical Enterprise Integration Nathaniel Schutta High-Noon w/ Selenium, Guide to Multi-Paradigm Design Productivity to the JVM Part I with Apache Camel WebDriver, Watir, and HtmlUnit Ted Neward Dave Klein and Spring Integration Matt Stine Pratik Patel 3:45 - 4:00 PM BREAK 4:00 - 5:30 PM Busy Java Developer's C is for Continuous: Going Usability 101 Grails: Bringing Radical Easy Mobile Development Guide to Games Beyond Continuous Integration Nathaniel Schutta Productivity to the JVM Part II Workshop: Mobile Ted Neward Matt Stine Dave Klein GUI Frameworks Pratik Patel Twin Cities Software Symposium -Session Schedule- (event schedule as of October 14, 2020) Friday, Mar. 4 12:00 - 1:00 PM : REGISTRATION 1:00 - 1:15 PM : WELCOME 1:15 - 2:45 PM - Sessions Session #1 @ Salon A : NoSQL Smackdown! by Tim Berglund You've read that the relational model is old and busted, and there are newer, faster, web-scale ways to store your application's data. You've heard that NoSQL databases are the future! Well, what is all this NoSQL stuff about? Is it time to ditch Oracle, MySQL, and SQL Server in favor of the new guard? To be able to make that call, there's a lot you'll have to learn.

Session #2 @ Salon B : What's new in Spring by Craig Walls In this session, I'll lead a guided tour through the latest that Spring has to offer. Whether you're a Spring veteran or a Spring newbie, there will be something new for nearly everyone.

Session #3 @ Salon C : Agile Engineering Practices by Neal Ford Most of the time when people talk about agile software development, they talk about project and planning practices and never mention actual development practices. This talk delves into best development practices for agile projects, covering all of its aspects.

Session #4 @ Washington : Concurrency without pain in pure Java by Venkat Subramaniam Programming concurrency has turned into a herculean task. I call the traditional approach as the synchronized and suffer model. Fortunately, there are other approaches to concurrency and you can reach out to those directly from your Java code.

Session #5 @ Jefferson : Busy Java Developer's Guide to Java 7 by Ted Neward With the forthcoming release of Java7, a number of things come to fruition, both in the Java language and in the libraries, and it's important for Java developers to know what those features are, and how they change the game of writing Java code--or not.

2:45 - 3:15 PM : BREAK 3:15 - 4:45 PM - Sessions Session #6 @ Salon A : Pragmatic Architecture by Ted Neward Building an application is not the straightforward exercise it used to be. Decisions regarding which architectural approaches to take (n-tier, client/server), which user interface approaches to take (Smart/rich client, thin client, Ajax), even how to communicate between processes (Web services, distributed objects, REST)... it's enough to drive the most dedicated designer nuts. This talk discusses the goals of an application architecture and why developers should concern themselves with architecture in the first place. Then, it dives into the meat of the various architectural considerations available; the pros and cons of JavaWebStart, ClickOnce, SWT, Swing, JavaFX, GWT, Ajax, RMI, JAX-WS, , JMS, MSMQ, transactional processing, and more.

Session #7 @ Salon B : Complexity Theory and Software Development by Tim Berglund Some systems are too large to be understood entirely by any one human mind. They are composed of a diverse array of individual components capable of interacting with each other and adapting to a changing environment. As systems, they produce behavior that differs in kind from the behavior of their components. Complexity Theory is an emerging discipline that seeks to describe such phenomena previously encountered in biology, sociology, economics, and other disciplines.

Session #8 @ Salon C : 4 Practical Uses for Domain Specific Languages by 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.

Session #9 @ Washington : Collections for Concurrency by Venkat Subramaniam Traditional collections on the Java platform focused on providing thread-safety at the expense of performance or scalability. More modern data structures strive to provide performance without compromising thread-safety. Some of them require you to adopt to a different semantics or programming model. In this presentation we will explore some data structures that can help reach both thread- safety and reasonable performance.

Session #10 @ Jefferson : Cascading through Hadoop: A DSL for Simpler MapReduce by Matthew McCullough Hadoop is a MapReduce framework that has literally sprung into the vernacular of "big data" developers everywhere. But coding to the raw Hadoop APIs can be a real chore. Data analysts can express what they want in more English-like vocabularies, but it seems the Hadoop APIs require us to be the translator to a less comprehensible functional and data-centric DSL. The Cascading framework gives developers a convenient higher level abstraction for querying and scheduling complex jobs on a Hadoop cluster. can think more holistically about the questions being asked of the data and the flow that such data will take without concern for the minutia. We'll Twin Cities Software Symposium -Session Schedule- (event schedule as of October 14, 2020) explore how to set up, code to, and leverage the Cascading API on top of a Hadoop sample or production cluster for a more effective way to code MapReduce applications all while being able to think in a more natural (less than fully MapReduce) way.

4:45 - 5:00 PM : BREAK 5:00 - 6:30 PM - Sessions Session #11 @ Salon A : Introducing Spring Roo: From Zero to Working Spring Application in Record Time by Craig Walls In this example-driven session we'll see how to swiftly develop Spring applications using Spring Roo. We'll start with an empty directory and quickly work our way up to a fully functioning web application. You'll see how Roo handles a lot of heavy-lifting that you'd normally have to do yourself when working with Spring. And we'll stop at a few scenic points along the way to see how Roo accomplishes some of its magic.

Session #12 @ Salon B : Sonar: Code Quality Metrics Made Easy by 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.

Session #13 @ Salon C : Build Your Own Technology Radar Workshop for Architects by 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. This talk discusses using the radar for personal breadth development, architectural guidance, and governance.

Session #14 @ Washington : Cassandra: Radical NoSQL Scalability by 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.

Session #15 @ Jefferson : Architectural Kata Workshop by Ted Neward Fred Brooks said, "How do we get great designers? Great designers design, of course." So how do we get great architects? Great architects architect. But architecting a software system is a rare opportunity for the non-architect. The kata is an ancient tradition, born of the martial arts, designed to give the student the opportunity to practice more than basics in a semi-realistic way. The coding kata, created by Dave Thomas, is an opportunity for the developer to try a language or tool to solve a problem slightly more complex than "Hello world". The architectural kata, like the coding kata, is an opportunity for the student-architect to practice architecting a software system.

6:30 - 7:15 PM : DINNER Keynote: Keynote: Abstraction Distractions - Neal Ford

Saturday, Mar. 5 8:00 - 9:00 AM : BREAKFAST 9:00 - 10:30 AM - Sessions Session #16 @ Salon A : Programming HTML5 by Tim Berglund HTML5 wants to make some major changes to the way we deliver media over the web and the way we mark up our pages, but it also gives us a bunch of new stuff in the browser's programming model. To ignore these new JavaScript APIs is to give up on a richer browser UI and a lot of fun.

Session #17 @ Salon B : Testing the Entire Stack by Neal Ford This talk covers testing the entire stack: unit, integration, functional, behavior-driven, databases, user acceptance, mocking & stubbing, and other topics and strategies.

Session #18 @ Salon C : Integrating JVM Languages by Venkat Subramaniam Quite a few languages have raised to prominence on the JVM. A frequently asked question is "How do I integrate my Java code with these?" This session answers that very specific question. Twin Cities Software Symposium -Session Schedule- (event schedule as of October 14, 2020) Session #19 @ Washington : Cryptography on the JVM: Boot Camp by Matthew McCullough Does your application transmit customer information? Are there fields of sensitive customer data stored in your DB? Can your application be used on insecure networks? If so, you need a working knowledge of encryption and how to leverage Open Source APIs and libraries to make securing your data as easy as possible. Cryptography is quickly becoming a developer's new frontier of responsibility in many data-centric applications.

Session #20 @ Jefferson : Modular Java: Intro to OSGi with Spring-DM, OSGi Blueprints, and Gradle by Craig Walls The secret weapon for attacking complexity in any project is to break it down into smaller, cohesive, and more easily digestible pieces. Unfortunately, Java lacks critical ingredients necessary to achieve true modularity.

10:30 - 11:00 AM : BREAK 11:00 - 12:30 PM - Sessions Session #21 @ Salon A : Decision Making in Software Teams by 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.

Session #22 @ Salon B : Developing Social-Ready Web Applications by Craig Walls Businesses are increasingly recognizing the value of connecting with their customers on a more personal level. Companies can utilize social networking to transition from "Big Faceless Corporation" to "Friend" by taking their wares to the online communities where their customers are. In this age of social media, those communities are found at social network sites such as Facebook, Twitter, and LinkedIn. In this session, you'll learn how to build applications that interact with the various social networks. We'll also look at Spring Social, a new feature in the Spring portfolio that enables integration with social networks in Spring-based applications.

Session #23 @ Salon C : State of Scala by Venkat Subramaniam Scala, the hybrid functional, fully object-oriented language has evolved over the years. In this presentation we will talk about what has changed in this language in the recent release and look at some cool things you can do with this very powerful language.

Session #24 @ Washington : Simpler Cryptography with 3 JVM Libraries by Matthew McCullough Cryptography at first seems like a daunting topic. But after a basic intro and the leverage of the Java Cryptography Extension (JCE), it seems downright feasible to add encryption and decryption capabilities to your application. Developers weren't satisfied with just the JCE and its plug-in concepts though. Over the last few years, framework architects have made strides in either wrapping or re-writing the approachable JCE in more convenient APIs and fluent interfaces that make effective and accurate crypto down right simple. Explore three of these libraries -- Jasypt, BouncyCastle and KeyCzar -- and how they can be leveraged to make your next Java cryptography and data security effort a simple exercise and not a tribulation.

Session #25 @ Jefferson : Busy Java Developer's Guide to Guava by Ted Neward "The Google Guava project contains a host of new features/classes for use by the Java . Intended as a drop-in supplement for the standard JDK APIs, Guava provides features like immutable and forwarding collections, some concurrency utilities, more support for primitives, and so on.

12:30 - 1:30 PM : LUNCH 1:30 - 3:00 PM - Sessions Session #26 @ Salon A : The Busy Java Developer's Guide to Akka by Ted Neward With the rise of multi-core processors, and their growing ubiquity (on client machines, to say nothing of the server machines on which Java applications most frequently execute), the need to "program concurrently" has risen from "nice-to-have" to "mandatory" requirement, and unfortunately the traditional threading-and-locking model is just too complicated for most Java developers--even the brightest of the lot--to keep track of with any degree of reliability. As a result, numerous new solutions are emerging, each of them with their own strengths and weaknesses, leaving the Java developer in a bit of a quandary as to which to examine.

Session #27 @ Salon B : Agile.next by Neal Ford Agile has matured to the point of mainstream success. Even large companies have discovered that it helps them build better quality software faster. But the agile practices that are mainstream today have been around for a long time. What is the next wave of innovation in the Agile world going to bring?

Session #28 @ Salon C : Git Going with Distributed Version Control by Matthew McCullough Many development shops have made the leap from RCS, Perforce, ClearCase, PVCS, CVS, BitKeeper or SourceSafe to the modern Subversion (SVN) version control system. But why not take the next massive stride in productivity and get on board with Git, a distributed version control system (DVCS). Jump ahead of the masses staying on Subversion, and increase your team's productivity, Twin Cities Software Symposium -Session Schedule- (event schedule as of October 14, 2020) debugging effectiveness, flexibility in cutting releases, and repository redundancy at $0 cost. Understand how distributed version control systems are game-changers and pick up the lingo that will become standard in the next few years.

Session #29 @ Washington : Gaelyk: Lightweight Groovy on the Google App Engine by Tim Berglund You love Groovy and you're a believer in . For a larger project you might choose Grails and hosting on Amazon EC2, but what if you want to take advantage of the nearly massless deployments of a cloud provider like the Google App Engine? You could make Grails work, but it's not always the best fit. Enter Gaelyk.

Session #30 @ Jefferson : Testing with Easyb by Venkat Subramaniam Automated functional testing is very critical to ensure the code we write is relevant and continues to provide direct business value as it evolves. Business analyst and customers can help develop these tests and programmers can help maintain these. Easyb is a great tool for creating such automated tests.

3:00 - 3:15 PM : BREAK 3:15 - 4:45 PM - Sessions Session #31 @ Salon A : Busy Java Developer's Guide to Android: Basics by Ted Neward Android is a new mobile development platform, based on the Java language and tool set, designed to allow developers to get up to speed writing mobile code on any of a number of handsets quickly. In this presentation, we'll go over the basic setup of the Android toolchain, how to deploy to a device, and basic constructs in the Android world.

Session #32 @ Salon B : HTML 5 Overview by Brian Sletten People are confused about the status of HTML 5. Is it ready? Is it not? What is part of the spec and what isn't? We'll talk about the situation in the "HTML 5 and the Kitchen Sink" discussion, but as always, the proof is in the pudding. We will introduce the most exciting new features of HTML 5 and its related technologies and build examples that use them.

Session #33 @ Salon C : Git Workshop by 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.

Session #34 @ Washington : Improve Your Java with Groovy by Kenneth Kousen Groovy was never intended to replace Java. Instead, it expands Java capabilities and makes developers' lives easier. In this presentation, we'll survey many ways to make your Java systems easier by adding Groovy.

Session #35 @ Jefferson : Rediscovering Apprenticeship in the 21st Century by Dave Klein We've all heard about the lack of qualified software developers coming out of the colleges and universities these days. Perhaps the old adage still applies: "If you want something done right, do it yourself." Perhaps apprenticeship could be the way to build your team of quality developers.

4:45 - 5:45 PM : BOFs

Sunday, Mar. 6 8:00 - 9:00 AM : BREAKFAST 9:00 - 10:30 AM - Sessions Session #36 @ Salon A : Resource-Oriented Architectures : REST I by 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.

Session #37 @ Salon B : Spock: Logical Testing for Enterprise Applications by Kenneth Kousen The Spock framework brings simple, elegant testing to Java and Groovy projects. It integrates cleanly with JUnit, so Spock tests can be integrated as part of an existing test suite. Spock also includes an embedded mocking framework that can be used right away.

Session #38 @ Salon C : jQuery: Ajax Made Easy by Nathaniel Schutta Sure, Ajax might not be the hardest thing you'll have to do on your current project, but that doesn't mean we can't use a little help here and there. While there are a plethora of excellent choices in the Ajax library space, jQuery is fast becoming one of the most popular. In this talk, we'll see why. In addition to it's outstanding support for CSS selectors, dirt simple DOM manipulation, event handling and Twin Cities Software Symposium -Session Schedule- (event schedule as of October 14, 2020) animations, jQuery also supports a rich ecosystem of plugins that provide an abundance of top notch widgets. Using various examples, this talk will help you understand what jQuery can do so you can see if it's right for your next project.

Session #39 @ Washington : Intro to Clustering with Terracotta by Pratik Patel Terracotta is an open-source cluster framework. In this session, attendees will begin by learning about Terracotta architecture and setup. We'll then examine the Terracotta Toolkit in detail with live code examples. Attendees will learn about features in the Terracotta toolkit: barriers, locking, clustered collections, and more. We'll discuss the usage of these features and how to best utilize them across a cluster of JVM's / app servers. We'll also talk about how to setup for high-availability.

Session #40 @ Jefferson : The Seven Wastes of Software Development by Matt Stine One of the first principles of lean software development is the elimination of waste. Shigeo Shingo identified seven types of manufacturing waste in his "A Study of the Toyota Production System." Later, the Poppendieck's translated these to seven wastes of software development.

10:30 - 11:00 AM : MORNING BREAK 11:00 - 12:30 PM - Sessions Session #41 @ Salon A : Resource-Oriented Architectures : REST II by 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.

Session #42 @ Salon B : The Gradle Will Rock by Kenneth Kousen Build processes are a pain point in most organizations. Ant is mature but very low level, Maven is powerful but hard to customize, and so on. The Gradle project brings the power and flexibility of Groovy to build files and processes.

Session #43 @ Salon C : Going Mobile with jQuery by Nathaniel Schutta The word just came down from the VP - you need a mobile app and you need it yesterday. It needs to be polished and have that design stuff too. Oh and it needs to be on all the major platforms in time for the big marketing push next month. After a moment of panic, you wonder if it's too late to become a plumber but don't worry, there's hope! More and more developers are falling in love with the "write less do more" library and for good reason; it simplifies the job of today's front end engineer. But did you know jQuery could also help you with your mobile needs as well? That's right, jQuery Mobile is a touch optimized framework designed to provide a common look and feel across a wide variety of today's mot popular platforms. In this session, we'll take a look at all that jQuery Mobile has to offer and we'll convert a native application to an HTML5, jQuery Mobile masterpiece.

Session #44 @ Washington : From Zero-to-Hero with EHCache by Pratik Patel Ehcache is the most popular open source cache framework for the JVM. It is integrated into many open-source packages, such as Grails. First, we'll cover the concept of caching objects and use cases around caching. In this session, we'll get into Ehcache details about architecture, configuration, design, cache types and more. Attendees will learn how to configure Ehcache and we'll discuss the major configuration options. We'll also do some live code demos so attendees can better understand the concepts and features of caching and Ehcache. Of course, we'll also see how it plugs into ORM / JPA tools like .

Session #45 @ Jefferson : Executable Specifications: Automating Your Requirements Document with Geb and Spock by 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?

12:30 - 1:15 PM : LUNCH 1:15 - 2:15 PM : EXPERT PANEL DISCUSSION 2:15 - 3:45 PM - Sessions Session #46 @ Salon A : Code Craft by Nathaniel Schutta Despite what some developers think, we spend a lot more of our time reading code, code that was often written by someone that isn't around anymore. How do we deal with this common scenario without resorting to burning our predecessor in effigy? Better, how can we write code in such a way that our successors will heap effusive praise upon us at the mere mention of our name? During this talk, we'll read actual code discussing ways it could be improved. As we work through real examples, we'll explore the importance of patterns, principles like SOLID and SLAP and essential practices like unit testing and continuous integration. Twin Cities Software Symposium -Session Schedule- (event schedule as of October 14, 2020) Session #47 @ Salon B : Automated UAT Shootout: High-Noon w/ Selenium, WebDriver, Watir, and HtmlUnit by Matt Stine Today's web application developers and testers have a host of options at their disposal for building automated user acceptance tests. This session will be a "shootout" of sorts between several of the popular available frameworks: - Selenium - WebDriver - Watir - HtmlUnit

Session #48 @ Salon C : Busy Java Developer's Guide to Multi-Paradigm Design by Ted Neward The is home to several different languages beyond Java, many of which mix ideas (paradigms) together to create a flexible language. Languages which support these different paradigms can be awkward and hard to understand how to use at first.

Session #49 @ Washington : Grails: Bringing Radical Productivity to the JVM Part I by Dave Klein The goal of this hands-on tutorial is to get started and get productive with Grails. We’ll do this by jumping right in and building an application, from design to deployment.

Session #50 @ Jefferson : Enterprise Integration with Apache Camel and Spring Integration by Pratik Patel Enterprise Integration used to be mundane and tedious - developers had to build all the code by hand and testing was difficult. With the rise of popular Enterprise Integration toolkits such as Apache Camel, this is no longer the case. Apache Camel makes it a breeze to do enterprise integration, and in this session, you'll be introduced to both Enterprise Integration basics as well as implementing them with Apache Camel.

3:45 - 4:00 PM : BREAK 4:00 - 5:30 PM - Sessions Session #51 @ Salon A : Busy Java Developer's Guide to Games by Ted Neward Games? What do games have to do with good business-oriented applications? Turns out, a lot of interesting little tidbits of user- interface, distribution, and emergence, found normally in the games we play, have direct implications on the way enterprise applications can (or should) be built.

Session #52 @ Salon B : C is for Continuous: Going Beyond Continuous Integration by Matt Stine You've got your build automated using Ant/Maven/Gradle and you're building and running your unit test suite every time you check- in. That's easy. In fact, with Jenkins you can do this in under 5 minutes. However, if we want to move beyond "mere" Continuous Integration to Continuous Delivery, there are many other areas in which we need to achieve "push button" automation. This talk will survey many of these areas and tie everything together with an integrated case study at the end.

Session #53 @ Salon C : Usability 101 by Nathaniel Schutta Day in and day out we are subjected to poorly designed applications. From those we experience directly to the time we waste waiting on others who are struggling with systems that seem like they were built to hinder the user. It doesn't have to be like this and many users are waking up and demanding better applications. Are you prepared to deliver? After this workshop, you will be. When you're done, you'll have the tools you need to make sure your application helps your users kick ass!

Session #54 @ Washington : Grails: Bringing Radical Productivity to the JVM Part II by Dave Klein In Part II of this session, we will continue the build out process with the Grails application.

Session #55 @ Jefferson : Easy Mobile Development Workshop: Mobile GUI Frameworks by Pratik Patel Bring your laptop! This is a workshop specifically designed to get you up and running with popular mobile GUI frameworks and build feature-rich application in 90 minutes! Install a good Javascript/HTML editor, Google Chrome, and Safari (or another newer Webkit based web browser) and the latest PhoneGap release. Also install the latest Android SDK. MAKE SURE YOU HAVE DONE THIS BEFORE COMING TO THE WORKSHOP. Of course, you're welcome to come watch as we work through the exercises, or pair up with a new friend. You can also install the latest iOS SDK if you have a Mac and are interested in iPhone/iPad development. There are a number of great Javascript frameworks for creating slick-looking Mobile Web GUI's. In this session, we'll look at some of the popular ones while building a mobile GUI. We'll have a look at JQTouch, Jo, and jQuery Mobile.