Great Lakes Software Symposium

November 12 - 14, 2010 - Chicago, IL


Westin Chicago Northwest
400 Park Boulevard
Itasca, IL   60143
Map »

NOTE: You are viewing details about a past event. We will be back in ChicagoNovember 8 - 10, 2013.
View the event details here ».

Session Schedule

We are committed to hype-free technical training for developers, architects, and technical managers. We offer over 65 sessions in the span of one weekend. Featuring leading industry experts, who share their practical and real-world experiences; we offer intensive speaker interaction time during sessions and breaks.

About Sessions

Our sessions are designed to cover the latest in trends, best practices, and latest developments in Java application development. Each session lasts 90 minutes unless otherwise noted.

Friday - November 12


  Ballroom 3-5 Ballroom 1-2 Gallery Chambers Stanford Marlborough
12:00 - 1:00 PM REGISTRATION
1:00 - 1:15 PM WELCOME
1:15 - 2:45 PM

The Art of Messaging

Mark Richards

What's new in Spring

Craig Walls

Requirements and Estimating

Peter Bell
2:45 - 3:15 PM BREAK
3:15 - 4:45 PM

Enterprise Integration Using Apache Camel

Mark Richards

How to Select a Technology

Peter Bell

Open Source Business Intelligence Workshop

Tim Berglund
4:45 - 5:00 PM BREAK
5:00 - 6:30 PM

Testing the Web Layer

Nathaniel Schutta

Common AntiPatterns and How To Avoid Them

Mark Richards

NoSQL? No Problems

Peter Bell

Architectural Kata Workshop, Part II

Ted Neward

Gaelyk: Lightweight Groovy on the Google App Engine

Tim Berglund
6:30 - 7:15 PM DINNER
7:15 - 8:00 PM Keynote: It could be heaven or hell (being a polyglot programmer) by Venkat Subramaniam

Saturday - November 13


  Ballroom 3-5 Ballroom 1-2 Gallery Chambers Stanford Marlborough
8:00 - 9:00 AM BREAKFAST
9:00 - 10:30 AM

HTML 5 Fact and Fiction

Nathaniel Schutta

The Busy Java Developer's Guide to Collections

Ted Neward

What's Brewing in Java

Venkat Subramaniam

Decision Making in Software Teams

Tim Berglund

Aspect Oriented Programming With Spring AOP

Jeff Scott Brown
10:30 - 11:00 AM BREAK
11:00 - 12:30 PM

Grails - How to Build Enterprise Apps

Jeff Scott Brown

Modular Java: An Introduction to OSGi

Craig Walls

Complexity Theory and Software Development

Tim Berglund

Engineering your DSLs

Peter Bell
12:30 - 1:30 PM LUNCH
1:30 - 3:00 PM

Introducing Spring Roo: From Zero to Working Spring Application in Record Time

Craig Walls

Debugging your Production JVM

Ken Sipe

Busy Java Developer's Guide to Advanced Collections

Ted Neward

Practical Agile Database Development

Tim Berglund

Extending Grails - The Plugin System

Jeff Scott Brown
3:00 - 3:15 PM BREAK
3:15 - 4:45 PM

Agile Velocity

Ken Sipe

Busy Java Developer's Guide to Multi-Paradigm Design

Ted Neward

How to Approach Refactoring

Venkat Subramaniam

GORM Inside And Out

Jeff Scott Brown

Programming Clojure

Aaron Bedra
4:45 - 5:30 PM BOFs & Refactoring Workshop w/Venkat Subramaniam

Sunday - November 14


  Ballroom 3-5 Ballroom 1-2 Gallery Chambers Stanford Marlborough
8:00 - 9:00 AM BREAKFAST
9:00 - 10:30 AM

Domain Driven Design: Building Complex Software

Peter Bell

The Busy Java Developer's Guide to ClassLoaders

Ted Neward

High-Performance Scalability for Enterprise Applications with Enterprise Ehcache

Eric Mizell

Scala Tricks

Venkat Subramaniam

The New Work of management in Agile Organizations

Esther Derby
10:30 - 11:00 AM MORNING BREAK
11:00 - 12:30 PM

Implementing RESTful Web Services

Jeremy Deane

Groovy For Java Programmers

Jeff Scott Brown

Busy Java Developer's Guide to MongoDB

Ted Neward

Enter The Gradle

Ken Sipe

Test Driving Multithreaded Code

Venkat Subramaniam
12:30 - 1:15 PM LUNCH
1:15 - 2:15 PM EXPERT PANEL DISCUSSION
2:15 - 3:45 PM

Architecture: Non-Functional Requirements

Ken Sipe

TDD with Groovy

Jeff Scott Brown

Busy Java Developer's Guide to Android: Basics

Ted Neward

Resource-Oriented Enterprise Service Bus

Jeremy Deane

Tackling Concurrency on the JVM

Venkat Subramaniam
3:45 - 4:00 PM BREAK
4:00 - 5:30 PM

So you want to be an Architect

Ken Sipe

Compile Time and Runtime Metaprogramming With Groovy

Jeff Scott Brown

Busy Java Developer's Guide to Games

Ted Neward

Resource-Oriented Concurrent Processing

Jeremy Deane

Objective-C for Experienced Programmers

Venkat Subramaniam

Requirements and Estimating

close
Peter Bell

By Peter Bell

"What will it cost?" "When will it be done?". Unfortunately, almost a decade after the agile manifesto was written, these are still questions we have to answer on a regular basis.

In this session we'll cover a range of practical techniques for improving your requirements gathering and increasing the accuracy of your project estimates while also setting realistic expectations for your project stakeholders based on practical experience in specifying, quoting and delivering over four hundred applications over the last ten years.

This session covers a wide range of patterns that have been proven to help with doing a better job of capturing requirements, more accurately estimating the likely scope of work and managing stakeholder expectations in advance.

Prerequisite: Previous experience with missing a milestone or blowing an estimated budget!



How to Select a Technology

close
Peter Bell

By Peter Bell

