Note: this is content from Über Conf   2010. Please find current event information on our home page.

Platinum Sponsor

NFJS One - Training, Consulting, Mentoring

Über Conf 2010 Brochure - Download


Session Schedule

Session at Über Conf will go in-depth! If you are a developer, technical manager, or architect our sessions are for you. This is your opportunity to go beyond the basics and master critical skills. We expect that you are a competent developer who is ready to solve problems using today's best tools and practices.

Monday - June 14

Designates a Workshop


  Westminster I Westminster II Standley I Standley II Cotton Creek I Cotton Creek II Windsor Waverly
12:00 - 1:00 PM EARLY REGISTRATION - UBERCONF
1:00 - 5:00 PM

iPad/iPhone Seminar - Part I

Matthew McCullough and Ben Ellingson
             
5:00 - 6:30 PM MAIN UBERCONF REGISTRATION
6:30 - 7:30 PM DINNER
7:30 - 8:30 PM Keynote: Challanges and Directions in Java Virtual Machines by Cliff Click
8:30 - 10:00 PM OPENING NIGHT RECEPTION

Tuesday - June 15


  Westminster I Westminster II Standley I Standley II Cotton Creek I Cotton Creek II Windsor Waverly
7:00 - 8:00 AM 5K FUN RUN & POWER WALK
7:30 - 8:30 AM BREAKFAST & LATE REGISTRATION
8:30 - 10:00 AM

Cryptography on the JVM: Boot Camp

Matthew McCullough

Mastering Spring MVC 3

Keith Donald

Patterns of Modular Architecture

Kirk Knoernschild

Cloud computing deep dive for Google App Engine and Amazon EC2

Rohit Bhardwaj

Transforming to Groovy

Venkat Subramaniam

Hydras and Hypermedia

Ian Robinson

Agility as a Tool: Getting Ready to Iterate

David Hussman

Test Driven Development in Java: Live and Uncensored

Ben Rady
10:00 - 10:30 AM MORNING BREAK
10:30 - 12:00 PM

Java EE 6 & GlassFish v3: Paving the path for the future

Arun Gupta

Inside Spring Web Flow 3 Development

Keith Donald

Common AntiPatterns and How To Avoid Them

Mark Richards

Practical Agile Database Development

Tim Berglund

Workshop: Groovy Power Features

Paul King

The Counterintuitive Web

Ian Robinson

Products and People over Process and Dogma

David Hussman

Enterprise testing to make your application foolproof

Rohit Bhardwaj
12:00 - 12:30 PM OUTDOOR BREAK
12:30 - 1:30 PM LUNCH
1:30 - 3:00 PM

Architect for Scale

Michael Nygard

Extreme Productivity with Roo

Keith Donald

Complexity Theory and Software Development

Tim Berglund

The Busy Java Developer's Guide to Collections

Ted Neward

Workshop: Groovy Power Features

(continued)
Paul King

Redesigning Agility: Incorporating Design Thinking

David Hussman

The Art of (Java) Benchmarking

Cliff Click

Enterprise Security, Privacy and Data compliance

Rohit Bhardwaj
3:00 - 3:15 PM BREAK
3:15 - 4:45 PM

Resource Oriented Architecture using REST

Alex Antonov

Hadoop Workshop

Matthew McCullough

Developing Web Applications with Spring

Keith Donald

The Busy Java Developer's Guide to Functional Java

Ted Neward

Automated deployment with Maven and friends - going the whole nine yards

John Smart

Agile Velocity

Ken Sipe

Fast Bytecodes for Funny Languages

Cliff Click

High Performance Persistence with Redis

Michael Nygard
4:45 - 5:00 PM BREAK
5:00 - 6:30 PM

Building RESTful ROA Architecture at Orbitz

Alex Antonov

Hadoop Workshop

(continued)
Matthew McCullough

Workshop: Developing Web Applications with Spring

(continued)
Keith Donald

Busy Java Developer's Guide to Advanced Collections

Ted Neward

Dynamic Languages Practices

Paul King

Architecture: Non-Functional Requirements

Ken Sipe

Continuous Testing on the JVM

Ben Rady
6:30 - 8:30 PM DINNER/OUTDOOR BREAK/PANEL
8:30 - 10:00 PM

So you want to be an Architect

Ken Sipe

Workshop: iPad/iPhone Seminar - Part II

Matthew McCullough and Ben Ellingson

Busy Java Developer's Guide to Games

Ted Neward

The Art of Messaging

Mark Richards

Coding Dojo with John Smart

John Smart

When the Fur Flies: Dev and Ops Cooperation when the Worst Happens

Michael Nygard

Visualizations for Code Metrics

Neal Ford

Building a language on the JVM

Ola Bini

Wednesday - June 16


  Westminster I Westminster II Standley I Standley II Cotton Creek I Cotton Creek II Windsor Waverly
8:00 - 9:00 AM BREAKFAST
9:00 - 10:30 AM

Evolving towards REST-based Enterprise Integration

Neal Ford

Enterprise Integration Using Apache Camel

Mark Richards

Git Source Code Control Workshop

Matthew McCullough

Scala for Java Programmers

Venkat Subramaniam

Workshop: Grails: Bringing Radical Productivity to the JVM Part I

Dave Klein

A Crash Course in Modern Hardware

Cliff Click

Iteration-less, Value-Based Planning

Ben Rady

RDFA : Weaving Richness and Meaning in the Web

Brian Sletten
10:30 - 11:00 AM MORNING BREAK
11:00 - 12:30 PM

Agile Engineering Practices

Neal Ford

Turtles and Architecture

Kirk Knoernschild

Git Source Code Control Workshop

(continued)
Matthew McCullough

Workshop: Scala for Java Programmers

(continued)
Venkat Subramaniam

Workshop: Grails: Bringing Radical Productivity to the JVM Part I

(continued)
Dave Klein

Busy Java Developer's Guide to ParallelizationPatterns

Ted Neward

Design for Operations

Michael Nygard

NetKernel: Making IT Matter Again

Brian Sletten
12:30 - 1:30 PM LUNCH
1:30 - 3:00 PM

End-to-End Performance Optimization

Aleksandar Seovic

Agile Tools - Taking Your Agile Practices To The Next Level

Paul King

Emergent Design

Neal Ford

An in depth look at Apache Wicket

Andrew Lombardi

JRuby for the win

Ola Bini

DSLs in Scala: Internal and External

Michael Nygard

Gradle - A Better Way To Build

Hans Dockter

Workshop: NetKernel: Making IT Matter Again

(continued)
Brian Sletten
3:00 - 3:15 PM BREAK
3:15 - 4:45 PM

Stability Antipatterns

Michael Nygard

Continuous Integration - Hudson

John Smart

Pragmatic Architecture

Ted Neward

Workshop: Hands on with Apache Wicket

Andrew Lombardi

JRuby in Depth

Neal Ford and Ola Bini

Resource-Oriented Concurrent Processing

Jeremy Deane

Beauty and the Beast: Software-Design for Builds and Build Systems

Hans Dockter

Working with Complex Adaptive (Human) Systems

Esther Derby
4:45 - 5:00 PM BREAK
5:00 - 6:30 PM

Workshop: Stability Antipatterns

(continued)
Michael Nygard

Workshop: Continuous Integration - Hudson

(continued)
John Smart

Workshop: Pragmatic Architecture

(continued)
Ted Neward

Workshop: Hands on with Apache Wicket

(continued)
Andrew Lombardi

Workshop: JRuby in Depth

(continued)
Neal Ford and Ola Bini

Resource-Oriented Enterprise Service Bus

Jeremy Deane

Workshop: Beauty and the Beast: Software-Design for Builds and Build Systems

(continued)
Hans Dockter

The New Work of management in Agile Organizations

Esther Derby
6:30 - 7:30 PM DINNER
7:30 - 9:00 PM

Performance and Scalability Revisited: In-Memory Data Grids

Aleksandar Seovic

iPad/iPhone Seminar - Part III

Matthew McCullough

How to Approach Refactoring

Venkat Subramaniam

Successful Software Management: 17 Lessons Learned

Johanna Rothman

From Java to Ruby and Back

Alex Antonov

Business Architecture Foundations of IT

Ian Robinson

Grails Integration Strategies

Dave Klein

Developing a Complex External DSL

Vaughn Vernon
9:00 - 10:30 PM UBERCONF PARTY

Thursday - June 17


  Westminster I Westminster II Standley I Standley II Cotton Creek I Cotton Creek II Windsor Waverly
8:00 - 9:00 PM BREAKFAST
9:00 - 10:30 AM

Hacking - The Dark Arts

Ken Sipe

iBeans: The Simplest Service Integrations You've Ever Implemented

Matthew McCullough

Introduction to Functional Programming with Clojure

Stuart Halloway

TDD Regular Code/Multithreaded Code!

Venkat Subramaniam

XML and Web Services with Groovy

Paul King

Getting the best of both worlds: OSGi & Java EE together

Arun Gupta

Manage Your Project Portfolio: A Lean and Agile Approach

Johanna Rothman

Implementing Domain-Driven Designs

Vaughn Vernon
10:30 - 10:45 AM MORNING BREAK
10:45 - 12:15 PM

Security Boundaries

Ken Sipe

Migrating to Maven 3.0

Matthew McCullough

The Best of OO: Clojure Types and Protocols

Stuart Halloway

Workshop: TDD Regular Code/Multithreaded Code!

(continued)
Venkat Subramaniam

Gaelyk: Cloud-Based Apps With Groovy

Tim Berglund

Solr - Case Study

Eric Pugh

Agile Program Management: Collaborating Across the Organization

Johanna Rothman

The Domain-Driven Design Metamodel

Vaughn Vernon
12:15 - 1:30 PM OUTDOOR BREAK & LUNCH
1:30 - 3:00 PM

Security Code Review

Ken Sipe

Android mobile application development

Rohit Bhardwaj

Clojure

Stuart Halloway

Semantic Web Workshop

Brian Sletten

BDD with Cucumber Workshop (Bring A Laptop)

Paul Rayner

Solr

Eric Pugh

Coaching as a Two-Way Relationship

Johanna Rothman

Learning Open Source Business Intelligence

Tim Berglund
3:00 - 3:15 PM AFTERNOON BREAK
3:15 - 4:45 PM

Enterprise Security API library from OWASP

Ken Sipe

Workshop: Android mobile application development

(continued)
Rohit Bhardwaj

Workshop: Clojure

(continued)
Stuart Halloway

Semantic Web Workshop

(continued)
Brian Sletten

BDD with Cucumber Workshop (Bring A Laptop)

(continued)
Paul Rayner

Workshop: Solr

(continued)
Eric Pugh

Workshop: Coaching as a Two-Way Relationship

(continued)
Johanna Rothman

Open Source Business Intelligence Workshop

Tim Berglund
4:45 - 5:00 PM UBERCONF - CONCLUSION

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.



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.



Gaelyk: Cloud-Based Apps With Groovy

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.



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)



Cloud computing deep dive for Google App Engine and Amazon EC2

close
Rohit Bhardwaj

By Rohit Bhardwaj

In this session we will take a deep dive at few cloud computing examples from real world and participants will be able to know how to use cloud computing for Google App Engine, Amazon EC2 and few others.

Know about cloud computing companies. Google, Apple, and Microsoft are all working to take advantage of and implement cloud computer technology into their current and future product. As cloud computing leaders, these companies will be at the forefront of efforts to take computing 100 percent online, as opposed to your information being tied to a desktop trapped in one location, accessible only if you are physically there.

This session we will take a deep dive at few cloud computing examples from real world and participants will be able to know how to use cloud computing.



Enterprise testing to make your application foolproof

close
Rohit Bhardwaj

By Rohit Bhardwaj

Enterprise software solutions are an essential part of many large enterprises. Given the critical role enterprise software solutions play, it is imperative that they are tested effectively and efficiently all the time. It is as important, if not the most important, as any other phase of the Software Development Lifecycle (SDLC). But testing an enterprise application is easier said than done. This presentation targets seasoned software developers, testers and project managers who are looking for guidance in implementing an effective application testing strategy. We will discuss the rationale behind application enterprise testing and explore building blocks of effective testing and explain their importance. Then we will explore how to do effective root-cause analysis. We will discuss the typical output of a performance test and how to perform effective analysis. We will learn the effects of particular software environments on testing. The approach is generic; so many details regarding your applications will depend on the characteristics of the technologies you use. Later on we will explore at two tools PushToTest and CloudTest to automatically test web applications. Attendees will learn different test strategies for testing.