We're covering lots of cool new technologies, but which ones should you adopt? In this presentation we'll look at the technology adoption lifecycle, core vs incidental technologies, the importance of community, the benefits and costs of "cool", how "real options" can manage your risks and a range of other tools and techniques for successfully selecting and adopting new technologies for your enterprise projects.

Rather than generalities we'll focus on specific examples and case studies - from the polaris submarine to enterprise software systems to show how others have successfully selected technologies to better achieve their business objectives.

Prerequisite: A slight confusion about which technologies to prioritize adoption of



NoSQL? No Problems

close
Peter Bell

By Peter Bell

There are a wide range of NoSQL options, most of which solve very different problems. In the first part of this session we'll look beyond the hype to understand some real world use cases where NoSQL options can either replace or enhance a relational solution. You might be surprised at some of the reasons companies have chosen to successfully develop NoSQL based solutions.

In the second part of the session we'll look through a range of the common NoSQL offerings like CouchDB, MongoDB, Redis, Neo, Cassandra, Riak and hosted solutions like Googles BigTable and Amazons SimpleDB.

The main focus of this session will be to understand practical, hype free uses for NoSQL and how to select an appropriate NoSQL store for a given use case.



Engineering your DSLs

close
Peter Bell

By Peter Bell

The easy part of implementing Domain Specific Languages is coding them. The hard part comes when you have to think about testing, documenting, evolving and providing appropriate editing interfaces for them.

In this session we'll go beyond the syntax and look at the real world engineering concerns for widespread use of a DSL and various proven strategies for building DSLs that will grow with your projects and work for your target users.



Domain Driven Design: Building Complex Software

close
Peter Bell

By Peter Bell

DDD is a proven approach for modeling and building sophisticated software that deals with complex domains. Learn what it does, what kinds of projects it is best for, and how to start to implement DDD in your organization.

In this session we will look at the classes of problems that DDD can solve, the pre-requisites for applying DDD and the core principles you need to start to apply Domain Driven Design. We'll also briefly look at some newer trends including what has been learnt since the book was published and the relationship between DDD and Agile and between DDD and DSLs.



Learning Open Source Business Intelligence

close
Tim Berglund

By Tim Berglund

Traditionally, business intelligence tools have been a high-cost part of any enterprise's software inventory. Recently, options have emerged that allow architects to build a credible business intelligence stack out of entirely open-source components. In this brief overview, we will demonstrate ETL, reporting, and analytics tool that can be deployed free or at low cost. Learn how to turn your company's transactional database into a rich data asset with a business-friendly user interface that integrates into your existing software infrastructure.

We begin this session talking about the differences between a transactional database and a data warehouse, describing the many benefits of creating the latter. Then we'll see how to take a transactional database and convert it into a warehouse star schema using the Eclipse-based Talend ETL. Next, we'll demonstrate how to enable business analysts to build reports with Jasper iReport, an open-source visual report designer. We'll talk about ways to integrate these report designs into your Java- or Groovy-based application. Finally, we'll look at more sophisticated options for analysis using tools from Pentaho.

This is a mile-wide, ankle deep view of an open-source business intelligence stack. Through this whirlwind overview, you'll learn the basic principles of business intelligence, how to think architecturally about the components of a BI stack and how to integrate them into the enterprise, and what specific tools you can employ to get the job done.



Open Source Business Intelligence Workshop

close
Tim Berglund

By Tim Berglund

Once you're familiar with the concepts of data warehousing, star schemas, cubes, and pivot tables, then it's time to dive in and look at how the tools really work. Continuing from the quick demos in Part I, this workshop session will have you building an actual ETL process with Talend Open Studio. This hands-on exercise will acquaint you with the tooling and solidify the concepts you've learned.

Be sure to bring a laptop (or pair with a friend who has one). You'll receive a VM image in "Learning Open Source Business Intelligence" if you attend it, or at the start of this workshop otherwise. This VM has all the tools we'll need pre-installed and ready to use.

Prerequisite: Learning Open Source Business Intelligence (or a solid grasp of BI concepts)



Gaelyk: Lightweight Groovy on the Google App Engine

close
Tim Berglund

By Tim Berglund

You love Groovy and you're a believer in cloud computing. 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.

Gaelyk is a lightweight Groovy web application framework built specifically for the Google App Engine. In this session, we'll talk through the simple abstractions it offers, then show how easy it is to code and deploy a useful application to the cloud.



Decision Making in Software Teams

close
Tim Berglund

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.

In this talk, we will explore decision making pathologies and their remedies in individual, team, and organizational dimensions. We'll consider how our own cognitive limitations can lead us to to make bad decisions as individuals, and what we might do to compensate for those personal weaknesses. We'll learn how a team can fall into decision-making dysfunction, and what techniques a leader might employ to healthy functioning to an afflicted group. We'll also look at how organizational structure and culture can discourage quality decision making, and what leaders to swim against the tide.

Software teams spend a great deal of time making decisions that place enormous amounts of capital on the line. Team members and leaders owe it to themselves to learn how to make them well.



Complexity Theory and Software Development

close
Tim Berglund

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.

Beyond new ways of looking at ant colonies, fashion trends, and national economies, complexity theory promises powerful insights to software development. The Internet—perhaps the most valuable piece of computing infrastructure of the present day—may fit the description of a complex system. Large corporate organizations in which developers are employed have complex characteristics. In this session, we'll explore what makes a complex system, what advantages complexity has to offer us, and how to harness these in the systems we build.



Practical Agile Database Development

close
Tim Berglund

By Tim Berglund

Do your team's agile practices extend to the database? Agile methods are fairly well-understood as they apply to code, but these principles are not commonly understood or practiced on the databases that typically accompany enterprise software projects. Learn the tools, techniques, and mindset your team needs to make incremental improvements to the database’s design over time with confidence.