Enterprise software solutions are an essential part of many large enterprises. Given the critical role enterprise software solutions play, it is imperative that they are tested effectively and efficiently all the time. It is as important, if not the most important, as any other phase of the Software Development Lifecycle (SDLC). But testing an enterprise application is easier said than done. This presentation targets seasoned software developers, testers and project managers who are looking for guidance in implementing an effective application testing strategy. We will discuss the rationale behind application enterprise testing and explore building blocks of effective testing and explain their importance. Then we will explore how to do effective root-cause analysis. We will discuss the typical output of a performance test and how to perform effective analysis. We will learn the effects of particular software environments on testing. The approach is generic; so many details regarding your applications will depend on the characteristics of the technologies you use. Later on we will explore at two tools PushToTest and CloudTest to automatically test web applications. Attendees will learn different test strategies for testing.



Enterprise Security, Privacy and Data compliance

close
Rohit Bhardwaj

By Rohit Bhardwaj

Data integrity, security, recovery, privacy and regulatory compliance are most important attributes for enterprise implementation. Enterprise customers ask for transparency in how the vendors will provide security programs. Many question need to be asked for any cloud implementation to policy makers, architects, coders and testers.

In this presentation we will explore data security and storage, privacy and data compliance issues. We will explore the security management in cloud. Presentation is useful for anyone starting from Executives to developers who are going to implement the enterprise Applications in both private and public cloud.

Data integrity, security, recovery, privacy and regulatory compliance are most important attributes for enterprise implementation. Enterprise customers ask for transparency in how the vendors will provide security programs. Many question need to be asked for any cloud implementation to policy makers, architects, coders and testers.

In this presentation we will explore data security and storage, privacy and data compliance issues. We will explore the security management in cloud. Presentation is useful for anyone starting from Executives to developers who are going to implement the enterprise Applications in both private and public cloud.



Android mobile application development

close
Rohit Bhardwaj

By Rohit Bhardwaj

Android is a software stack for mobile devices that includes an operating system, middleware and key applications. Cool apps that surprise and delight mobile users—built by developers like you—are a huge part of the Android vision. In this presentation we will explore many examples of android.

The Android SDK provides the tools and APIs necessary to begin developing applications that run on Android-powered devices. Cool apps that surprise and delight mobile users—built by developers like you—are a huge part of the Android vision. Google has also participated in the Android Market by offering several applications for its services. These applications include Google Voice for the Google Voice service, Scoreboard for following sports, Sky Map for watching stars, Finance for their finance service, Maps Editor for their MyMaps service, Places Directory for their Local Search, Google Goggles that searches by image, and My Tracks, a jogging application. Android phones that include the 'Google Experience' also have Google Search, Google Calendar, Google Maps, Google Navigation and Gmail integrated. In this workshop we will explore many examples of android.

This workshop will provide clear understanding how to build cool applications using Android, which will surprise and delight mobile users. We will explore following areas of android application development:

• Android Architecture • Android Activities and intents • Explore application resources, Views, Widgets, and Layouts • Data and Storage APIs : SQLLite • Developing Cool Application and making it ready as a product • Mobile Development Process • Selling Your Android Application: Making Money



Android mobile application development

close
Rohit Bhardwaj

By Rohit Bhardwaj

Android is a software stack for mobile devices that includes an operating system, middleware and key applications. Cool apps that surprise and delight mobile users—built by developers like you—are a huge part of the Android vision. In this presentation we will explore many examples of android.

The Android SDK provides the tools and APIs necessary to begin developing applications that run on Android-powered devices. Cool apps that surprise and delight mobile users—built by developers like you—are a huge part of the Android vision. Google has also participated in the Android Market by offering several applications for its services. These applications include Google Voice for the Google Voice service, Scoreboard for following sports, Sky Map for watching stars, Finance for their finance service, Maps Editor for their MyMaps service, Places Directory for their Local Search, Google Goggles that searches by image, and My Tracks, a jogging application. Android phones that include the 'Google Experience' also have Google Search, Google Calendar, Google Maps, Google Navigation and Gmail integrated. In this workshop we will explore many examples of android.

This workshop will provide clear understanding how to build cool applications using Android, which will surprise and delight mobile users. We will explore following areas of android application development:

• Android Architecture • Android Activities and intents • Explore application resources, Views, Widgets, and Layouts • Data and Storage APIs : SQLLite • Developing Cool Application and making it ready as a product • Mobile Development Process • Selling Your Android Application: Making Money



Visualizations for Code Metrics

close
Neal Ford

By Neal Ford

Judicious use of metrics improves the quality of your code. But interpreting metrics presents a challenge. You have a list of numbers for a project - what does it mean? And what does it tell me about the health of the project overall? This sessions shows how to produce visualizations for software metrics, making them easier to understand and more valuable. It covers metrics at the individual method level all the way up to the overall architecture of the application. This isn't just a talk about how some tools produce visualizations: this session shows you how to generate your own visualizations, allowing you to customize it to the level in information density that shows real value on your project. I show how to produce projected graphs from dependencies, heat-maps for cyclomatic complexity and code coverage, using XSLT to extract visual information from XML configuration documents, and others. Metrics can't help you if you can't understand them. By creating visualizations, it helps leverage metrics to make your code better.

Judicious use of metrics improves the quality of your code. But interpreting metrics presents a challenge. You have a list of numbers for a project - what does it mean? And what does it tell me about the health of the project overall? This sessions shows how to produce visualizations for software metrics, making them easier to understand and more valuable. It covers metrics at the individual method level all the way up to the overall architecture of the application. This isn't just a talk about how some tools produce visualizations: this session shows you how to generate your own visualizations, allowing you to customize it to the level in information density that shows real value on your project. I show how to produce projected graphs from dependencies, heat-maps for cyclomatic complexity and code coverage, using XSLT to extract visual information from XML configuration documents, and others. Metrics can't help you if you can't understand them. By creating visualizations, it helps leverage metrics to make your code better.



Evolving towards REST-based Enterprise Integration

close
Neal Ford

By Neal Ford

This talk describes an agile approach to architecture, and merges the current state-of-the-art thinking in both service oriented architectures(SOA) and web-based architectures like HTTP, REST, and hypermedia.

We're drowning in needless complexity in the enterprise architecture space: heavy, bloated tools, complex middleware, just-in-case architectural decisions, and vendor-itus. The side effect of all that complexity drives us further from our goals: architecture that is simple, free, supports business goals, loosely coupled, and evolvable. This session describes how to use web technologies (HTTP, REST, hypermedia, etc.) to implement robust, scalable enterprise architecture. This session shows a variety of different ways to attack this problem, with advantages and disadvantages for each, evolving towards the current state-of-the-art of REST-based architectures. This talk is based on original research and development done by ThoughtWorks, and represents the current state of the art in building truly scalable enterprise architectures. This topic combines the subjects of service oriented architecture with web technologies to create a hybrid providing you with the benefits of both approaches. You can build robust, scalable enterprise architecture that allows individual applications to evolve independently and rapidly. This talk describes how to make SOA suck less



Agile Engineering Practices

close
Neal Ford

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.

Most of the time when people talk about agile software development, they talk about project and planning practices but never mention actual development, as if development where an afterthought when writing software. This talk bills into the real details of how to do agile development. I discuss best practices like continuous integration, pair programming, how developers should interact with story cards, how to handle enterprise concerns like integration with other software packages, and a slew of other topics related to agile software development.

Prerequisite: Having worked in an organization that values bureaucracy more than individuals



Emergent Design

close
Neal Ford

By Neal Ford

Emergent design is a big topic in the agile architecture and design community. This session covers the theory behind emergent design and shows examples of how you can implement this important concept.

This session describes the current thinking about emergent design, discovering design in code. The hazard of Big Design Up Front in software is that you don't yet know what you don't know, and design decisions made too early are just speculations without facts. Emergent design techniques allow you to wait until the last responsible moment to make design decisions. This talk covers four areas: emergent design enablers, battling things that make emergent design hard, finding idiomatic patterns, and how to leverage the patterns you find. It includes both proactive (test-driven development) and reactive (refactoring, metrics, visualizations, tests) approaches to discovering design, and discusses the use of custom attributes, DSLs, and other techniques for utilizing them. The goal of this talk is to provide nomenclature, strategies, and techniques for allowing design to emerge from projects as they proceed, keeping you code in sync with the problem domain. This talk shows lots of examples of how to make this concept work in your environment.

Prerequisite: understanding of architectural and design concepts



JRuby in Depth

close
Neal Ford

By Neal Ford and Ola Bini

Like hamburger & fries and turkey & dressing, JRuby allows you to harness the awesome power of Ruby in your Java projects. This workshop describes the origins, capabilities, and limitations of JRuby, the 100% pure-Java implementation of the Ruby programming language. This workshop also demonstrates some areas where it makes sense to mixin Ruby and Java code: building swing applications, testing, and dynamic programming.

This workshop includes tons of examples, including side-by-side comparisons of Java and equivalent JRuby code. It also covers some more advanced topics like building domain specific languages, meta-programming (including real uses!), and more.



JRuby in Depth

close
Neal Ford

By Neal Ford and Ola Bini

Like hamburger & fries and turkey & dressing, JRuby allows you to harness the awesome power of Ruby in your Java projects. This workshop describes the origins, capabilities, and limitations of JRuby, the 100% pure-Java implementation of the Ruby programming language. This workshop also demonstrates some areas where it makes sense to mixin Ruby and Java code: building swing applications, testing, and dynamic programming.

This workshop includes tons of examples, including side-by-side comparisons of Java and equivalent JRuby code. It also covers some more advanced topics like building domain specific languages, meta-programming (including real uses!), and more.



iPad/iPhone Seminar - Part I

close
Matthew McCullough

By Matthew McCullough and Ben Ellingson

You're adept at Java. You've got a solid grasp of that ecosystem. But you keep hearing about iPhone this, iPad that. It worries you just a bit that you haven't yet spent the time to explore this new frontier. Cure that with a nearly Java-free intense four hour boot camp on the iPad. During this session, you'll use your UberConf-supplied device to get started coding on the XCode platform, learning the Objective-C language, testing, and deploying your apps.

No previous iPad ecosystem knowledge is assumed. Matthew McCullough and Ben Ellingson will take you from the ground up in this unique coding environment. With their hands on teaching style and one-on-one assistance, you'll explore what it takes to build and deploy an application for the iPhone and iPad devices. We'll start with a simple application that you'll code from line 1 to line 200, all the while testing it in the iPad simulator. Along the way, you'll also discover the Developer signup process and digital certificate setup required to push beta applications to the device. Finally, we will integrate an iPad app with data from a JSON web service.



Cryptography on the JVM: Boot Camp

close
Matthew McCullough

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.

In today's data-sensitive and news-sensationalizing world, don't become the next headline by an inadvertent release of private customer or company data. Secure your persisted, transmitted and in-memory data and learn the terminology you'll need to navigate the ecosystem of symmetric and public/private key cryptography.



Hadoop Workshop

close
Matthew McCullough

By Matthew McCullough

Moore's law has finally hit the wall and CPU speeds have actually decreased in the last few years. The industry is reacting with hardware with an ever-growing number of cores and software that can leverage "grids" of distributed, often commodity, computing resources. But how is a traditional Java developer supposed to easily take advantage of this revolution? The answer is the Apache Hadoop family of projects. Hadoop is a suite of Open Source APIs at the forefront of this grid computing revolution and is considered the absolute gold standard for the divide-and-conquer model of distributed problem crunching. The well-travelled Apache Hadoop framework is curently being leveraged in production by prominent names such as Yahoo, IBM, Amazon, Adobe, AOL, Facebook and Hulu just to name a few.

In this session, you'll start by learning the vocabulary unique to the distributed computing space. Next, we'll discover how to shape a problem and processing to fit the Hadoop MapReduce framework. We'll then examine the incredible auto-replicating, redundant and self-healing HDFS filesystem. Finally, we'll fire up several Hadoop nodes and watch our calculation process get devoured live by our Hadoop grid. At this talk's conclusion, you'll feel equipped to take on any massive data set and processing your employer can throw at you with absolute ease.



Hadoop Workshop

close
Matthew McCullough

By Matthew McCullough

Moore's law has finally hit the wall and CPU speeds have actually decreased in the last few years. The industry is reacting with hardware with an ever-growing number of cores and software that can leverage "grids" of distributed, often commodity, computing resources. But how is a traditional Java developer supposed to easily take advantage of this revolution? The answer is the Apache Hadoop family of projects. Hadoop is a suite of Open Source APIs at the forefront of this grid computing revolution and is considered the absolute gold standard for the divide-and-conquer model of distributed problem crunching. The well-travelled Apache Hadoop framework is curently being leveraged in production by prominent names such as Yahoo, IBM, Amazon, Adobe, AOL, Facebook and Hulu just to name a few.

In this session, you'll start by learning the vocabulary unique to the distributed computing space. Next, we'll discover how to shape a problem and processing to fit the Hadoop MapReduce framework. We'll then examine the incredible auto-replicating, redundant and self-healing HDFS filesystem. Finally, we'll fire up several Hadoop nodes and watch our calculation process get devoured live by our Hadoop grid. At this talk's conclusion, you'll feel equipped to take on any massive data set and processing your employer can throw at you with absolute ease.



iPad/iPhone Seminar - Part II

close
Matthew McCullough

By Matthew McCullough and Ben Ellingson

Workshop part II will focus on debugging. First, we will revisit deployment to iPad / iPhone devices, cover common application debugging techniques, writing unit tests, and debugging tools. We will also include time for you to ask questions and work through any issues you are having.

You'll will walk away with a complete understanding of the iPad ecosystem, including the coding, testing, deployment and web mashup processes. You'll be equipped to participate and even initiate your team's next iPad enabled application design and coding efforts.



Git Source Code Control Workshop

close
Matthew McCullough

By Matthew McCullough

You've heard about Git, Mercurial, Bazaar and the Distributed Version Control System revolution. In this deeply hands on session, we'll load Git on participants laptops, build repositories and share out pieces of work. We'll explore the optimized agile workflows that Git facilitates, building branches for each story card and merging with our team mates, even when a network isn't present. We'll clone an existing Subversion repository, work on it in a Git fashion, and push just the "good changes" back to Subversion, showcasing the incredibly polished interoperability of this radical source code control tool.

This will be a hands on session and requires attendees to bring a laptop (Windows, Linux, or Mac).



Git Source Code Control Workshop

close
Matthew McCullough

By Matthew McCullough

You've heard about Git, Mercurial, Bazaar and the Distributed Version Control System revolution. In this deeply hands on session, we'll load Git on participants laptops, build repositories and share out pieces of work. We'll explore the optimized agile workflows that Git facilitates, building branches for each story card and merging with our team mates, even when a network isn't present. We'll clone an existing Subversion repository, work on it in a Git fashion, and push just the "good changes" back to Subversion, showcasing the incredibly polished interoperability of this radical source code control tool.

This will be a hands on session and requires attendees to bring a laptop (Windows, Linux, or Mac).



iPad/iPhone Seminar - Part III

close
Matthew McCullough

By Matthew McCullough

Workshop part III will focus on design. The iPad isn't simply a large iPhone. The technology is pretty much the same, but a quick look at some of the new apps and you will see how cool this new device and software platform is. In this session, we will talk about Apple's Human Interface Guidelines and what's new on the iPad platform. We will also provide more time for you to ask questions and work through any issues you may be having.

This session will provide a better understanding of how you should design your iPad apps. We will also point you to the resources which will help you design great apps.



iBeans: The Simplest Service Integrations You've Ever Implemented

close
Matthew McCullough

By Matthew McCullough

No app is an island nowadays and your bleeding edge Java & JavaScript apps demand that you integrate with Facebook, Amazon, Gmail, Google Search, Twitter or S3 just to name a few. Make your next integration project a breeze by leveraging the successful work of others from the iBeans Central repository, or if necessary, simply author a new iBean and contribute it back for the benefit of all.

iBeans a new ultra-light service integration framework written in Java, but targeting both Java and JavaScript. It provides a centralized mechanism for community contributions of beans to the most commonly used services such as Twitter, Flickr, Gmail and more.

iBeans encourages the higher level programming at the level of integrating such web based services without worrying about the underlying protocols or communication mechanisms. Services are beautifully abstracted in the form of JavaBeans, with JavaScript capabilities added like a cherry on top of a confectionary masterpiece.

This talk wil demonstrate iBeans usage in a real world Java application and explore how easy it is to write and contribute a new bean to iBeans Central for the benefit of the community in true Open Source style.



Migrating to Maven 3.0

close
Matthew McCullough

By Matthew McCullough

Explore what's new on the cutting edge release of Maven, version 3.0. We'll explore the performance improvements, features that make debugging Maven issues easier, and changes to POMs that may require modifications to your build, but will result in more determinate build outputs.

Maven 3.0 has undergone major refactorings, and correspondingly, a battery of backwards compatibility tests to ensure a smooth transition from Maven 2.0. These refactorings prepare Maven for the next several years of development, including the separation of the POM file language from from the POM in-memory processor, which is already leading to Groovy, Ruby and YAML based POM file parsers.



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



Busy Java Developer's Guide to ParallelizationPatterns

close
Ted Neward

By Ted Neward

Getting the most out of your hardware historically was a question of optimizing native code to take advantage of CPU instructions, and setting the right optimization flags on the compiler. Then, when Java came around, it became a matter of simply allowing Hotspot to do its thing. But as the rise of multicore CPUs has made its presence felt in the developer mindspace, so has the need to start writing code in a more parallel/concurrent fashion. Unfortunately, this is an area that most Java developers have historically tried to avoid (like the Plague), so it represents a huge “black hole” for most of them.

In this presentation, we try to lift the cover of the pit over the demons of parallelization, and start exploring some concurrency/parallelization patterns, not with the intent of producing reusable code riffs, but with the intent of giving attendees a good grounding on different designs of parallel processing that apply to more than just Java.

Prerequisite: Busy Java Developer's Guide to Concurrency (Parts 1 and 2) or equivalent education/experience



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.



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.



Architect for Scale

close
Michael Nygard

By Michael Nygard

Is your system small, medium, large, or super-size? Is traffic on it's way up?

Architecture patterns and structures that work at one scale seldom work across all of them. A communication style that's appropriate for small websites will probably fail badly if you apply it to world-wide networks of computers. Likewise, structures that work for large-scale systems are probably too complex and expensive to be worth it for small sites.

In this talk, Michael will discuss the notion of "design envelopes" for architectures. He will explore several common scaling strategies and map them to different system scales.

During this session, Michael will present reference architectures for systems at a variety of scales. It's sometimes possible to scale smoothly from range to range, but it can be extremely disruptive if you don't plan for it.

Along the way, he'll also address the different dimensions of scalability problems: traffic, content, data volume, and operations.



High Performance Persistence with Redis

close
Michael Nygard

By Michael Nygard

Redis is one of the fresh crop of "NoSQL" storage solutions. It's a distributed key-value store that knows how to deal with data structures. Oh, and it happens to also be incredibly fast. Like, microseconds per write.

This session shows how to get Redis set up in standalone and replicated mode and how to start using it for persistence. It will also show some techniques to structure your data to achieve consistency without transactions.



When the Fur Flies: Dev and Ops Cooperation when the Worst Happens

close
Michael Nygard

By Michael Nygard

There's nothing like a crisis to remove artificial barriers. In this session, Michael will present an experience report about development and operations coming together after a failed launch.

Aside from the fun of sharing war stories and comparing scars, what can we learn about climbing out of a crater after the worst has already happened? Can we capture the special magic of a firefighting mission during more sedate times?



Design for Operations

close
Michael Nygard

By Michael Nygard

If your software fails in production, nobody will care how great the development project was, or how well the system passed QA. Production operations, the domain of your systems' least-appreciated stakeholders, is where the rubber meets the road. Come learn how to build your systems to thrive in Operations.

We will explore the most critical foundations for success in Operations: transparency, control, deployments, and configuration.

Along the way, we'll see some of the organizational dysfunction that prevents smooth, successful operations. You'll learn what you can do today to avoid these dysfunctions, even if you've inherited a legacy of distrust between Development and Operations.

If you don't want to wear a pager for the rest of your life, this session is for you.



DSLs in Scala: Internal and External

close
Michael Nygard

By Michael Nygard

We're no longer working in a single language. Programming today is about both consuming and creating languages.

We've all heard a lot about domain specific languages (DSLs). So much so, in fact, that it seems like more people are talking about it than doing it. In this session, Michael will present a real domain with familiar problems. He'll then demonstrate both an internal DSL and an external DSL that solve the same problem. Along the way, we'll cover fluent interfaces, composing multiple DSLs, and the very cool parser combinators.

If you've ever left a DSL talk wondering when we're ever going to get past the "coffee ordering DSL" or the "Waffle House breakfast DSL", then you will want to see this session.

This session walks through the creation of a domain model with an internal DSL based on a fluent interface in Scala. Although this is not an introduction to Scala, the necessary Scala concepts will be covered sufficiently for anyone to follow.

After demonstrating the domain and the internal DSL, Michael will use parser combinators to build a grammar in just a few lines of code. This grammar will lex and parse the input files, along with constructing domain objects for further use.

Prerequisite: None.



Stability Antipatterns

close
Michael Nygard

By Michael Nygard

In this workshop, you will learn how to create applications that survive the rigors of life in production. Too often, project teams aim to pass QA instead of aiming for success in production. Testing is not enough to prove that your software is ready for continuous availability in the corrosive environment of the Internet.

During this course, you will receive an understanding of the architecture and design patterns that can produce high availability in distributed, multithreaded systems such as those based on Java EE, .Net, or Ruby on Rails. You will also learn about the antipatterns that can sabotage your systems availability and capacity.



Stability Antipatterns

close
Michael Nygard

By Michael Nygard

In this workshop, you will learn how to create applications that survive the rigors of life in production. Too often, project teams aim to pass QA instead of aiming for success in production. Testing is not enough to prove that your software is ready for continuous availability in the corrosive environment of the Internet.

During this course, you will receive an understanding of the architecture and design patterns that can produce high availability in distributed, multithreaded systems such as those based on Java EE, .Net, or Ruby on Rails. You will also learn about the antipatterns that can sabotage your systems availability and capacity.



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



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



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.



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



Hacking - The Dark Arts

close
Ken Sipe

By Ken Sipe

A live Hacking demonstration exposing the tools and techniques used by Hackers.

A look at the growing space referred to as ethical hacking or penetration testing. We'll look at example attacks which include: Client-side exploits Sql-Injections Brute force attacks Man-in-the-middle attacks Key logging



Security Boundaries

close
Ken Sipe

By Ken Sipe

Security is a large concern in today's world of software development. Security is a multi-dimensional problem requiring skills at a number of different levels. This session is a security overview of a typical Java web development stack.

This session initiates a discussion in the following overlapping areas of security: - Java security - JEE security, which includes JAAS - Spring Security - Operating System security and it's roll in web security - Web Application security - Securing the wire with SSL - Key Management with keystore



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.



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.



RDFA : Weaving Richness and Meaning in the Web

close
Brian Sletten

By Brian Sletten

The human web is reasonably well in hand by now. We are getting pretty good at building systems that people find valuable and entertaining. We have not spent as much time concerned about our software friends. There is a ton a rich content available on the web that is too difficult to extract in automated ways using just XHTML, the meta tag and microformats. This talk will introduce you to some emerging technologies from the Semantic Web camp to enrich your web pages with useful information for both automated extraction and improved browsing experiences.

Meta tags and microformats are useful but will only get us so far. The Resource Description Framework (RDF) is the metadata substrate of the Semantic Web that will take us to the next level of machine-processability and the Web. It allows you to express fairly arbitrary relationships about people, places, things, and content in an open world way. It is trivial to mix and match terms, vocabularies, etc. and to have a rich expressive capability not bound by the limitations of the relational data model and XML schemas. GRDDL is a technology for generating RDF metadata from content on demand. This can include XML documents, XML-RPC requests, XHTML pages, etc. The content could include authorship information, geotagging, creative commons license information, the topic of the document, etc. RDFa allows us to be more explicit about the metadata by embedding actual RDF relationships in our content. With technologies no more complicated than the presentation markup we are already using, you can imbue any web tier with extra semantic specialsauce that will benefit your users as well as help link you into the emerging Web of data.