We'll cover Scott Ambler and Pramod Sadalage's vision of database agility as described in their book Refactoring Databases. We'll discuss the five-pointed constellation of evolutionary design, refactoring, automated testing, source control, and developer sandboxes, and how each of these practices contributes to successful database development. In particular, we'll look at how these practices are enabled by the open-source tool, Liquibase. We'll study a database badly in need of reform, select some refactorings from Ambler's catalog, and implement them in real time in a way that can satisfy the development team and the maybe even the production DBAs! This tool and the practices that animate it produce real results, cleaning up an area of development that is all too often left messy and uncontrolled. If there is a relational database in your life, you will benefit from this talk.



Pragmatic Architecture

close
Ted Neward

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.

After that, the basic architectural discussion from the first part is, with the aid of the audience in a more interactive workshop style, applied to a real-world problem, discussing the performance and scalability ramifications of the various communication options, user interface options, and more.



Architectural Kata Workshop

close
Ted Neward

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.

In this session, attendees will be split into small groups and given a "real world" business problem (the kata). Attendees will be expected to formulate an architectural vision for the project, asking questions (of the instructor) as necessary to better understand the requirements, then defend questions (posed by both the instructor and their fellow attendees) about their choice in technology and approach, and then evaluate others' efforts in a similar fashion. No equipment is necessary to participate--the great architect has no need of tools, just their mind and the customers' participation and feedback.



Architectural Kata Workshop, Part II

close
Ted Neward

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.