NetKernel: Making IT Matter Again

close
Brian Sletten

By Brian Sletten

The premise of Nicholas Carr's "Does IT Matter?" book was that if everyone uses the same tools, processes, products, etc., is there any competitive advantage to be had from the average IT organization?

NetKernel represents a fundamentally different approach to building systems. It takes what we like about Unix, REST and SOA and mixes it together. It inexplicably changes everything while allowing you to reuse existing code, services and libraries. Not only can it make building the kinds of systems you are building today easier, it does it more efficiently, with less code and a far more scalable runway to allow you to take advantage of the emerging multi-core, multi-CPU hardware that is coming our way.

This workshop will be a deeper dive into Resource-Oriented Computing with NetKernel. We will explore:

  • the resource model as it applies to general computing
  • the intersection of REST and the resource model
  • scaling your software without really trying
  • interacting with relational databases
  • orchestration around different service types
  • logically-layering applications for flexibility
  • advanced caching strategies
  • leveraging dynamic languages with the resource model
  • instant cloud support

It is rare that a technology comes along that is both revolutionary and lets you reuse what you already know. All it takes is a bit of different thinking and a little courage to try something new.



NetKernel: Making IT Matter Again

close
Brian Sletten

By Brian Sletten

The premise of Nicholas Carr's "Does IT Matter?" book was that if everyone uses the same tools, processes, products, etc., is there any competitive advantage to be had from the average IT organization?

NetKernel represents a fundamentally different approach to building systems. It takes what we like about Unix, REST and SOA and mixes it together. It inexplicably changes everything while allowing you to reuse existing code, services and libraries. Not only can it make building the kinds of systems you are building today easier, it does it more efficiently, with less code and a far more scalable runway to allow you to take advantage of the emerging multi-core, multi-CPU hardware that is coming our way.

This workshop will be a deeper dive into Resource-Oriented Computing with NetKernel. We will explore:

  • the resource model as it applies to general computing
  • the intersection of REST and the resource model
  • scaling your software without really trying
  • interacting with relational databases
  • orchestration around different service types
  • logically-layering applications for flexibility
  • advanced caching strategies
  • leveraging dynamic languages with the resource model
  • instant cloud support

It is rare that a technology comes along that is both revolutionary and lets you reuse what you already know. All it takes is a bit of different thinking and a little courage to try something new.



Semantic Web Workshop

close
Brian Sletten

By Brian Sletten

The Web is changing faster than you can imagine and it is going to continue to do so. Webs of Documents are giving way to machine-processable Webs of Information. We no longer care about data containers, we only care about data and how it connects to what we already know.

Perhaps the concepts of the Semantic Web initiative are new to you. Or perhaps you have been hearing for years how great technologies like RDF, SPARQL, SKOS and OWL are and have yet to see anything real come out of it.

Whether you are jazzed or jaded, this workshop will provide you with the understanding of a technological tidal wave that is heading in your direction.

In this workshop, we will:

  • Explain the Web and Web architecture at a deeper level
  • Apply Web and Semantic Web technologies in the Enterprise and make them work together
  • Integrate structured and unstructured information
  • Create good, long-lived logical names (URIs) for information and services
  • Use the Resource Description Framework (RDF) to integrate documents, services and databases
  • Use popular RDF vocabularies such as Dublin Core, FOAF, DOAP
  • Query RDF and non-RDF datastores with the SPARQL query language
  • Use the Simple Knowledge Organization System (SKOS) to represent taxonomies in RDF
  • Model and Do Inference with the Web Ontology Language (OWL)

Prerequisite: Semantic Web : The Future Now would be a useful introduction but is not required



Semantic Web Workshop

close
Brian Sletten

By Brian Sletten

The Web is changing faster than you can imagine and it is going to continue to do so. Webs of Documents are giving way to machine-processable Webs of Information. We no longer care about data containers, we only care about data and how it connects to what we already know.

Perhaps the concepts of the Semantic Web initiative are new to you. Or perhaps you have been hearing for years how great technologies like RDF, SPARQL, SKOS and OWL are and have yet to see anything real come out of it.

Whether you are jazzed or jaded, this workshop will provide you with the understanding of a technological tidal wave that is heading in your direction.

In this workshop, we will:

  • Explain the Web and Web architecture at a deeper level
  • Apply Web and Semantic Web technologies in the Enterprise and make them work together
  • Integrate structured and unstructured information
  • Create good, long-lived logical names (URIs) for information and services
  • Use the Resource Description Framework (RDF) to integrate documents, services and databases
  • Use popular RDF vocabularies such as Dublin Core, FOAF, DOAP
  • Query RDF and non-RDF datastores with the SPARQL query language
  • Use the Simple Knowledge Organization System (SKOS) to represent taxonomies in RDF
  • Model and Do Inference with the Web Ontology Language (OWL)

Prerequisite: Semantic Web : The Future Now would be a useful introduction but is not required



Transforming to Groovy

close
Venkat Subramaniam

By Venkat Subramaniam

Groovy is a elegant, dynamic, agile, OO language. I like to program in Groovy because it is fun and the code is concise and highly expressive. Writing code in a language is hardly about using its syntax, however. It is about using the right idioms. Come to this section to pick up some nice Groovy idioms.

In this presentation you will take some Java code that does common operations and transform it to idiomatic Groovy. You will participate in exploring various options as you help transform several examples. Each example is intended to hone a particular idiom or Groovy facility.

Prerequisite: Some knowledge of Groovy is helpful but not required.



Scala for Java Programmers

close
Venkat Subramaniam

By Venkat Subramaniam

Scala is a very powerful, statically typed, hybrid functional, pure OO language. The strengths of Scala is in its expressiveness, support for XML, powerful pattern matching, and elegant solution to concurrency. In this workshop, you will deep dive into understanding the strengths of Scala from a very practical point of view.

Be prepare to write quite a bit of code in Scala, not simply learning the syntax of the language, but gaining an understanding of the idiomatic differences and capabilities.



Scala for Java Programmers

close
Venkat Subramaniam

By Venkat Subramaniam

Scala is a very powerful, statically typed, hybrid functional, pure OO language. The strengths of Scala is in its expressiveness, support for XML, powerful pattern matching, and elegant solution to concurrency. In this workshop, you will deep dive into understanding the strengths of Scala from a very practical point of view.

Be prepare to write quite a bit of code in Scala, not simply learning the syntax of the language, but gaining an understanding of the idiomatic differences and capabilities.



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.



TDD Regular Code/Multithreaded Code!

close
Venkat Subramaniam

By Venkat Subramaniam

There are two reasons to do TDD. One is to ensure the code meets and continues to meet the expectations at the unit of code level. The second, and equally significant, reason is to drive the design of the code. Realizing the first benefit is rather mechanical and comes with rigor and discipline. Realizing the second benefit, however, requires quite some hard work and rethinking. It takes a bit of unlearning to achieve this goal.

In this workshop, rather than preaching the benefits of TDD, we will take an application and develop it using TDD. Developing regular code using TDD is already hard. To a number of us, driving Multithreaded code using TDD is simply unimaginable. Our exercise will help you learn ways to tackle quite easily what appears to be an unsurmountable task for both regular and multithreaded code.



TDD Regular Code/Multithreaded Code!

close
Venkat Subramaniam

By Venkat Subramaniam

There are two reasons to do TDD. One is to ensure the code meets and continues to meet the expectations at the unit of code level. The second, and equally significant, reason is to drive the design of the code. Realizing the first benefit is rather mechanical and comes with rigor and discipline. Realizing the second benefit, however, requires quite some hard work and rethinking. It takes a bit of unlearning to achieve this goal.

In this workshop, rather than preaching the benefits of TDD, we will take an application and develop it using TDD. Developing regular code using TDD is already hard. To a number of us, driving Multithreaded code using TDD is simply unimaginable. Our exercise will help you learn ways to tackle quite easily what appears to be an unsurmountable task for both regular and multithreaded code.



Gradle - A Better Way To Build

close
Hans Dockter

By Hans Dockter

Gradle allows you to describe your build using a rich, easily extendable build language based on Groovy. It provides compelling solutions for many of the big pain points that exist with current build systems. This session will be mostly driven by live demos. You will see how easy and elegant Gradle enables you to solve a broad range of requirements - over the full life cycle of typical and atypical Java builds.

Gradle pushes declarative builds to a new level. It allows users to provide there own declarative elements and to customize the behavior of the build-in ones. Thus enabling concise, expressive and maintainable builds. All this is build on a rich, flexible imperative layer of tasks.

With its Deep API Gradle allows you to hook in and customize every aspect of the build, be it configuration or execution behavior.

Gradle comes with many optimization strategies for building fast and yet reliable. It has a powerful support for multi-project builds and transitive dependency management. It allows to integrate with your existing Ant/Maven builds and your Ivy/Maven/Custom repositories.

The demos will span dependency management, test result analysis, code sharing, parallel testing, incremental builds, integrating with Ant/Maven and more.



Beauty and the Beast: Software-Design for Builds and Build Systems

close
Hans Dockter

By Hans Dockter

For our production code we apply a wealth of design values and principles. Currently this is rarely done for our builds. Yet the project automation domain, specially in the enterprise, is often at least as complex as the business domain.

The design of your build is heavily influenced and possibly constrained by the design of the build system you are using. The main focus of this talk is to evaluate those design forces of the build systems. Mostly with the help of two books: Refactoring by Martin Fowler and Domain Driven Design by Eric Evans.

The build systems under review are dramatically different and thus the design of the corresponding builds. We will talk about best practices for build design and how different build systems might support that or stand in the way, thus preventing expressive, maintainable and easy to use builds. Those differences should be a major factor when you are choosing a build system appropriate to your needs.

The speaker is the founder of Gradle. So there might be some bias :). But the design principles referred to are core principles fully accepted by the Java community. The way they are violated is astonishingly obvious once pointed out. Production code would not get away with this and neither should builds.



Beauty and the Beast: Software-Design for Builds and Build Systems

close
Hans Dockter

By Hans Dockter

For our production code we apply a wealth of design values and principles. Currently this is rarely done for our builds. Yet the project automation domain, specially in the enterprise, is often at least as complex as the business domain.

The design of your build is heavily influenced and possibly constrained by the design of the build system you are using. The main focus of this talk is to evaluate those design forces of the build systems. Mostly with the help of two books: Refactoring by Martin Fowler and Domain Driven Design by Eric Evans.

The build systems under review are dramatically different and thus the design of the corresponding builds. We will talk about best practices for build design and how different build systems might support that or stand in the way, thus preventing expressive, maintainable and easy to use builds. Those differences should be a major factor when you are choosing a build system appropriate to your needs.

The speaker is the founder of Gradle. So there might be some bias :). But the design principles referred to are core principles fully accepted by the Java community. The way they are violated is astonishingly obvious once pointed out. Production code would not get away with this and neither should builds.



Resource Oriented Architecture using REST

close
Alex Antonov

By Alex Antonov

A presentation explaining the building blocks necessary to build a distributed system using RESTful-style resource definition as well as benefits of using REST as they apply to testing, data caching, predictable resource discovery and transparent future system evolution

The audience will be walked through the principles of RESTful-style resource definition design as well as the pitfalls and the conventions to watch for and abide by. The ease and simplicity of writing service tests, mocking external service dependencies as well as extending the system by introducing various caching and data routing intermediaries will be discussed in great detail.

What you will get from this session: - Basic principles of Domain Driven Design - Exposing data and computational results as resources - Benefits of REST/HTTP in testing, caching and resource discovery - Using HTTP intermediaries (such as load balancers and proxies) to achieve overall system scalability and providing OLA's for governance and service isolation



Building RESTful ROA Architecture at Orbitz

close
Alex Antonov

By Alex Antonov

In the beginning Orbitz had a Jini based distributed system. The system design provided easy scalability and stability, but at the cost of tight coupling because of many shared modules and components, as well as Java serialization rules. In order to improve cohesion between individual services the decision has been made to migrate to a RESTful web services architecture. The new design is based on Google Protocol Buffers to define message formats and Spring/Spring MVC to handle client-server interaction. This resulted in a loosely coupled federation of services, each with its individual release and deployment schedule, which enabled more developer innovation and easier access to more data in a uniform fashion.

The audience will be shown how to deal with Google Protocol Buffers, how to define and consume the messages, how to implement the client and the server sides using Spring and Spring MVC.

What you will get from this session: - using Google Protocol Buffers to constitute language neutral contracts - using standard HTTP plumbing and intermediaries - designing a reverse proxy for request routing based on RESTful URLs - establishing OLAs for governance and service isolation - utilizing the power of Spring/Spring MVC to create client/server end-point implementations for handling the request/response



From Java to Ruby and Back

close
Alex Antonov

By Alex Antonov

A presentation demoing clients and services written in different languages (Java & Ruby), demonstrating technologies that enable distributed systems to span languages and provide an automated way of returning alternative data representations (like XML, JSON, Protobuf, etc.) for different clients, while using the same backing data.

The audience will be shown in detail how to design and build a 3-tiered system consisting of a data store, a mid-tier and a webapp, all using different languages for the implementation, a Google Protocol Buffers as a data format and a RESTful based means of communication between the systems.

The data store will be represented by a CouchDB storing JSON documents which would be consumed by a Java mid-tier processing application over HTTP using Protocol Buffers, as a data definition, sending the results to a Rails webapp, all without special handling and manual format transformation, relying purely on the Protocol Buffers ability to handle different format representations as well as variant structure on different ends.



Building a language on the JVM

close
Ola Bini

By Ola Bini

We are getting more and more languages - but sometimes the best solution is actually to build one yourself. Whether you choose to build a small DSL or a fullblown language, many of the techniques are the same.

This presentation will discuss the different aspects of implementing a language on top of the JVM. It will cover parsing, a bit about type systems, what the runtime support generally looks like, how you can create a compiler, and many more things.



JRuby for the win

close
Ola Bini

By Ola Bini

JRuby is an implementation of the Ruby language for the JVM. It gives full access to the Ruby language while running on top of Java. JRuby is the fastest and most fully-featured implementation of Ruby available.

This presentation will introduce JRuby, cover the reasons for its existance, some of the more useful tools, what's new and exciting in the JRuby world, and what new features JRuby 1.5 brings.



Challanges and Directions in Java Virtual Machines

close
Cliff Click

By Cliff Click

Available core counts are going up, up, up! Intel is shipping quad-core chips; Sun’s Rock has (effectively) 64 CPUs and Azul’s hardware nearly a thousand cores. How do we use all those cores effectively? The JVM proper can directly make use of a small number of cores (JIT compilation, profiling), and garbage collection can use about 20 percent more cores than the application is using to make garbage--but this hardly gets us to four cores. Application servers and transactional—J2EE/bean--applications scale well with thread pools to about 40 or 60 CPUs, and then internal locking starts to limit scaling. Unless your application has embarrassingly parallel data (e.g. data mining; risk analysis; or, heaven forbid, Fortran-style weather-prediction), how can you use more CPUs to get more performance? How do you debug the million-line concurrent program?

“Locking” paradigms (lock ranking, visual inspection) appear to be nearing the limits of program sizes that are understandable and maintainable. “Transactions,” the hot new academic solution to concurrent-programming woes, has its own unsolved issues (open nesting, “wait,” livelock, significant slowdowns without contention). Neither locks nor transactions provide compiler support for keeping the correct variables guarded by the correct synchronization, such as atomic sets. Application-specific programming, such as stream programming or graphics, is, well, application-specific. Tools (debuggers, static analyzers, profilers) and libraries (e.g. the JDK concurrency utilities) are necessary but not sufficient. Where is the general-purpose concurrent programming model? This session’s speaker claims that we need another revolution in thinking about programs.



The Art of (Java) Benchmarking

close
Cliff Click

By Cliff Click

People write toy Java benchmarks all the time. Nearly always they "get it wrong" -- wrong in the sense that the code they write doesn't measure what they think it does. Oh, it measures something all right -- just not what they want. This session presents some common benchmarking pitfalls, demonstrating pieces of real, bad (and usually really bad) benchmarks. The session is for any programmer who has tried to benchmark anything. It provides specific advice on how to benchmark, stumbling blocks to look out for, and real-world examples of how well-known benchmarks fail to actually measure what they intended to measure.

People write toy Java benchmarks all the time. Nearly always they "get it wrong" -- wrong in the sense that the code they write doesn't measure what they think it does. Oh, it measures something all right -- just not what they want. This session presents some common benchmarking pitfalls, demonstrating pieces of real, bad (and usually really bad) benchmarks such as the following: SpecJVM98 209_db isn't a DB test; it's a bad string-sort test and indirectly a measure of the size of your TLBs and caches. SpecJAppServer2004 is a test of your DB and network speed, not your JVM. SpecJBB2000 isn't a middleware test; it's a perfect young-gen-only garbage collection test. The session goes through some of the steps any programmer would go through to make a canned program run fast -- that is, it shows you how benchmarks get "spammed."

The session is for any programmer who has tried to benchmark anything. It provides specific advice on how to benchmark, stumbling blocks to look out for, and real-world examples of how well-known benchmarks fail to actually measure what they intended to measure.



Fast Bytecodes for Funny Languages

close
Cliff Click

By Cliff Click

There are several languages that target bytecodes and the JVM machine as their new "assembler," including Scala, Clojure, Jython, JRuby, the JavaScript programming language/Rhino, and JPC. This session takes a quick look at how well these languages sit on a JVM machine, what their performance is, where it goes, and why.

Some of the results are surprising: Clojure's STM ran a complex concurrent problem with 600 parallel worker threads with perfect scaling on an Azul box without modification. Some of the results are less surprising: fixnum/bignum math ops take a substantial toll on the benefit of entirely transparent integer math and a lack of tail-call optimization gives some languages fits. Some of the languages can get "to the metal" and sometimes performance takes a backseat to other concerns. This session, for non-Java platform JVM machine users, is a JVM machine's-eye-view of bytecodes, JITs, and code-gen and will give you insight into why a language is (or is not!) as fast as you might expect.



A Crash Course in Modern Hardware

close
Cliff Click

By Cliff Click

I walk through a tiny performance example on a modern out-of-order CPU, and basically show that (1) single-threaded performance is tapped out, (2) all the action is with multi-threaded programs and (3) the memory subsystem.

I discuss the Von Neumann architecture, CISC vs RISC, the rise of multicore, Instruction-Level Parallelism (ILP), pipelining, out-of-order dispatch, static vs dynamic ILP, performance impact of cache misses, memory performance, memory vs CPU caching, examples of memory/CPU cache interaction, and tips for improving performance.



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.



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.



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.



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.



Mastering Spring MVC 3

close
Keith Donald

By Keith Donald

A deep-dive into the latest capabilities of Spring MVC, Spring's foundational web application development platform.

Spring Web MVC is a popular web framework, and the foundation of Spring's Web stack. Version 3 introduces major new features, including support for annotated @Controllers, comprehensive REST support, convention-over-configuration, data binding, conversation scope, and declarative validation support. This presentation explores the ins-and-outs of these new features and shows you how to apply them.



Inside Spring Web Flow 3 Development

close
Keith Donald

By Keith Donald

A look inside the development of Spring Web Flow 3, the next-generation version of Spring's stateful controller framework for orchestrating multi-step user dialogs.

Spring Web Flow plugs into Spring MVC to allow you to control user interactions that require several requests into the server to complete. This session covers the project's history and architecture, and also takes a first-look inside Web Flow 3.0, the next-generation version under development. Web Flow's 3 latest capabilities, including a new Java-based @Flow programming model, will be covered.



Extreme Productivity with Roo

close
Keith Donald

By Keith Donald

A deep-dive into Spring Roo, Spring's breakthrough code generation technology with support for round-tripping.

Spring Roo, a new and innovative developer productivity tool, delivers outstanding productivity gains to any class of Java application, and in particular Java web applications built on the proven Spring stack. In seconds you can effortlessly add web capabilities to your enterprise applications, including RESTful MVC backends, Selenium-powered integration tests, Security, Web Flow, Ajax, and Flex. Join Keith Donald - founding member of the Spring Team - to discover more about these awesome productivity features.

Attendees will leave this session with a solid understanding of Spring Roo, how to use it, and how to extend it.



Developing Web Applications with Spring

close
Keith Donald

By Keith Donald

Summary: A three-hour, two-part workshop on building modern web applications with the Spring stack.

Detail: In part I, Keith will first provide a brief overview of what Spring offers web application developers. Then, from the ground up, he will take attendees through the process of designing and implementing a web application with the framework.

Attendees will not only learn the Spring feature set, they will learn to apply the features effectively. Whether you are new to Spring, or an experienced Java developer who has used Spring before, this workshop will help you grow as an application developer.

Part I topics covered: Spring Framework v3, MVC, "Open Web" stack of HTML/CSS/JavaScript, JSON, REST & resource-oriented architecture, progressive enhancement, best-of-breed development tools

Part II picks up where we left off by adding an integration layer to the application. This integration layer will allow the application to connect to other systems, as well as push messages to clients asynchronously. Securing the web application will also be addressed. Attendees will complete the session with a broad understanding of using Spring to solve enterprise integration problems.

Part II topics covered: Spring Integration, Ajax Polling/Comet, Spring Security, Open ID-based authentication, Common Enterprise Integration Patterns, best-of-breed development tools



Developing Web Applications with Spring

close
Keith Donald

By Keith Donald

Summary: A three-hour, two-part workshop on building modern web applications with the Spring stack.

Detail: In part I, Keith will first provide a brief overview of what Spring offers web application developers. Then, from the ground up, he will take attendees through the process of designing and implementing a web application with the framework.

Attendees will not only learn the Spring feature set, they will learn to apply the features effectively. Whether you are new to Spring, or an experienced Java developer who has used Spring before, this workshop will help you grow as an application developer.

Part I topics covered: Spring Framework v3, MVC, "Open Web" stack of HTML/CSS/JavaScript, JSON, REST & resource-oriented architecture, progressive enhancement, best-of-breed development tools

Part II picks up where we left off by adding an integration layer to the application. This integration layer will allow the application to connect to other systems, as well as push messages to clients asynchronously. Securing the web application will also be addressed. Attendees will complete the session with a broad understanding of using Spring to solve enterprise integration problems.

Part II topics covered: Spring Integration, Ajax Polling/Comet, Spring Security, Open ID-based authentication, Common Enterprise Integration Patterns, best-of-breed development tools



Java EE 6 & GlassFish v3: Paving the path for the future

close
Arun Gupta

By Arun Gupta

The Java EE 6 platform is an extreme makeover from the previous versions. It is developed as JSR 316 under the Java Community Process.

The Java EE 6 platform adds more power to the platform and yet make it more flexible so that it can be adopted to different flavors of an application. It breaks the "one size fits all" approach with Profiles and improves on the Java EE 5 developer productivity features. It enables extensibility by embracing open source libraries and frameworks such that they are treated as first class citizens of the platform.

Several new specifications such as Java Server Faces 2.0, Servlet 3.0, Java Persistence API 2.0, and Context and Dependency Injection 1.0 are included in the platform. All these specifications are implemented in GlassFish v3 that provides a light-weight, modular, and extensible platform for your Web applications.

This session provides an overview of Java EE 6 and GlassFish v3. Using multiple simple-to-understand samples it explains the value proposition provided by Java EE 6.



Getting the best of both worlds: OSGi & Java EE together

close
Arun Gupta

By Arun Gupta

OSGi defines a module system and service platform for the Java language. GlassFish is the Java EE 6 Reference Implementation and uses an OSGi kernel to create a light-weight and modular Application Server. There is a lot of activity in the Enterprise Expert Group of OSGi about use of OSGi in enterprise Java environment. GlassFish is a container for standard Java EE applications and also supports what is called a "hybrid application". A hybrid application is a Java EE application as well as an OSGi bundle. It allows application components such as Servlets, EJBs to take full advantage of:

  • Features such as modularity/dependency management, service dynamism, etc. provided by OSGi service platform.
  • Services such as transaction management, security, persistence, etc. offered by the Java EE platform.

This presentation will provide:

  • A short introduction to OSGi
  • Explain how OSGi is used in GlassFish to provide a modular and light-weight App server
  • Different ways to manage the OSGi runtime in GlassFish
  • Change the default Felix runtime in GlassFish to Equinox or Knopflerfish
  • Create a simple OSGi application using CLI and IDEs and deploy in GlassFish
  • Create a OSGi + Java EE hybrid application and show/discuss the benefits of such an application