(In the 180-minute version of the workshop, "part 1" and "part 2" are both independent and interdependent-attendees who come for both parts will go through two iterations of the workshop, but attendance at just one part is still a standalone valuable experience for those who don't want to come to both.)



The Busy Java Developer's Guide to Collections

close
Ted Neward

By Ted Neward

For so many Java developers, the java.util.* package consists of List, ArrayList, and maybe Map and HashMap. But the Collections classes are so much more powerful than many of us are led to believe, and all it requires is a small amount of digging and some simple exploration to begin to "get" the real power of the Collection classes.

In this presentation, Java developers will see the basic breakdown of the Collection API designs, the relationship of the interfaces to the implementations, how to create a new Collection implementation, and how the new Collections introduced as part of JSR-166 (the concurrency JSR) and Java6 make their programming lives easier.



The Busy Java Developer's Guide to Functional Java

close
Ted Neward

By Ted Neward

Much noise has been made in recent years about functional languages, like Scala or Haskell, and their benefits relative to object-oriented languages, most notably Java. Unfortunately, as wonderful as many of those benefits are, the fact remains that most Java developers will either not want or not be able to adopt those languages for writing day-to-day code. Which leaves us with a basic question: if I can't use these functional languages to write production code, is there any advantage to learning about them? The short answer is yes, for the fundamental premise--"I can't use functional code on my Java project"--is flawed. Java developers can, in fact, make use of functional ideas, and what's better, they don't even have to reinvent them for Java--thanks to the FunctionalJava library, many of the core primitives--interfaces that serve as base types for creating function values, for example--already exist, ready to be used.

In this presentation, we'll go over some basic functional concepts, then start seeing how they apply in the FJ library, and show how to use FJ and functional ideas on common Java programming tasks. Let the excuse "I can only use Java" finally be consigned to the rubbish bin, once and for all.



Busy Java Developer's Guide to Advanced Collections

close
Ted Neward

By Ted Neward

Once you've learned the core Collections clases, you're done, right? You know everything there is to know about Collections, and you can "check that off" your list of Java packages you have to learn and know, right?

In this presentation, we'll go over what's missing from the Java Collections library, what is provided via other sources (Google and Apache, among others), and what you can provide for yourself, including a brief foray into the world of functional programing, and how it can make your Java code more elegant.

Prerequisite: Busy Java Developer's Guide to Collections



Busy Java Developer's Guide to Multi-Paradigm Design

close
Ted Neward

By Ted Neward

The Java Virtual Machine 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.

But if we tear apart the paradigms, examine each one and its advantages and disadvantages, then we can go back to bringing them all back together to create some truly elegant and powerful software designs. It all begins with understanding what software design paradigms are.



The Busy Java Developer's Guide to ClassLoaders

close
Ted Neward

By Ted Neward

If you've ever gotten a ClassCastException and just knew the runtime was wrong about it, or found yourself copying .jar files all over your production server just to get your code to run, then you probably find the Java ClassLoader mechanism to be deep, dark, mysterious, and incomprehensible. Take a deep breath, and relax--ClassLoaders aren't as bad as they seem at first, once you understand a few basic rules regarding their operation, and have a bit more tools in your belt to diagnose ClassLoader problems. And once you've got that, and hear about ClassLoaders' ability to run multiple versions of the same code at the same time, and to provide isolation barriers inside your application, or even compile code on the fly from source form, you might just find that you like ClassLoaders after all... maybe.

For a beginning to intermediate Java audience.



Busy Java Developer's Guide to MongoDB

close
Ted Neward

By Ted Neward

MongoDB is designed for problems without heavy transactional requirements that aren't easily solved by traditional RDBMSs, including problems which require the database to span many servers.

Like other document-oriented database systems such as CouchDB, MongoDB is not a relational database management system. The database manages collections of JSON-like documents which are stored in a binary format referred to as BSON.

Attendees will see MongoDB code, hear how it manages transactional integrity (using "eventual consistency"), and how to interact with the server outside of code by using MongoDB client tools.



Busy Java Developer's Guide to Android: Basics

close
Ted Neward

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.

Attendees should be intermediate to advanced Java developers, as no time will be spent on Java basics, just the Android parts. Attendees are encouraged to bring laptops to the session (and your Android-based device, if you have one) to fill out code as we go, but the limited time frame means a focus on fast delivery of content and example code; have your fingers warmed up (and the SDK downloaded!) before you get here. (Latest Android SDK will also be on a USB key for attendees' use, in case attendees haven't had a chance to download & install.)



Busy Java Developer's Guide to Games

close
Ted Neward

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.

Come to this session, find out some intriguing things about what’s going on in the game industry, but more importantly, how ideas from the gaming world can turn around and answer some thorny problems in the business world.



The Art of Messaging

close
Mark Richards

By Mark Richards

Messaging is both a science and an art. Messaging is a science with respect to the mechanics of the JMS API and the syntax for sending and receiving messages. However, messaging is also an art when it comes to applying the JMS API to solve real-world problems. In this session I will review some of the more common use cases for messaging and show techniques for significantly increasing both the performance and scalability of messaging-based applications. Using ActiveMQ, you will see how to create embedded brokers, how to use asynchronous logging with Log4J and JMS, and how to significantly speed up your messaging applications. In this session I will also describe and demonstrate some emerging trends in messaging, including RESTful JMS (that is, JMS over HTTP) and also AMQP (Advanced Message Queuing Protocol). Come to this session to find out how much fun messaging can really be!

Agenda - Messaging Performance Techniques - Messaging Topologies - Embedded Messaging Using ActiveMQ - Using Messaging with Log4J for Asynchronous Logging - RESTful JMS (JMS over HTTP) - AMQP (Advanced Message Queuing Protocol)

Prerequisite: Some knowledge of JMS and Messaging in general



Enterprise Integration Using Apache Camel

close
Mark Richards

By Mark Richards

Apache Camel is a robust open source integration framework that handles routing and mediation tasks associated with enterprise integration. Camel allows you to quickly and easily route messages and integrate components in a distributed, decoupled manner. For example, using the Camel Java DSL, you can send and receive JMS messages in just a couple of lines of Java code. In this live coding session I will describe what Camel is, describe the overall architecture, show why it is useful, and demonstrate through live coding examples how to use the Camel Java DSL to write simple (and complex) routing logic. By attending this session you will learn Camel well enough to use it at work the next day.

Agenda - What is Apache Camel? - Understanding Camel's basic architecture - Configuring and Running Camel - Input Endpoints and Triggers - Message Enhancement and Transformation - Message Processing - Comparable Technologies and Future Direction



Common AntiPatterns and How To Avoid Them

close
Mark Richards

By Mark Richards

In the book "97 Things Every Software Architect Should Know" (O'Reilly, 2009) I wrote about the importance of design patterns as a useful means of communication between architects and developers. Equally important to patterns is an understanding of AntiPatterns - things that we repeatably do that produce negative results. AntiPatterns are used by developers, architects, and managers every day and are one of the main factors that prevent progress and success. In this session we will look at some of the more common and significant development and architecture antipatterns. Through coding and design examples, you will see how these antipatterns emerge, how to recognize when the antipattern is being used, and most importantly, how to avoid them. By attending this session, you will be part of a movement to reduce the AntiPattern catalog from hundreds of entries to only a few.

Agenda - What are anti-patterns? - Factors that cause anti-patterns - Common software and architecture anti-patterns

I have selected 7 of the most common anti-patterns I see continually in the industry and in my travels. We will be going into the details of each of these anti-patterns.

Prerequisite: None



jQuery: Ajax Made Easy

close
Nathaniel Schutta

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

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



JavaScript Beyond the Basics

close
Nathaniel Schutta

By Nathaniel Schutta

JavaScript is one of the most widely used languages around and yet its also one of the most misunderstood. With Ajaxified UIs becoming the norm, this humble language is once again at the forefront.

In this talk, we'll go beyond the basics of JavaScript delving into the mysteries of prototype inheritance, objects, language edge cases and the importance of testing.



Testing the Web Layer

close
Nathaniel Schutta

By Nathaniel Schutta

While your project might have nearly 100% code coverage on the server tier, many projects ignore testing the web layer. With more and more code being pushed to the browser, a lack of tests for the client code begs for trouble.

This talk will explore several testing options including Selenium, JsUnit, Crosscheck, JSCoverage, Watir, JSLint, JSSpec and others.



HTML 5 Fact and Fiction

close
Nathaniel Schutta

By Nathaniel Schutta

For the last few years, the web has been all a-twitter about web 2.0 (and even the occasional reference to web 3.0.) Yes, the days of static web applications are officially over and while libraries like jQuery and Prototype make it easier to build modern applications, ultimately they are papering over issues in the web standards (and the browsers that implement them.) Today we're building to standards that are from the paleolithic era of web design but that's changing - and HTML 5 is a large part of that. In this talk, we'll discus just what HTML 5 is and why it matters. We'll show how you can build to HTML 5 today and which browsers support what. Thankfully, after many years of stagnation, the future of web applications looks bright!

For the last few years, the web has been all a-twitter about web 2.0 (and even the occasional reference to web 3.0.) Yes, the days of static web applications are officially over and while libraries like jQuery and Prototype make it easier to build modern applications, ultimately they are papering over issues in the web standards (and the browsers that implement them.) Today we're building to standards that are from the paleolithic era of web design but that's changing - and HTML 5 is a large part of that. In this talk, we'll discus just what HTML 5 is and why it matters. We'll show how you can build to HTML 5 today and which browsers support what. Thankfully, after many years of stagnation, the future of web applications looks bright!



Enterprise Security API library from OWASP

close
Ken Sipe

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

This session will look at a number of security concerns and how the ESAPI library provides a unified solution for security. This includes authorization, authentication of services, encoding, encrypting, and validation. This session will discuss a number of issues which can be solved through standardizing on the open source Enterprise Security API.



Security Code Review

close
Ken Sipe

By Ken Sipe

Security concerns abound... According to Gartner 75% of all attacks are at the web application tier. There has never been a more urgent time to understand the security concerns and how to apply solutions to our web applications.

This session will look through the details of threat modeling, who should do it and how does it fit into the software development life-cycle.



Debugging your Production JVM

close
Ken Sipe

By Ken Sipe

So your server is having issues? memory? Connections? Limited response? Is the first solution to bounce the server? Perhaps change some VM flags or add some logging? In todays Java 6 world, with its superior runtime monitoring and management capabilities the reasons to the bounce the server have been greatly reduced.

Combined with proper JMX instrumentation, the need to bounce the server may be eliminated for all but the rarest of cases.

This session will look at the Java 6 monitoring and management capabilities, which includes the ability to make VM argument changes on the fly. In addition to what is provide in the JDK, a number of freely available management tools will be demonstrated.



Agile Velocity

close
Ken Sipe

By Ken Sipe

The agile development process is all about early and often feedback. One aspect of feedback is how is the team doing... Are we accurate in our estimates? Are we consistent in our velocity? As velocity varies, what is it telling me?

This session will focus on the art of estimating project stories and look at several techniques of assigning "points" to stories. We will discuss the advantages and disadvantages of the various approaches of point assignment. Regardless of the point system, the end result at the end of the iteration is a number... velocity. We will look at the value of velocity and contrast that with other feedback loops with the agile process.



Enter The Gradle

close
Ken Sipe

By Ken Sipe

This presentation introduces the audience to the power of Gradle through many real-world examples that are demonstrated live. By the end of the presentation, you'll understand how Gradle helps to elegantly solve the challenges that we face in our daily enterprise builds.

We'll go through such powerful concepts as: advantages of declarative over imperative build systems, convention over configuration without rigidity, task definitions and dependencies, the benefits of plugins, deep multi-project support, runtime optimizations through partial builds and harvesting existing functionality through Ant and Maven integration as well as strategies for migrating from these build tools. We will demonstrate some of the innovative goodies that come with Gradle out-of-the-box, like smart incremental builds, the Gradle Daemon and the Gradle Wrapper. We show also many of the new features like Eclipse integration, Sonar integration, Heroku integration, C/C++ support and other new plugins.



Architecture: Non-Functional Requirements

close
Ken Sipe

By Ken Sipe

The agile focus of software development puts heavy focus on user requirements through user stories. However we can not lose sight of the non-functional requirements as well. The software could be written to the exact specification and desire of the user, however if it takes 5 minutes for a request response, or it only supports 2 users or it isn't secure, then we still haven't done our jobs as developers.

This session will focus on the non-functional requirements of software development, namely: Performance, Scalability, Security, and Software Monitoring and Management. Each subject area discussion will include, goals, design practices, tools, and where it fits in the software development life-cycle.



So you want to be an Architect

close
Ken Sipe

By Ken Sipe

This session is a quick look at all aspects of being a corporate software architect. Whither you are a developer looking to move into the role of architect, needing to have an understanding of what is expected or already in the role of software architect looking for new and interesting ideas, this session is for you.

This session is designed to be a jam session on all aspects of software architecture and many of the roles of software architect. The following subject areas will be covered: - Software Development Process - Project Key Mechanisms: Languages and Frameworks - Security: Threats, Securing Code Review, Adding Security to you process - Layers, Partitions and Topologies - VM Optimizations - Usability and User Experience - Optimizing the Web - Ready for Production: Monitoring - Integration - Data Modeling



Aspect Oriented Programming With Spring AOP

close
Jeff Scott Brown

By Jeff Scott Brown

Aspect-Oriented Programming (AOP) complements Object-Oriented Programming (OOP) by providing another way of thinking about program structure. The key unit of modularity in OOP is the class, whereas in AOP the unit of modularity is the aspect. Aspects enable the modularization of concerns such as transaction management that cut across multiple types and objects. (Such concerns are often termed crosscutting concerns in AOP literature.)

This session will cover Spring AOP in detail to demonstrate how easy it can be to leverage the awesome power of Aspect-Oriented Programming.



Grails - How to Build Enterprise Apps

close
Jeff Scott Brown

By Jeff Scott Brown

Grails represents technology that offers great flexibility and power without the complexity introduced by other Java web application frameworks. Custom tag libraries are a snap. GSP Templates provide a simple mechanism for reusing UI elements. Sitemesh is integrated to help provide a consistent presentation across the entire application. GORM is super powerful ORM. Grails provides simple mechanisms for leveraging the power of Ajax.

This session will cover all of these topics to demonstrate how powerful the Grails framework is and show how little effort it takes to build not just a simple toy application but also to build real enterprise web apps.



Extending Grails - The Plugin System

close
Jeff Scott Brown

By Jeff Scott Brown

Grails is a super powerful framework for building applications for the Java platform. Grails addresses the pain points that the other web applications frameworks leave you with. This session covers the details you need to further extend Grails to help Grails help you in your environment.

Since 2006 Grails has had a really powerful and flexible plugin system. Much of the functionality in Grails itself is implemented as plugins. Grails makes it easy for you to further extend the framework to address needs in your environment. This session will detail how some of the core plugins work. The session will also cover all of the information needed to customize existing behavior or introduce whole new capabilities to the framework through the plugin system and other techniques.



GORM Inside And Out

close
Jeff Scott Brown

By Jeff Scott Brown

GORM is a super powerful ORM tool that makes ORM simple by leveraging the flexibility and expressiveness of a dynamic language like Groovy. With GORM developers get access to all of the power and flexibility of an ORM tool like Hibernate without any of the complexity.

This session will cover a lot of the GORM API from the developer's perspective as well as diving into some of the implementation details. Knowing how some of this works under the covers will give developers an opportunity to not only improve their productivity with GORM but also open up possibilities of using dynamic metaprogramming in other aspects of their application development efforts.

Prerequisite: Advanced Grails



Groovy For Java Programmers

close
Jeff Scott Brown

By Jeff Scott Brown

Groovy is an agile dynamic language for the Java platform. Groovy has a Java like syntax along with many features inspired by languages like Python, Ruby and Smalltalk.

This session covers a lot of ground including many interactive examples to highlight the powerful language features that make Groovy compelling. This session is aimed at Java developers who want to leverage the power of Groovy.



TDD with Groovy

close
Jeff Scott Brown

By Jeff Scott Brown

The value of Test Driven Development (TDD) has become widely accepted. The practice has extended beyond just XP teams. Good TDD practices yield high quality software and help teams maintain confidence in their software as complexity grows. The dynamic nature of Groovy makes TDD easy and fun. Groovy may be used to unit test not only Groovy code but other code as well. Testing Java code with Groovy is a snap. Learn to use the power of Groovy to test your systems.

This session will cover using Groovy to test Groovy and Java code, web applications and desktop applications. The session will include a lot of live code examples demonstrating the power of Groovy in testing.



Compile Time and Runtime Metaprogramming With Groovy

close
Jeff Scott Brown

By Jeff Scott Brown

The dynamic nature of Groovy makes it a fantastic language for building dynamic applications for the Java Platform. The metaprogramming capabilities offered by the language provide everything that an application development team needs to build systems that are far more capable than their all Java counterparts. Taking advantage of Groovy's metaprogramming capabilities brings great new possibilities that would be very difficult or just plain impossible to write with Java alone. Building Domain Specific Languages in Groovy is easy to do once a team has a good understanding of the Metaobject-Protocol (MOP) and the method dispatch mechanisms used by the Groovy runtime environment.

This session will cover in detail a number of advanced metaprogramming concepts in Groovy. The discussion will cover using dynamic method interception, meta-class manipulation, AST transformations and Groovy's Metaobject-Protocol (MP) to build flexible applications in Groovy including implementing a Domain Specific Language (DSL).



Keynote: It could be heaven or hell (being a polyglot programmer)

close
Venkat Subramaniam

By Venkat Subramaniam

Keynote discussing the benefits and challenges of being a polyglot programmer.

Keynote discussing the benefits and challenges of being a polyglot programmer.



What's Brewing in Java

close
Venkat Subramaniam

By Venkat Subramaniam

Java has come a long way, and yet there is so much that's happening in this space. In this presentation we will take a look at the exciting additions and changes coming up in the next version of Java.

Status of the Java language and the libraries Features that are around the corner JVM capability enhancements Benefits of these imminent changes

Prerequisite: Good programming knowledge of Java



How to Approach Refactoring

close
Venkat Subramaniam

By Venkat Subramaniam

You can't be agile if your code sucks. You know that you have to constantly refactor your code and design. But the questions is how? In this presentation, instead of looking at a laundry list of refactoring techniques, we will instead look at how to effectively approach refactoring and along the way discuss some core principles to look for.

We will take some sample code and refactor it. As we refactor, we will measure the quality of code using continuous integration. You can pick up a list of refactoring techniques from tools. However, in this section you will learn how and when to drive those tools, and more important why.



Scala Tricks

close
Venkat Subramaniam

By Venkat Subramaniam

Scala is a very powerful hybrid functional pure object oriented language on the JVM. Scala is known for its conciseness and expressiveness. In this presentation we will look at some common tasks you do everyday in developing applications and see how they manifest in Scala.

We will look at the strengths of Scala from application development point of view. Rather than focusing on the syntax of Scala, we will focus here on Scala idioms and powerful Scala libraries to perform routine tasks.



Test Driving Multithreaded Code

close
Venkat Subramaniam

By Venkat Subramaniam

Once I got convinced about the benefits of TDD, I used it pretty extensively and consistently to drive the design and development of my code. So, it came as a surprise when I was trying to convince myself that those practices do not apply on a highly multithreaded code I was creating on a project. Thankfully, I set out to prove that TDD does not apply, but ended up proving myself wrong.

In this, zero powerpoint, all coding presentation, we will use TDD to drive the design and implementation of a multithreaded code. Along the way we will hit some road blocks, and learn techniques and practices that can break the barriers. If you have confronted the issue or have wondered about it, this presentation is for you.



Tackling Concurrency on the JVM

close
Venkat Subramaniam

By Venkat Subramaniam

In this presentation we will take a quick walk though the issues with concurrency and how the solutions provided in Scala and Clojure help address those.

The gaining popularity of multi-core processors has rekindled the concurrency question: How do you effectively implement multithreaded applications on the Java platform? The familiar approach in Java is to create threads and to manage access to shared mutable state using synchronized locks. This approach to concurrency is fraught with hard work and uncertainties. Have you marked the appropriate methods synchronized, did you decorate the relevant fields volatile, did you properly construct the mutually exclusive regions of code, and is there a potential for deadlock lurking in the code.

In this talk you'll learn about alternate ways to tackling concurrency on the JVM. One approach is the functional way, along with an actor based model provided in Scala, to deal with immutable state. This removes the problem at the root, since data can't change there is no issue of contention to contend with. Another distinct approach, provided in Clojure, is to protect access to mutable data, not using locks, but using transactional boundary. The Software Transactional Memory brings database like transaction model to in-memory data. In this presentation we will discuss the pros and cons of these approaches and how to effectively apply them.



Objective-C for Experienced Programmers

close
Venkat Subramaniam

By Venkat Subramaniam

This session is intended for programmers with good working knowledge in at least one OOP language and interested in learning Objective-C to develop Mac and iPhone Apps.

After a rapid introduction to the basic language constructs, you'll deep dive into Objective-C specific concepts including Protocols, Categories, blocks, and how to really manage memory without getting overwhelmed in the process. You will also be introduced to tools and techniques to monitor and improve your code quality and performance.



What's new in Spring

close
Craig Walls

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.

It's been 8 years since Spring 1.0 was released. In that time it has gone from a modest open-source project to being a de facto standard Java application framework. Now, as Spring enters its 8th year, it continues its attack on Java complexity, packed with many new features such as:

  • First-class REST support
  • A new expression language
  • More options for annotation-driven bean wiring
  • Bean profiles
  • Declarative caching abstraction
  • Enhanced Java-based configuration
  • A new "c:" namespace
  • Unified property management
  • And much more

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.



NoXML: Spring for XML-Haters

close
Craig Walls

By Craig Walls

In this presentation, we'll explore all of the ways to do bean wiring in Spring We'll take a pragmatic view of each style, evaluating their strengths, weaknesses, and applicability to varying circumstances.

Over 6 years ago, Spring entered the enterprise Java scene, bringing a simpler development model rooted in dependency injection, the notion of assembling application components in a loosely-coupled way. With it, however, came a flood of XML configuration, required to declare how those components were to be assembled.

For a variety of reasons, XML has fallen out of favor with much of the development community. Now that there are other frameworks that offer dependency injection without all of the XML, some are suggesting that Spring's heavy use of XML has it destined for the scrap heap.

They don't know Spring.

Although XML-based Spring configuration is still available and still has a place in many Spring applications, it is no longer the only way to do dependency injection in Spring. The past few releases of Spring have brought us new ways of assembling our application objects, including annotation-driven options such as Spring's @Autowired and JSR-330's @Inject and Java-based configuration with Spring JavaConfig. There's even a way to express Spring configuration in Groovy.



Securing Spring

close
Craig Walls

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

Although we may invite guests into our homes and give someone a ride in our car, we locks and alarms on our homes and our cars to keep uninvited and malicious visitors out. Similarly, we allow people to use the applications that we develop, but we probably want to control the access that they have.

Security is an important aspect of any application. And while we could program security rules into the web controllers and methods in our application, we'd find ourselves cluttering our business logic with repetitive security code. Security is a cross-cutting concern--begging to be handled with aspect-oriented techniques.

Spring Security is an authentication and access-control framework based on Spring that provides security aspects. With Spring Security, you can declare who is allowed to access your application and what they're allowed to see, keeping your application logic focused and uncluttered with security details.



Modular Java: An Introduction to OSGi

close
Craig Walls

By Craig Walls

Contrary to what you may have heard, OSGi is neither complex, nor heavyweight. In this session, I'll show you how OSGi can actually simplify application development rather than complicate it. We'll look at the benefits of modularity, the fundamentals of OSGi, and see how to develop basic OSGi bundles. We'll also see how a few gadgets in the OSGi toolbox can ease the development of OSGi bundles.

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.

Enter OSGi. OSGi is a mature and established framework for dynamic modularity in Java. With OSGi, you'll be able to realize true modularity in your Java projects, making them more flexible, comprehensible, and testable.



Introducing Spring Roo: From Zero to Working Spring Application in Record Time

close
Craig Walls

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.

In recent years, rapid application development frameworks such as Rails and Grails have earned a lot of attending. By employing code generation, convention-over-configuration, and the dynamic capabilities of their core languages (Ruby and Groovy) to offer unparalleled productivity, helping get projects off the ground quickly.

As awesome as these frameworks are, they do have one negative mark against them. Although developers love working with them, convincing the "boss" to build mission-critical applications in a relatively new development style based can be difficult. The mere mention of a word like "Groovy" conjures up images of tie-dye shirts and VW vans. Risk-averse project managers often think that free love may have been a big thing in the 70s, but it has no place in serious business.

If psychedelic frameworks are a tough-sell in your organization, then you can still feel much of the same productivity gains while developing Spring applications. Spring Roo mixes Spring and Java with a little code generation and a dash of compile-time AspectJ to achive a rapid development environment that resembles Rails and Grails. But instead of producing Ruby/Rails or Groovy/Grails code that may make your manager twitch, Roo produces Java-based projects that use the Spring Framework--which is already accepted in many organizations.



Beyond Scaffolding: A deeper dive into Spring Roo

close
Craig Walls

By Craig Walls

In this session, we'll go beyond the Spring Roo basics and see what makes it tick. We'll learn how to guide Spring Roo with annotations, how to customize a Roo-generated application, and how to write a Spring Roo addon.

So...Spring Roo has just generated your project code. Now what? With the scaffolding in place, is it time to show Roo to the door? Is Roo only good for starting a new application, but has no role in the continuing development of that application?



JRuby in Practice

close
Aaron Bedra

By Aaron Bedra

Ruby has made an significant upward trend in the past few years. Alongside this trend Charles Nutter and the fantastic JRuby team have implemented a version of Ruby that runs on the JVM giving you the power of Ruby coupled with the advantages of running on the JVM. Come see for yourself how you can harness the power of rapid development in Ruby and still maintain all the Java interoperability you need to help you build on top of your existing systems.

In this Session you will take a look at some real world examples of how JRuby can help you:

  • Write new software that wraps existing Java libraries
  • Utilize JMX to monitor your production code
  • Increase the effectiveness of your test suites

This session will leave you with new information that can help you decide if JRuby is right for your next application or feature.



Programming Clojure

close
Aaron Bedra

By Aaron Bedra

Find out why Clojure is Java.next

  • Clojure provides clean, fast access to all Java libraries
  • Clojure provides all the low-ceremony goodness you know and love from dynamic languages
  • Clojure includes Lisp's signature feature: Treating code as data through macros.
  • Clojure's emphasis on immutability and support for software transactional memory make it a viable option for taking advantage of massively parallel hardware.

Clojure is a dynamic programming language for the Java Virtual Machine, with a compelling combination of features:

  • Clojure is elegant. Clojure's clean, careful design lets you write programs that get right to the essence of a problem, without a lot of clutter and ceremony.
  • Clojure is Lisp reloaded. Clojure has the power inherent in Lisp, but not constrained by the history of Lisp.
  • Clojure is a functional language. Data structures are immutable, and most functions are side-effect free. This makes it easier to write correct programs, and to compose large programs from smaller ones.
  • Clojure simplifies concurrent programming. Of course, Java itself has pretty good concurrency support, but there is wide agreement that lock-based concurrency is difficult to use correctly. Clojure provides alternatives to lock-based concurrency: software transactional memory, agents, and dynamic variables.
  • Clojure embraces Java. Calling from Clojure to Java is direct, and goes through no translation layer.
  • Unlike many popular dynamic languages, Clojure is fast. Wherever you need it, you can get the exact same performance that you could get from hand-written Java code.


Implementing RESTful Web Services

close
Jeremy Deane

By Jeremy Deane

RESTful web services have become the preferred approach to synchronously integrating heterogeneous systems. The architectural style’s success is due in large part to its simplicity. Furthermore, REST is based on a small set of widely accepted standards, such as HTTP and XML and requires far fewer development steps, toolkits and execution engines than conventional SOAP web services.

In this session, I will cover the key concepts behind REST and walk through the process of designing, implementing and testing RESTful web services. In addition, I will present web service demos based on several popular RESTful frameworks including RESTlet, Spring MVC, and NetKernel.



Resource-Oriented Enterprise Service Bus

close
Jeremy Deane

By Jeremy Deane

An Enterprise Service Bus (ESB) provides a platform for service provisioning. The core capabilities that enable provisioning across an enterprise include addressing, routing and transformations. Addressing is the ability to specify the location of a service regardless of transport. Service routing defines a message path across a number of servers or nodes and message content transformations are implemented using XML technologies such as XSLT and proprietary adapters.

Resource Oriented Architecture (ROA) goes beyond RESTful web services and provides a more extensible transport-independent foundation. Furthermore, ROA pushes the integration functionality to the edge of the network (as a URI), translating into better service management and scalability.

In this session, I will explore the convergence of Resource Oriented Architecture and Enterprise Integration Patterns. I will then present a Resource-Oriented ESB and several service examples using 1060 Research’s NetKernel and Apache ActiveMQ.



Resource-Oriented Concurrent Processing

close
Jeremy Deane

By Jeremy Deane

Traditional concurrent development on the Java Platform requires in depth knowledge of threads, locks, and queues (oh, my!). Fortunately, new functional languages that run on the Java Platform, such as Scala, have made concurrent programming easier.

An alternate approach is to implement concurrent processes using a resource oriented computing (ROC) platform. At the heart of this ROC platform is a microkernel that allows processing to scale linearly as more CPUs are added. Consequently, developers are freed from the complexity of Java concurrency and functional programming.

In this session, I will provide an overview of resource-oriented concurrent programming using 1060 Research’s NetKernel. I will then present examples that compare and contrast this approach against concurrent programming using Java and Scala.



The New Work of management in Agile Organizations

close
Esther Derby

By Esther Derby

Sometimes I see teams that reject all direction and go their own way, declaring, 'We are self-organizing'. They are missing an important fact. When someone is paid by a company to be part of a team, that team exists within the organizational context.

On the other hand, some managers hear the words "self-organizing" and believe the team is on its "own" that they can go into semi-retirement. But that's not the case, either.

In fact,both are risky over-simplifications.

When teams self-organize there's still plenty for managers to do, but management attention must shift from individual to team performance, and creating an environment where teams can excel.

Software teams work in the work system and managers work on the work system. That means that a managers job is to engineer the organization so that teams can do their best work. In this session, I'll share ideas and practical techniques that will help managers make the shift from traditional management practices to those that will best support self-organizing agile teams.



Working with Complex Adaptive (Human) Systems

close
Esther Derby

By Esther Derby

The world abounds with complex theories and complex advice about complex adaptive systems. But most of them aren't very helpful when it comes to knowing what to do to make a system work better. In this interactive session, we'll explore three levers that you can use to influence patterns of behavior in complex adaptive systems...such as software development teams.

In this session, we'll simulate a small product company and examine the structures, exchanges, and differences that influence how the company worked. Then we'll look for similar levers within our workplaces and develop ideas on how you can use lessons from complexity science to help your team work more effectively.



Improving Customer Conversations

close
Esther Derby

By Esther Derby

It’s not easy to build the right product. People sometimes don’t know exactly what they need, want things that won’t help, and don’t imagine what’s possible. Agile project capture requirements on cards that contain a statement of want and benefit and notes on how to confirm the need is met. The intention isn’t to fully document the requirement on the card, but to make a note and create a reminder for a conversation with the customer. Whether you are using agile methods or traditional requirements, valuable products start with understanding the customers context, their problems, what they want, and how they use a product. However, most people aren’t born with the ability to speak naturally in user stories or fully formed requirements statements. So we must learn how to ask the right questions, draw out pertinent information and understand the customer’s world in those conversations.

In this session, you’ll learn about different types of questions, and when to use them to learn about how the customer currently uses a product, the problems they experience with the product, and problems that new features in the product might solve. Then, we’ll put that to work in practice interviews.



Team Traps and How to Avoid Them

close
Esther Derby

By Esther Derby

Some teams soar; others wallow, bicker and slog their way to uncertain results. Teams that soar have a few things in common: they have a shared goal, interdependent work, complimentary skills, mutual accountability. Slogging teams have a few things in common, too. They fall into predictable traps.

What are those traps and how can you help your team climb out of them? That’s what Esther is here to talk about.



High-Performance Scalability for Enterprise Applications with Enterprise Ehcache

close
Eric Mizell

By Eric Mizell

Scaling enterprise applications is hard. Traditional architectures that use the database as a hub of application data and shared state lead to performance bottlenecks, excessive database license and hardware costs, and vendor lock-in. Many homegrown or patched-together solutions at worst don’t work and at best suck hours of developer time that could be better spent elsewhere.

Enterprise Ehcache is an easy-to-deploy solution to these hard-to-solve scale and throughput problems. Ehcache has long been the de facto standard for Java caching and is the default cache for many popular frameworks and containers such as Hibernate, Spring, Tomcat, JBoss, WebLogic, WebSphere, and ColdFusion. In this presentation you will learn how to use Enterprise Ehcache to snap in terabyte scale out of the box with only two lines of config changes; speed up performance by as much as 10x more than other solutions, and scale out your application from one node to 1,000s, to large virtualized environments and clouds:

· Background—standard caching theory and practice · Getting started—the Ehcache API and configuration · Web caching · Advanced scaling techniques—configuring and deploying a distributed cache · Flexibility, management, and control—decorators, listeners, statistics, and monitoring · Cloud deployment · Tuning and monitoring best practices



Test Driven Development in Java: Live and Uncensored

close
Ben Rady

By Ben Rady

One of the barriers to wider adoption of TDD is that it is best taught from within a team, and the technical challenges of writing tests frequently thwart those looking to teach themselves.

This session will be a live demonstration of Test Driven Development in Java, using Eclipse and JUnit, aimed at those new to TDD and looking to learn. Audience members will be encouraged to participate as we walk through common scenarios that frequently discourage new TDDers, and demonstrate some techniques for overcoming them in a live coding session.