Introduction to Functional Programming with Clojure

close
Stuart Halloway

By Stuart Halloway

Functional programming has many advantages. For starters:

  • Pure functions have no dependence on context, so they are easy to write, easy to test, easy to read. Most importantly, they are easy to combine.
  • Referential transparency makes substitution, caching, and lazy evaluation possible -- and simple.
  • Careful abstraction makes functions broadly reusable, in contrast with OO 'concretion' which aspires to encapsulation but mostly just protects your data from being reused.

To take full advantage of FP you have to think differently. In this session, you will learn how to reap the benefits above, by:

  • Programming with immutable values
  • Sharing data between persistent data structures
  • Recursing instead of looping
  • Using map, reduce, and into
  • Composing functions from the sequence library
  • Paying as you go with lazy data structures

Examples will be in Clojure, and will include a set of hands-on exercises to take home.



The Best of OO: Clojure Types and Protocols

close
Stuart Halloway

By Stuart Halloway

The best abstraction in OO is the interface: a pure specification that can the be implemented polymorphically by many different callees. Clojure's types and protocols generalize this idea to solve the expression problem. In this session you will learn:

  • What the expression problem is.
  • How the expression problem hurts your code every day, through wrappers, mixins, adapters, facades, open classes, and monkey patches.
  • How protocols solve the expression problem.
  • Ease of use matters: using protocols and types are as simple as classes and interfaces.
  • Performance matters too: protocols take advantage of the host environment's support for fast polymorphic dispatch.

Examples will include hands-on exercises for you to take home.



Clojure

close
Stuart Halloway

By Stuart Halloway

In recent years, the Java community has embraced a variety of new languages that target the JVM, but also offer productivity advantages over traditional Java coding. In this half-day session you will explore Clojure, a language with many compelling features;

  • Clojure provides all the low-ceremony goodness you know and love from dynamic languages such as Ruby and Python.
  • Clojure's sequence library turns the tables on OO, providing a powerful set of verbs that can work with a small, standard set of nouns.
  • Clojure is a Lisp and gracefully supports Lisp's signature feature: code as data.
  • Clojure's functional style and support for software transactional memory make it an appealing option for taking advantage of massively parallel hardware.
  • Clojure's datatypes and protocols generalize the best idea in OO (interfaces) to handle the expression problem. Say goodbye to wrappers, mixins, adapters, and monkey-patches.

Examples will include hands-on exercises during the session, and more for you to take home.



Clojure

close
Stuart Halloway

By Stuart Halloway

In recent years, the Java community has embraced a variety of new languages that target the JVM, but also offer productivity advantages over traditional Java coding. In this half-day session you will explore Clojure, a language with many compelling features;

  • Clojure provides all the low-ceremony goodness you know and love from dynamic languages such as Ruby and Python.
  • Clojure's sequence library turns the tables on OO, providing a powerful set of verbs that can work with a small, standard set of nouns.
  • Clojure is a Lisp and gracefully supports Lisp's signature feature: code as data.
  • Clojure's functional style and support for software transactional memory make it an appealing option for taking advantage of massively parallel hardware.
  • Clojure's datatypes and protocols generalize the best idea in OO (interfaces) to handle the expression problem. Say goodbye to wrappers, mixins, adapters, and monkey-patches.

Examples will include hands-on exercises during the session, and more for you to take home.



Agility as a Tool: Getting Ready to Iterate

close
David Hussman

By David Hussman

Many people simplistically apply agile recipes, assuming a one size fits all approach. This may lead to naive use beliefs like collocation breeds instant success. While sitting together always helps, it does not mean that people spontaneously collaborate to create sustainable value.

Instead of approaching agile methods like a recipe, this session will teach you to design agility that is a useful tool for your project community. We will cover practice selection ideas, tools for creating healthy development eco-systems and product discover tools. If you would like to improve the stickiness of your agility, stop in learn a pile of techniques to use before holding your first planning session.

Imagine you want to use agile methods and you’re looking for ideas from introduction to iteration, this is the path we will take. We start by will examining ideas for selecting which practices will improve your existing strengths and address your existing issues. From there, we will walk through growing product and customer knowledge, creating a collaborative work area and two levels of planning: planning to discover and planning to deliver.



Products and People over Process and Dogma

close
David Hussman

By David Hussman

The time has come to shift our focus away from process to products and people. 10 years into the agile movement, the fresh, lightweight process once created are gaining weight and often calcifying to a dangerous degree. Where meaningful and lasting agility thrives, agile practices are powerful tools but not the focus of daily discussion.

Real value flows as development agility augments design thinking to continually discover your product context: users, use and market. From design thinking to lean start-ups to the value of simple checklists, this talk will challenge you to stop focusing on improving your process and start focusing on improving your product. Come ready to think, question and rethink your use of agile practices.



Redesigning Agility: Incorporating Design Thinking

close
David Hussman

By David Hussman

Design tends to mean one thing to developers and another thing to designers. The later group are product designers and are not aware of the structure of the code.

The hipsters in the agile community are trying to blend product design into the process of coding and delivering software. This session discusses what to do after your agility is flowing, or post agilism: imagine you using agile methods successfully, what's next?

Starting with the state of state of agile methods today, we will discuss ways to incorporate discovery and design into the delivery vehicle provided by agile practices. You will find this session an excellent forum to discuss "what's next?" in a post agilist world.



Groovy Power Features

close
Paul King

By Paul King

Groovy is a dynamic language for the JVM; it’s like a super version of Java. For Java programmers, it offers a syntax that closely resembles (in some cases exactly resembles) Java, but offers many improvements that not only greatly simplify code but also provide an enriched environment with many productivity features. In many cases, such features are promised in Java versions 7 and later, but they are available today in Groovy.

Some of the power features of Groovy you’ll learn about are: • Leveraging Groovy’s features to write DSLs • Writing Web Service servers and clients in a few lines of code • Replacing Design Patterns with language features and/or libraries • Talking to the Polyglot world from Groovy: Scala, Clojure, Jython, JRuby, JavaScript and Jaskell • Harnessing constraint/logic and functional programming • Simple but powerful tests • Simplify how you write build tasks • Accessing Hibernate through GORM • Harnessing parallel processing • Leveraging Spring and OSGI

Prerequisite: This is an intermediate to advanced workshop. It assumes that attendees have some previous exposure to Groovy or are accomplished at Java.



Groovy Power Features

close
Paul King

By Paul King

Groovy is a dynamic language for the JVM; it’s like a super version of Java. For Java programmers, it offers a syntax that closely resembles (in some cases exactly resembles) Java, but offers many improvements that not only greatly simplify code but also provide an enriched environment with many productivity features. In many cases, such features are promised in Java versions 7 and later, but they are available today in Groovy.

Some of the power features of Groovy you’ll learn about are: • Leveraging Groovy’s features to write DSLs • Writing Web Service servers and clients in a few lines of code • Replacing Design Patterns with language features and/or libraries • Talking to the Polyglot world from Groovy: Scala, Clojure, Jython, JRuby, JavaScript and Jaskell • Harnessing constraint/logic and functional programming • Simple but powerful tests • Simplify how you write build tasks • Accessing Hibernate through GORM • Harnessing parallel processing • Leveraging Spring and OSGI

Prerequisite: This is an intermediate to advanced workshop. It assumes that attendees have some previous exposure to Groovy or are accomplished at Java.



Dynamic Languages Practices

close
Paul King

By Paul King

Developer practices for traditional and agile Java development are well understood and documented. But dynamic languages (Groovy, Ruby, and others) change the ground rules. Many of the common practices, refactoring techniques, and design patterns we have been taught either no longer apply or should be applied differently and some new techniques also come into play.

In this talk, we'll relearn practices needed for dynamic languages. Along the way we will look at typing, design patterns, refactoring, functional style, SOLID principles revisited and more.



Agile Tools - Taking Your Agile Practices To The Next Level

close
Paul King

By Paul King

Tools and practices as subscribed by the XP methodology are reasonably well known and used by the majority of agile project teams. As agile teams become more mature, so does their thirst for tools to push them to the next level of productivity.

In this talk, we will walk through a number of project tools used by some teams we work with. In some cases, we will explain how we hacked tools that you may already be using to make them more efficient or useful. In other cases, we’ll describe new tools designed by teams we have been working with who are trying to move to the next level.

  • Lightweight storycard tools - Hacking tools like Jira + GreenHopper and XPlanner
  • Collaboration tools - getting the most from tools like Confluence and Sharepoint
  • Continuous Integration tools - using Hudson for build and environment management, using Scoreboard for visual and audible monitoring
  • Testing tools - using WebTest, Groovy and DSLs to take testing to the next level
  • Development Environments - testing your development environment, keeping development environments consistent, scripting your machine builds
  • Deployment tools - using tools such as Tableaux, testing your deployment scripts
  • Development tools - hacking your IDE, plugins, visualising your version control system
  • Monitoring tools - live dashboards for better understanding characteristics of your production systems in real time
  • Tools backlash - examples where computerised tools failed us and we reverted to other means


XML and Web Services with Groovy

close
Paul King

By Paul King

Groovy provides excellent facilities for parsing and creating XML. As well as providing syntactic sugar on top of traditional Java-based parsing approaches (e.g. SAX, DOM, StAX), it has its own XmlParser and XmlSlurper libraries which support XPath-like expressions at the object level (akin to LINQ in the .Net world). In addition, Groovy's markup builders provide an elegant and efficient way to create and modify XML. Groovy also has various options available for SOAP and RESTful web services. We'll examine the most popular of these.

We'll cover: * Reading, creating and updating XML using various approaches including the pros and cons of the various parsers and markup builders * dealing with XML namespaces and XPath * using other XML frameworks: XOM, Dom4j, JDom * integrating with XSLT, XQuery and validators * treating non-XML like XML * GroovySOAP, GroovyWS and Spring web services * JAXB, XmlBeans, CXF and Axis2 for SOAP web services * XML-RPC and RESTful options, RSS, ATOM * trade-offs using Apache Xerces or with native XML support on 1.4 through to 1.7 JVMs * Testing Web services with SoapUI * A quick look at Groovy integration in common XML/web-service tools * Groovy use in web service related products including ESBs and SOA frameworks



Grails: Bringing Radical Productivity to the JVM Part I

close
Dave Klein

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.

Rather than try to learn Grails feature by feature, we’ll let it unfold as we build the application. We’ll begin with a simple application structure that runs right out of the box, then we’ll gradually build our application while building our knowledge of Grails. Bring your laptop and be ready to code.

We will be using Grails 1.3.5 for the exercises.



Grails: Bringing Radical Productivity to the JVM Part I

close
Dave Klein

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.

Rather than try to learn Grails feature by feature, we’ll let it unfold as we build the application. We’ll begin with a simple application structure that runs right out of the box, then we’ll gradually build our application while building our knowledge of Grails. Bring your laptop and be ready to code.

We will be using Grails 1.3.5 for the exercises.



Grails Integration Strategies

close
Dave Klein

By Dave Klein

It's amazing how quickly one can build web applications with Grails in a greenfield environment, but most of us do not have that luxury. We have existing infrastructure and applications that we have to maintain and extend. We have legacy databases (or legacy database administrators) to deal with. Does this mean we cannot benefit from the magic of Grails? No way! The ease of use and productivity of Grails is matched by its power and flexibility. In this session we will discuss some of the ways that Grails can be integrated with the enterprise; EJB/JSF applications, Spring/Hibernate, legacy databases, and even non-Java applications.

Some of the strategies we will cover include: - Integrating with existing Spring MVC applications - JSF Integration with IceFaces - Communicating enterprise-wide with Web Services - Calling EJB session beans from a Grail application - Using Grails' ORM mapping to access legacy databases - Accessing JNDI resources from Grails - Using AJAX to call Grails' services from any web page



Patterns of Modular Architecture

close
Kirk Knoernschild

By Kirk Knoernschild

Attempts to architect more flexible software often results in the opposite - brittle software fraught with complexity. Something is missing. Complexity is the beast we must tame, and modularity is part of the answer. While modularity is not a new concept, until recently, major platform support for modularity has been lacking.

In this session, we deep dive into the technologies providing support for modularity on the Java platform, and introduce modularity patterns that will help you design and build more adaptive software that can accommodate change. The modularity patterns discussed will help you design more modular software today, while preparing for the impending support for modularity on major platforms. Come learn, and contribute, in discovering new ways that large software systems can be organized to increase flexibility, reusability, maintainability, extensibility, and testability. Numerous examples illustrating the modularity patterns will be shown.



Turtles and Architecture

close
Kirk Knoernschild

By Kirk Knoernschild

A little old lady once challenged a well-known scientist’s explanation on the structure of the universe, countering that the world is really a flat plate supported on the back of a giant tortoise. The scientist rebutted the little old lady’s challenge with one of his own by asking what the tortoise was standing on. The little old lady’s sly reply was that it’s, “turtles all the way down.” So too is software architecture “turtles all the way down”.

In this session, we cover a broad range of topics that include challenging traditional practices of software architecture, examining what it takes to bring down the ivory tower, probing the paradoxical aspects of architecture’s goal, and investigating the inextricable link between temporal decisions and structural flexibility. From the highest level applications and services to the code that exists in the bowels of the system, and everything in between, we explore how an effective software architecture must be turtles all the way down. In the end, we will all have gained deep insight to the value of agile architecture.



An in depth look at Apache Wicket

close
Andrew Lombardi

By Andrew Lombardi

The model supplied by Java Web Frameworks is broken. As software engineers break away from the shackles of Struts and the false promises of JSF, a new model based on object oriented programming and a clean separation of concerns has emerged with Apache Wicket. The framework has a simple component hierarchy allowing for reusability without pain.

This session looks at the core aspects that Wicket provides. Walk through the basic components and concepts and peer into an example app built using Wicket. Get insights into the differences between it and two other popular Java frameworks: JSF and GWT. Learn how Wicket embraces the object oriented concepts you haven't been able to use in web frameworks in the past, and have fun in the process.



Hands on with Apache Wicket

close
Andrew Lombardi

By Andrew Lombardi

Apache Wicket injects fun back into your web application development. The in-depth look went over the components and concepts of Wicket while showing the clear alternative that it provides. Our advanced talk took you through the simple process of interactivity using Wicket's AJAX support and proved that reuse while often promised with other frameworks, is a reality here.

In this hands on, we'll take what was learned in the previous two sessions, and build our own application. Given a project requirement which will be provided, build out a web application in record time using simply Java and HTML. Find out how simple it is to introduce interactivity with Wicket's AJAX support, jazz up your boring forms, and integrate any necessary third party libraries: Java or Javascript, with ease. After this hands on session you'll feel equipped to build out any project in record time using everything learned.



Hands on with Apache Wicket

close
Andrew Lombardi

By Andrew Lombardi

Apache Wicket injects fun back into your web application development. The in-depth look went over the components and concepts of Wicket while showing the clear alternative that it provides. Our advanced talk took you through the simple process of interactivity using Wicket's AJAX support and proved that reuse while often promised with other frameworks, is a reality here.

In this hands on, we'll take what was learned in the previous two sessions, and build our own application. Given a project requirement which will be provided, build out a web application in record time using simply Java and HTML. Find out how simple it is to introduce interactivity with Wicket's AJAX support, jazz up your boring forms, and integrate any necessary third party libraries: Java or Javascript, with ease. After this hands on session you'll feel equipped to build out any project in record time using everything learned.



Solr - Case Study

close
Eric Pugh

By Eric Pugh

So you've decided that you need great search, and Solr is going to be the solution? Well implementing a successful search solution based on Solr is a lot more then just downloading some code and firing it up, although Solr does pass the 15 minute test with flying colors!

In this case study we'll look at the various pitfalls and challenges involved in migrating a content driven site from Lucene to Solr for the nations fourth largest retailer. We'll look at some of the decisions we made, from technical, to networking, to operational, and how they impacted the final solution.

You'll leave this session know what challenges await a successful migration effort, and what questions to ask to make sure you are successful.

TBA2



Solr

close
Eric Pugh

By Eric Pugh

So you're building a website and want a terrific search experience for your users. Do what your database can't: faceted navigation, result highlighting, fuzzy queries, ranked scoring, spell correction, and more.

Solr, the open-source enterprise search server is the answer. Solr bridges the technology divide between databases and document/web search engines (e.g. Google). Each has its uses but do not overlap.

Chances are you have some structured data, probably in a database, and perhaps some related text documents. When you bring this data into Solr, you'll be able to deliver amazing features. Users will be able to navigate search results by filtering on aggregated attributes (so- called “faceted search”). Furthermore, various features like spell- correcting, auto-completing of search text, boosting records based on various rules, become possible. Solr does not tie you to a particular programming language or computing platform. And whether you have a thousand records or millions and many requests per second, Solr can scale to meet your performance needs. Furthermore, as an open-source solution, Solr doesn't ask you for more money when you want more out of it.

You'll lean the basics of getting started with Solr, and an understanding of what solutions are available to simplifying adding great search to your site!

TBA



Solr

close
Eric Pugh

By Eric Pugh

So you're building a website and want a terrific search experience for your users. Do what your database can't: faceted navigation, result highlighting, fuzzy queries, ranked scoring, spell correction, and more.

Solr, the open-source enterprise search server is the answer. Solr bridges the technology divide between databases and document/web search engines (e.g. Google). Each has its uses but do not overlap.

Chances are you have some structured data, probably in a database, and perhaps some related text documents. When you bring this data into Solr, you'll be able to deliver amazing features. Users will be able to navigate search results by filtering on aggregated attributes (so- called “faceted search”). Furthermore, various features like spell- correcting, auto-completing of search text, boosting records based on various rules, become possible. Solr does not tie you to a particular programming language or computing platform. And whether you have a thousand records or millions and many requests per second, Solr can scale to meet your performance needs. Furthermore, as an open-source solution, Solr doesn't ask you for more money when you want more out of it.

You'll lean the basics of getting started with Solr, and an understanding of what solutions are available to simplifying adding great search to your site!

TBA



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.



Continuous Testing on the JVM

close
Ben Rady

By Ben Rady

Continuous Testing (CT) is a developer practice that shortens the feedback loop established by Test Driven Development. It gives you near instant feedback about the correctness of your code, and helps you find bugs as quickly as syntax errors.

This session will cover how the practice of CT, its benefits, and its limitations. We will also show several demos of the practice using various continuous testing tools, and examine how these tools can be integrated with existing systems and their tests.



Iteration-less, Value-Based Planning

close
Ben Rady

By Ben Rady

One of the hallmarks of a healthy Agile team is its ability to introspect and adapt. Many mature Agile teams have started to experiment with iteration-less development, in which releases occur as each new feature or story is completed. This practice allows for more frequent releases and smaller batch sizes, but can create problems when teams are forced to re-evaluate how they plan. In addition, the technical practices necessary to support this style of development are difficult to master, and some teams find themselves releasing more often at the expense of quality. I

In this session, we'll examine the benefits and common pitfalls of interation-less, value based planning, and walk through a simulated development cycle to give audience members a "feel" of the differences with more traditional Agile planning practices.



BDD with Cucumber Workshop (Bring A Laptop)

close
Paul Rayner

By Paul Rayner

Behavior-Driven Development (BDD) employs the approach of specification by example. Cucumber is such an amazing BDD tool because it’s so good at mapping stories and acceptance criteria to automated functional tests. This is a hands-on workshop using Cucumber-JVM that will have you writing and automating acceptance tests on your own laptop by the conclusion of the session.

This workshop will cover:

  • Building quality in
  • Understanding the place of BDD - The agile testing matrix.
  • Why test automation?
  • Build the right product using specification by example
  • The need for Ubiquitous Language
  • Writing scenarios with Cucumber
  • Using Cucumber to test web applications

This is a hands-on 90 minute workshop with Cucumber-JVM using Java, you will need a laptop running the JDK and a text editor (doesn't have to be an IDE). Class tools, materials and code exercises will be provided.



BDD with Cucumber Workshop (Bring A Laptop)

close
Paul Rayner

By Paul Rayner

Behavior-Driven Development (BDD) employs the approach of specification by example. Cucumber is such an amazing BDD tool because it’s so good at mapping stories and acceptance criteria to automated functional tests. This is a hands-on workshop using Cucumber-JVM that will have you writing and automating acceptance tests on your own laptop by the conclusion of the session.

This workshop will cover:

  • Building quality in
  • Understanding the place of BDD - The agile testing matrix.
  • Why test automation?
  • Build the right product using specification by example
  • The need for Ubiquitous Language
  • Writing scenarios with Cucumber
  • Using Cucumber to test web applications

This is a hands-on 90 minute workshop with Cucumber-JVM using Java, you will need a laptop running the JDK and a text editor (doesn't have to be an IDE). Class tools, materials and code exercises will be provided.



Hydras and Hypermedia

close
Ian Robinson

By Ian Robinson

Do you know what your enterprise apps get up to in their time off? Fighting fantasy, pick-your-path, hypermedia-driven, RESTful Web application adventures – of course.

With techniques drawn from the forthcoming O'Reilly book REST in Practice, this session challenges the notion that REST is suitable only for simple CRUD-based data services, suggesting instead that the Web’s architecture provides everything we need to model and implement sophisticated business processes in Web-based applications.

In this speculative dungeon delve I show how hypermedia-driven Web applications implement rich workflows. In the course of the session we'll tackle the many-headed Hydra of HATEOAS, the "Hypermedia as the Engine of Application State" monster; level up through the Web services maturity heuristic; and meet the dwarves with grudges. On the way, we'll learn how to model business processes as domain application protocols, implement them in terms of resource lifecycles, and advertise them using HTTP idioms, media types and link relation values.

Prerequisite: This talk is suitable for distributed systems developers and architects, and anyone curious about REST's place in the enterprise. It assumes a familiarity with HTTP and Web application/service development.



The Counterintuitive Web

close
Ian Robinson

By Ian Robinson

The Web doesn't care for your finely-honed application architecture principles - for your orthodox tell-don't-ask, information hiding dictums, separated concerns, and guaranteed and reliable delivery strategies. It's an irresponsible place, where exposing your data, polling for results and making your errors the client's problem are considered acceptable behaviour. If it wasn't so successful, it'd be dismissed as an architectural clown.

But despite its disregard for polite architectural society, the Web consistently beats your enterprise application efforts - and all at massive scale. It's time to find out why.

Prerequisite: This talk is suitable for distributed systems developers and architects, and anyone curious about the Web's place in the enterprise.



Business Architecture Foundations of IT

close
Ian Robinson

By Ian Robinson

Many organisations today are frustrated by success: their rapid, ad hoc growth has resulted in a "tube map" systems estate that is costly to operate, and which inhibits business agility.

In this talk, I show how an organisation can take its first steps to resolve this impasse by teasing apart strategy and execution. I discuss how our models of what the business does and what it's trying to achieve influence the progress of large software initiatives, and describe a number of practices and activities that together create a useful representation of a firm's operating model - one that can be used to identify, prioritise and plan strategic IT investments, and guide the evolution of the systems estate in an incremental, sustainable fashion.

This talk is all about what happens before the first line of code is written, about how we can create the foundations for success. It draws on recent experience with clients from a range of industries, including communications and media, entertainment, financial services, and oil and gas. It is of interest to business and technology leaders alike.



Successful Software Management: 17 Lessons Learned

close
Johanna Rothman

By Johanna Rothman

Many software managers came to management through the technical ranks. Although they may have had plenty of technical training and mentoring, they frequently have to learn management skills the hard way, through trial and error. Johanna will describe some technical management tips and tricks learned through trial and error, focusing on software managers and their particular issues.

You'll learn about a manager's job, how to create an effective work environment, and how you can help people do their best work.

This presentation is good for agile and non-agile managers.



Manage Your Project Portfolio: A Lean and Agile Approach

close
Johanna Rothman

By Johanna Rothman

Feel as if you can't get anything done? More projects than time to do them? Crises out the wazoo? Then it's time to consider another approach: managing your project portfolio. You can organize your projects and and evaluate them without getting buried under a mountain of statistics.

Johanna will discuss how to collect all your work, decide which projects you should do first, second—and never. You’ll see how lean and agile approaches fit managing the project portfolio and how they make it easy. We’ll discuss how to tie your work to your organization’s mission and show your board, your managers, and your staff what you can accomplish and when. You’ll get a better view of the work you have, and learn how to make those difficult decisions, ensuring that all your strength is focused where it needs to be.



Agile Program Management: Collaborating Across the Organization

close
Johanna Rothman

By Johanna Rothman

Have you ever waited weeks for one piece of functionality so you could release a large project? Have you been in the situation where the software is waiting for the hardware? Or, where the database admin held up the entire release because his work wasn’t coordinated with the feature-based teams?

Program management is the art of coordinating several sub-projects to a common objective. Until the parts are assembled into the whole, the parts have no value to the organization.

Agile approaches help manage risk for projects, and we can scale agile approaches to programs.

In this session, we will discuss several options for how to create a program and run it in an agile way. We’ll examine how to report and obtain status, how to create and maintain a coherent architecture, and how to coordinate teams who are focused on their sub-project deliverables to create an overall deliverable for the organization. We’ll examine the issues of how to organize the teams, synchronize iterations, and know when you are ready to release.

Whether you work in an organization that uses agile methods or more traditional approaches, you can learn new ideas about managing programs.



Coaching as a Two-Way Relationship

close
Johanna Rothman

By Johanna Rothman

Many of us have experienced sports coaches, where they helped us stretch for the crawl, turn in dance, or catch a ball. But sports coaching tends to be just one kind of coaching—and not necessarily the kinds of coaching you need to provide or hear at work.

Coaching is one of the most important--and most difficult--responsibilities of leaders. Too often, people struggle and fail when it comes to coaching others. Coaches may try to impose their style on someone else for whom it doesn’t fit. Some coaches try to transfer “best practices” regardless of how well they fit the organization. Other coaches talk too much.

Coaching is a two-way relationship between a coach and the coachee. But not all the learning is on the coachee’s side. If a coach is not learning as he or she proceeds with the coaching, the coach shortchanges the coachee.

We will explore how to recognize when you are the right coach--and when you’re not. We will explore multiple coaching techniques so you can select the ones that most fit you, the other person, and the context. We will practice coaching in several ways and see which ones you prefer, and which ones you might need to practice more. And we’ll see how to learn as you coach.



Coaching as a Two-Way Relationship

close
Johanna Rothman

By Johanna Rothman

Many of us have experienced sports coaches, where they helped us stretch for the crawl, turn in dance, or catch a ball. But sports coaching tends to be just one kind of coaching—and not necessarily the kinds of coaching you need to provide or hear at work.

Coaching is one of the most important--and most difficult--responsibilities of leaders. Too often, people struggle and fail when it comes to coaching others. Coaches may try to impose their style on someone else for whom it doesn’t fit. Some coaches try to transfer “best practices” regardless of how well they fit the organization. Other coaches talk too much.

Coaching is a two-way relationship between a coach and the coachee. But not all the learning is on the coachee’s side. If a coach is not learning as he or she proceeds with the coaching, the coach shortchanges the coachee.

We will explore how to recognize when you are the right coach--and when you’re not. We will explore multiple coaching techniques so you can select the ones that most fit you, the other person, and the context. We will practice coaching in several ways and see which ones you prefer, and which ones you might need to practice more. And we’ll see how to learn as you coach.



End-to-End Performance Optimization

close
Aleksandar Seovic

By Aleksandar Seovic

Performance matters. If your web site or application is unresponsive, users will either go to competitor’s site or hate the application they are forced to use.

In this session we will discuss various performance optimization techniques you can use to improve performance of your web applications and ensure that your users are happy. We will cover the whole architecture stack by discussing not only how to optimize server-side code and persistence layer, but how to optimize the front end as well.



Performance and Scalability Revisited: In-Memory Data Grids

close
Aleksandar Seovic

By Aleksandar Seovic

Building scalable, highly-available applications that perform well is not an easy task. These features cannot be simply “bolted” onto an existing application – they have to be architected into it. Unfortunately, the things we need to do to achieve them are often in conflict with each other, and finding the right balance is crucial.

In this session we will discuss why scaling web applications is difficult and will look at some of solutions we have come up with in the past to deal with the issues involved. We will then look at how in-memory data grids can make our jobs easier by providing a solid architectural foundation to build our applications on top of.

If you are new to in-memory data grids, you are guaranteed to leave the presentation eager to learn more. However, even if you are already using one you will likely walk out with a few ideas on how to improve performance and scalability of your applications.



Automated deployment with Maven and friends - going the whole nine yards

close
John Smart

By John Smart

Automating your build process with Continuous Integration is certainly a great idea, but why stop there? Why not go the whole nine yards and automate the deployment process as well? Staging and production deployments are typically more complicated and more involved than a simple development deployment, but doing them by hand can be time-consuming, tricky and error-prone.

Indeed, turning your staging and production deployments into a one-click affair has a lot going for it."



Zen and the Art of Build Script Maintenance

close
John Smart

By John Smart

Build scripts are an essential art in any software project. And yet they are so often fragile, brittle and unportable things, hard to understand and harder to maintain. In this talk, we cover what constitutes a good build script, and look at a few of the essential rules in writing one.

We will look at general techniques that are applicable to any build scripting technology, as well as some technology-specific tips for Ant and Maven.



Coding Dojo with John Smart

close
John Smart

By John Smart

A Coding Dojo is a place where programmers come to improve their skills, by following a pattern similar to the martial arts dojo. Participants meet for at a pre-arranged time in a room that has one computer attached to a screen. The aim of the exercise will be to add features to an existing (working) web application, using a variety of technologies, such as Hibernate, JUnit 4, JWebUnit, Selenium, easyb and more. Participants will take turns to code, using pair programming and TDD.

During the session, the group spends a pre-set amount of time developing a solution to the challenge. At the end of the session the code is discarded (often it is archived for future reference and study). The amount of time spent on the problem is fixed. Regardless of the state of the solution, when the time expires, the session is done.



Continuous Integration - Hudson

close
John Smart

By John Smart

Continuous Integration is a fundamental best practice of modern software development. In this workshop, you will learn how to set up an effective Continuous Integration environment using Hudson, a popular open source Continuous Integration tool.

You will learn how to reduce integration issues, improve code quality, and improve communication and collaboration between team members. You will also learn how Continuous Integration can act as a communications hub for your development team.



Continuous Integration - Hudson

close
John Smart

By John Smart

Continuous Integration is a fundamental best practice of modern software development. In this workshop, you will learn how to set up an effective Continuous Integration environment using Hudson, a popular open source Continuous Integration tool.

You will learn how to reduce integration issues, improve code quality, and improve communication and collaboration between team members. You will also learn how Continuous Integration can act as a communications hub for your development team.



Developing a Complex External DSL

close
Vaughn Vernon

By Vaughn Vernon

The use of a domain-specific language, or DSL, is becoming a realistic and even necessary solution for software developers on all sorts of projects. You've heard about DSLs, and you may know that DSLs are divided into a few different styles, internal and external. But what is an internal DSL and external DSL? When would you decide to use one or the other? And, primarily, how would you go about developing a complex external DSL? This presentation answers these questions, with a focus on developing a complex external DSL.

Learn about the important distinction between internal DSLs and external DSLs and why you would use one or the other, or both. Following this basic foundation, details on the development of a complex external DSL are presented. Covered are subjects such as, how complex might a language become and how complexity is managed; conceptualizing and designing a language syntax; understanding, designing, and developing the metamodel; defining a multi-model parser; understanding, designing, and developing the output artifact generator.



Implementing Domain-Driven Designs

close
Vaughn Vernon

By Vaughn Vernon

Eric Evans' masterful book, Domain-Driven Design, is deep in theory and pattern language, but light on implementation guidance. With so much to offer, DDD should be put to use by many more teams seeking to tackle complexity in the heart of their software systems. However, without clear examples of how behavior-rich domain model implementations are achieved, many who could benefit greatly, instead shy away. Here's your chance to grasp DDD as Vaughn shares his experience through three practical example domain models implemented in Java.

Gain the insight you need to practice domain-driven design on your projects. Uses of patterns for strategic design include Bounded Context with its Ubiquitous Language, Context Map, Anticorruption Layer, Open Host System, and Published Language. The tactical patterns used for core model implementation include Modules, Value Objects, Entities, Aggregates, Services, Events, Factories, and Repositories backed by persistence mapping techniques. Integration between multiple Bounded Contexts is also demonstrated. Learn methods for managing aggregate boundaries, complexity, and correctness from the inside using Tell-Don't-Ask, Law of Demeter, Command-Query Separation, command-based editing models, validating domain objects, and business rules execution.



The Domain-Driven Design Metamodel

close
Vaughn Vernon

By Vaughn Vernon

Is there a metamodel behind domain-driven design? Is it possible to blend a complex external DSL and the concepts of domain-driven design patterns to produce a tool to rapidly implement advanced domain models that strictly adhere to Eric Evans' DDD pattern language? Absolutely, and Vaughn demonstrates how this has been achieved and why the repeatable method is important to you.

Follow along with this presentation to find out how you can design a complex external DSL to realize advanced application code generation that produces error free results. Using the patterns of domain-driven design as his requirements, Vaughn shows you how a DDD-based language model and metamodel are developed. Then when the DDD-based language source code is parsed and translated, see the resulting flawless code and configuration of a Bounded Context's core domain model appear. Use similar techniques to accomplish far-reaching goals of problem domain abstraction and zero-defect component generation. Unless you have in-depth knowledge of domain-driven design and complex external DSLs, it would be helpful to attend Vaughn's previous two presentations.






Blogs

Johanna Rothman

Devs in the ‘Ditch Slides Posted

Posted By: Johanna Rothman on May. 21, 2013

I gave a talk at Devs in the ‘Ditch last week when I was in London. I posted the slides on slideshare: Overcoming Three Pitfalls of Transitioning to Agile. The very nice people at 7digital made a video and posted it, too



Alan Shalloway

Day 15 of 100 Know You Are Managing Time to Market & How To Do It

Posted By: Alan Shalloway on May. 17, 2013

Continuing with the 100 Things You Must Know to Be Effective In Software Development The purpose of development/IT is to deliver value quickly - not just for a team, but for the entire organization. If you reflect on this, it's not about going fast, it



Alan Shalloway

Day 14 of 100 There is more than customer value

Posted By: Alan Shalloway on May. 15, 2013

Continuing with the 100 Things You Must Know to Be Effective In Software Development While adding value to the customer is the ultimate goal, there is more than customer value. There are actually at least five different types of business value: knowing



James Ward

Auto-Refresh for Play Framework Apps

Posted By: James Ward on May. 15, 2013

Over this past weekend I built a little tool for Play Framework app developers which auto-refreshes an app in Chrome when the source code or static assets change. Check out a video demonstration: For information on how to set it up, check out the proje



James Harmon

Android Panel and Kiosk Apps

Posted By: James Harmon on May. 14, 2013

One advantage of doing business in the Chicago area is getting to see lots of manufacturers.  The Midwest still builds stuff.As an Android developer who gets to talk with many of the local companies I've recently noticed a pattern in the Android sp



Alan Shalloway

Day 13 of 100 Systems Thinking From Individual to Organization

Posted By: Alan Shalloway on May. 14, 2013

Hi everyone.  To pick the pace back up I'm going to write either shorter blogs or, as in today, I will take some previous work and mold it into this work.  I appreciate your patience and will get things going agai



James Ward

Securing Single Page Apps and REST Services

Posted By: James Ward on May. 13, 2013

The move towards Single Page Apps and RESTful services open the doors to a much better way of securing web applications. Traditional web applications use browser cookies to identify a user when a request is made to the server. This approach is fundame



More Blogs »
 

Themes at Über Conf

  • Architecture
  • Enterprise Java
  • Java Internals
  • Security - Enterprise & JVM
  • Cloud Computing
  • Languages on the JVM - Groovy, JRuby, Scala & Clojure
  • Java Web Frameworks - Wicket, Tapestry & SpringMVC
  • Build Systems - Maven & Gradle
  • Testing
  • Agility

 

Featured Speaker


 

Registration Includes

  • Four Day - Access Pass
  • All Meals / Snacks –duration of the symposium
  • Session Materials
  • Custom Binder
  • Wi-Fi Access
  • Great Raffle Giveaways
Register Now »
 

Location

Westin Westminster
Westin Westminster
10600 Westminster Blvd
Westminster, CO   80020
View Map