Greater Atlanta Software Symposium

October 6 - 8, 2006 - Atlanta, GA


Crowne Plaza Marietta
1775 Parkway Place
Marietta, GA   30063
Map »

NOTE: You are viewing details about a past event. We will be back in AtlantaSeptember 20 - 22, 2013.
View the event details here ».

Session Descriptions

David Bock - Principal Consultant, CodeSherpas Inc.

Capistrano: Application Deployment and More

Capistrano (formerly Switchtower) is a tool originally written to help automate application deployment for Ruby on Rails. It does this well, but it has grown up into a tool capable of much, much more. It can be used for deploying Java applications, updating server configurations acrtoss an enterprise, administering netwoeks, backing up files, and all sorts of other activities. Any activity you might do from the command line, you can now do simultaneously across large numbers of machines, with all machines succeeding (or rolling back in case of failure) together.

OO Domain Modeling Strategies

A well-designed domain model is the best foundation any application can have. Unfortunately, many models grow like weeds in a garden, driven more by the needs of a relational database than the needs of the business model. It doesn't have to be this way - we can build a solid domain model that can survive change and withstand several different mechanisms for persistence.



Scott Davis - Author of "Groovy Recipes"

Easing into Agile

How do you get started with an Agile development methodology? Everyone has been talking about eXtreme Programming for years, but how do you get it introduced to your team? Many times, you're not simply transitioning from from one methodology to another -- you're introducing a methodology for the first time. Adding structure to a previously unstructured endeavor. Adding a touch of discipline where programmers once roamed free.

Groovy: The Next Generation of Java

This is the year of the dynamic scripting language. Ruby (and Rails) has won the hearts and minds of many independent software developers. JavaScript is experiencing a renaissance thanks to the wild success of AJAX and websites like Google Maps. And Groovy (JSR-241) brings the same level of excitement and "scripting goodness" to the Java platform.

Holistic Testing

Mark Twain once said, "Everyone talks about the weather, but nobody does anything about it." Do you feel the same way about Unit Testing? Are you actively testing your code, or are you just thinking about testing your code... some day... once you get some more free time...

Real World Web Services

In this talk, we'll survey the web services exposed by leading websites (Google, Yahoo, Amazon, eBay) and discuss how they are driving the AJAX revolution. You'll see examples of RESTful, SOAP, and JSON web services, as well as the strengths and weaknesses of each.

Rolling Your Own Google Maps

The release of Google Maps was a "Wizard of Oz / Technicolor" moment for web developers everywhere. It didn't just change the way we look at mapping sites; it forever changed the way we look at all web sites. It put AJAX on the map, both figuratively and literally.



Scott Delap - Author of Desktop Java Live

5 Minutes Forms with JGoodies Binding and Validation

Application developers often spend hours on the simple tasks of laying out a form, wiring components to objects, and validating the data entered. This is time that could be much better spend on the business problems your application is trying to solve. This session will show how to leverage open source libraries to take the work out of the form building process.

Creating Polished Swing Applications

Too often, Swing applications are slow, ugly, and hard-to-maintain. It turns out that it doesn't have to be this way. Swing can be used to create highly-responsive, beautiful applications that are very maintainable. If this isn't consistent with your own experience, don't feel bad; its not very obvious how to make Swing sing.

Introducing the Eclipse Rich Client Platform

Rich client application development using Java can be intimidating giving the vast flexibility in application design and structure. It also can be frustrating to create the large number of support services (persistence, menus, event and job frameworks) that a large scale rich client applications needs. The Eclipse Rich Client Platform is one project attempting to solve these issues by providing a core infrastructure that not only provides the day to day services a rich client application developer needs, but also providing a suggested path to guide you down the road of designing your application. This presentation introduces both the Eclipse RCP and the tools provided by the Eclipse IDE that assist developers in writing RCP apps.



Paul Duvall - Author of "Continuous Integration"

Continuous Database Integration

Performing daily or continuous builds is essential for ensuring working software. Yet, most consider only the source, not the database, as a part of these builds. What’s good for the source code is also good for your database.

Continuous Integration

Increase feedback on your project by building your software with every change applied to your source code repository. The practice of Continuous Integration (CI) can be used to decrease the time between when a defect is introduced and when it is fixed.

Continuous Testing

The key to improving the reliability of your software is to run tests whenever a change occurs. Continuous Testing leverages the practice of continuous integration (CI) to ensure highly reliable code.



Neal Ford - Application Architect at ThoughtWorks, Inc.

Clean Up Your Code: 10 Java Coding Tricks, Techniques, and Philosophies

This session delivers 10 techniques for improving your code, whether you are freshly graduated or a grizzled veteran.

Introduction to Tapestry

This session delves into details about building web applications with Tapestry, covering configuration, templates, and separation of concerns.

Pragmatic Extreme Programming Part 1: Planning & Design

This session begins a detailed discussion about how to actually get XP done in the real world (and what to tell your boss). This session includes artifacts (project tracking sheets, code coverage reports, etc.) from real XP projects.

Pragmatic Extreme Programming Part 2: Architecture, Coding, and Testing

Continues the discussion from Part 1, focusing on how to keep the benefits of XP without sacrficing it's effectiveness. This session shows real artifacts of XP in action.

Ruby for Java Developers

This session introduces Ruby, aimed specifically at Java developers.

Testing with Selenium

This session describes the use and workings of Selenium, the open source web user interface testing tool.

The Productive Programmer

This session shows you how to become a more productive programmer every day by using tools that you didn't know you already had.

Web Application Security Vulnerabilities

This session highlights common mistakes made by web programmers, stating the problems and avoidance techniques.



David Geary - Author of Graphic Java, co-author of Core JSF, member of the JSF Expert Group

Ajaxian Faces

JavaServer Faces is a perfect platform for implementing Web 2.0 interfaces with Ajax. This session explores how you can use these two potent technologies--JSF and Ajax--together to create applications that look and behave like desktop applications but run in the browser.

JSF: State of the Art

In 2005, JSF hit its stride, as evidenced from overwhelming support from both vendors and the open-source community. JSF 1.0 had plenty of holes, but open-source projects have arisen to address those needs. This session takes a look at three of those projects: Tomahawk (MyFaces component library) FaceletsSeam

JavaServer Faces: A Whirlwind Tour

In April 2005, annual growth rates for jobs in JavaServer Faces, Struts, and Ruby on Rails were all at about 0%. Today, Struts' growth rate still hovers around 0%, but JSF and Rails have taken off. At the end of 2007, both JSF and Rails were growing at a rate of between 400-500% annually (according to indeed.com).

JSF has passed the adoption tipping point, and is now the Java-based framework of choice, as is evidenced by its ecosystem. From vendors such as MyEclipse and RedHat to open source projects such as Seam, Facelets, and Ajax4JSF, JSF is where the action is.

Come see why JSF is so popular. In this code- and demo-intensive session, I'll show you the fundamentals of JSF.

Prerequisite: Some knowledge of Java-based web applications, such as Struts, is a plus, but is not required. If you have a significant experience with JSF, you probably already know most of what's covered in this session.

Shale: Turbo-charge your JSF Apps

JavaServer Faces is a well designed user interface framework, but it lacks a number of features you might otherwise expect out of the box; for example, JSF does not explicitly provide support for client-side validation.

So, from the folks that brought you Struts, comes Shale, a collection of useful enhancements to JSF. A top-level Apache Software Foundation project, Shale adds some really cool features to vanilla JSF, including:

Web flow: script dialog flow Remote Method Calls: easily call JavaBean methods from JavaScript Tapestry-like views: code views in pure HTML Use Apache Commons Validator validators on the client or server, or both JSF testing framework: mocks for easy JSF testing

There's a lot of cool stuff in Shale that makes JSF a much more compelling proposition. Come see what it's all about.

The Google Web Toolkit, Part One

Developing highly interactive web applications, for the most part requires knowledge of a wide array of technologies: HTML, CSS, JavaScript, XMLHttpRequest, JSP, JSF, etc.

With the Google Web Toolkit (GWT), Google turns that notion of development on its head. Instead, you implement Ajax applications by writing almost entirely in Java. You use an AWT-like API, which the Google compiler compiles to JavaScript that runs on the client.



Ben Hale - Cloud Foundry Java Experience Engineer

Spring Web Flow Jumpstart

Have you ever developed a web application with a long user action based on form input? Did you curse the Java community for their inability to address this very common application type? Well, attend this session about Spring Web Flow and you'll curse no more.

Spring XML Namespaces for Fun and Profit

Spring 2.0 introduces the new concept of XML-based configuration namespaces. These namespaces allow you to define domain specific languages for configuring your applications. This session will walk through the business case behind these namespaces as well as note Spring's own use of this system to simplify common configuration tasks. The session will finish with a live coding example of how to implement an XML namespace for your own application. This will include XML Schema definition, parser implementation, and packaging in a jar file for use by consumers.



Stuart Halloway - CEO of Relevance

Ajax Architecture

Ajax applications have unique architectural challenges and opportunities. This presentation will show you how to take advantage of the Ajax's strengths, and work around its quirks.

JRuby

JRuby is not one, but two great technologies: the Ruby language, and the Java Virtual Machine and libraries. In this talk you will learn the basics of programming JRuby, and how to integrate JRuby code into existing Java projects.

JavaScript for Java Programmers

This presentation covers JavaScript from the perspective of a Java programmer. We assume that you may be using an Ajax toolkit, but still need to be able to read, modify, and test the JavaScript code in your application. You will learn the common idioms of JavaScript by looking at working code from Prototype and Scriptaculous.

Prototype: Ajax and JavaScript++

Learn to simplify Ajax development with Prototype through a series of real-world examples. Along the way, learn to code in Prototype's modern JavaScript style, taking advantage of Prototype's extensions to JavaScript's object model

Spring AOP

Learn to use Spring AOP, aspect injection. and AspectJ integration

Spring Dependency Injection

Dependency Injection (DI) is the cornerstone of Spring. The core concept is quite simple, but (surprise!) actual practice can become complex. To take full advantage of Spring DI, you need to understand not only the basics on configuration, but also the container lifecycle model and the various hooks provided by the framework.

Spring Security with ACEGI

Spring offers developers a simpler, more robust method for configuring applications. These benefits extend to security through the ACEGI framework. ACEGI makes the otherwise daunting task of securing your application logical and straightforward. More importantly, through its support for single sign-on provision through Yale's CAS system and its ability to provide instance-level authorization, Spring extends the common security model of most J2EE apps beyond what they are traditionally capable of.



David Hussman - Agility Coach/Instructor/Practioner

Automating Business Value with FIT and FitNesse

The presentation will briefly discuss stories, the origin and authoring of story tests, and a demonstration of how FIT and FitNesse (FIT living within a Wiki) can be used to automate acceptance tests.

Creating, Telling, and Tracking User Stories

The participants of this session will become agile customers and product owners, using personas to create stories for a sample product development.

Losing Battles and Winning Wars: Adopting Agile

Adopting agile is different for each company, but most companies will go through some amount of change during the adoption of agile.

Ready, Set, Agile?

As with many methodologies, moving agile into an organizations poses larger challenges. Before jumping in, it helps to ask a few questions before "racing toward agility". This session will provide 3 tactical steps that can help your adoption of agile.

“Show Me the Numbers” - Agile Planning Tools and Techniques

This session will focus on tools and techniques for tracking an agile project plan from creation to project completion.



Scott Leberknight - Chief Architect at Near Infinity

Effective Hibernate

Hibernate seems simple on the surface yet when you go beyond very simple use cases it can become much more complex. Intended for beginner to intermediate-level Hibernate developers, come see how to put Hibernate to effective use on your projects.

Spring/Hibernate Integration Basics

Hibernate is a very popular Java transparent persistence framework, but you often need to create additional infrastructure to manage sessions, transactions, and lazy-loading in a clean and elegant manner. See how Spring can help.

Spring/Hibernate Integration Patterns, Idioms, and Pitfalls

Using Spring's Hibernate integration significantly simplifies applications that use Hibernate for data persistence by removing tedious and repetitive infrastructural code that you need to write. Intended for developers familiar with Spring/Hibernate integration basics, who want to learn additional idioms and solutions to common problems.



Rebecca Parsons - Vice President of Global Innovation - Thoughtworks

Enterprise Architecture and Agile: They Aren't Mutually Exclusive

Agile development is often talked about in terms of small teams of developers creating massive amounts of code. Such scenarios strike fear into the hearts of "Enterprise Architects". This talk addresses the issues of how agile development and enterprise architecture can not only co-exist with but participate in an agile development effort.

TDD/BDD and EAI: Unit Tests in a Middleware Tool

There are many well known tools and approaches in the Java and C# world for unit testing and Test Driven Development or Behaviour Driven Development. Extending these concepts in the EAI world is more of a challenge.



Brian Sletten - Forward Leaning Software Engineer

Applied AOP

Most people new to Aspect-Oriented Programming (AOP) are fed up with separation of concerns zealots explaining how great their techniques are at dealing with... logging. Ok, you get it. Logging is a cross-cutting concern that can be appropriately modularized. What else does AOP have to offer? A lot, it turns out. This talk will give an introduction to the motivations of AOP as well as a series of concrete examples drawn from enterprise and client side Java. Come learn how AspectJ-flavored AOP can begin to benefit you immediately either in development or production environments. Learn how to enforce architectural policies, find Swing threading issues, reduce the invasiveness of the Observer design pattern or even improve the reusability of your domain models. Now that Spring 2.0 provides support for AspectJ, the time has never been better to learn about these new (but backwards compatible) ways of thinking about building software.

Applied Design Patterns

Just about every modern software developer has a copy of the Gang of Four "Design Patterns" book sitting on a shelf; many of them have actually read it. The dark secret of the patterns community is that there is often a large gulf between whiteboard simplicity and real-world complexity. Language choice plays a part in the design (and even importance) of patterns. The situation is made even more confusing by the fact that many of the core patterns have now been "voted off the island" for one reason or another. This talk will give a pragmatic overview of the motivations behind design patterns and will focus on applying a handful of the GOF patterns to example scenarios in Java, Ruby and C#. A quick introduction to the role AOP plays in changing the patterns landscape will also be covered.

Applied Object-Oriented Metrics

Object-oriented code metrics are a little like Artificial Intelligence: those who did it twenty years ago roll their eyes at the thought and prophesy the same ultimate failure at applicability now. Those who grew up with Java are approaching the topic with new eyes and are finding useful ways of incorporating metrics into their projects. Come hear about tools and ways to measure properties of software, how they might be beneficial and where you are likely to go astray with this approach.

Applied REST

REST sounds like such a simple thing. But, what is it really? How do you convince your boss to let you try it when she has been sold on the equation SOAP = SOA + P(rofit)? How do you go about building, deploying, publishing and orchestrating web services without the (Un)Holy Trinity of SOAP, WSDL and UDDI?

Introducing the Semantic Web

Just as the world is feeling comfortable with the Web, Tim Berners-Lee et al inform us that what we have seen so far is just the beginning. His original plans at CERN were larger and grander. The Semantic Web is the new vision of machine-processable documents and metadata to improve search, knowledge discovery and data integration and management. While there are many naysayers chiding such grand visions, there are also pragmatic and useful technologies emerging that can be applied today.

Introduction to NetKernel : Software for the 21st Century

Imagine the simplicity of REST married to the power of Unix pipes with the benefits of a loosely-coupled, logically-layered architecture. If that is hard to imagine, it may because the architectures available to you today are convoluted accretions of mismatched technologies, languages, abstractions and data models.

NetKernel is a disruptive technology that changes the game. It has been quietly gaining mind share in the past several years; people who are exposed to it don't want to go back to the tired and blue conventions of J2EE and .NET. Not only does 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.

Come see how this open source / commercial product can change the way you think about building software.



Venkat Subramaniam - Founder of Agile Developer, Inc.

Get Groovier with Grails

Inspired by the Ruby on Rails project, Grails brings the ease of web development and "convention over configuration" to the Java platform. We will learn how to create web applications using Grails, how to integrate it with Hibernate, and how to Ajax it, all using the built in features of Grails. This section assumes that you are familiar with Groovy or you have attended the “Groovy for Java Programmers” session. The session will be example driven with live coding where we will build a web application from scratch.

Groovy for Java Programmers

Object-oriented scripting languages, or agile dynamic languages, as some like to call those, are gaining programmers' attention. Groovy bring this excitement to the Java platform with its ability to generate byte code. You can use Groovy instead of Java for some parts of your application. By learning it, you can switch between the languages where you consider fit.

Open Source Tools for Agile Development

As a Java developer, you have taken the time to learn the basics of the language and relevant parts of its rich API. However, you need more than that to develop serious industrial strength applications. In this presentation, the speaker will introduce you to a number of open source tools which you can use to improve your application quality and your development process.

Practices of an Agile Developer

You have worked on software projects with varying degree of success. What were the reasons for the success of your last project? What were the reasons for those that failed? A number of issues contribute to project success - some non-technical in nature. In this presentation the speaker will share with you practices in a number of areas including coding, developer attitude, debugging, and feedback. The discussions are based on the book with the same title as the talk.

Programming with Mock objects

You are convinced that Test Driven Development is good for you and your project. You realize the benefits it has to offer. What's holding you back? All the code and components that your code so heavily depends on is most likely making you wonder if TDD is really for you. We will start out by looking at dependency and dependency inversion. Then we will discuss how mock objects can help separate our code from its dependencies.

Refactoring your code - a key step in agility

Refactoring is one of the core practices in Agile Software Development. Refactoring is based on some core principles that apply to more than writing good code. But, what's refactoring? Why should you do it? How do you go about doing that? What tools are available to successfully refactor your App?

Working with Rules Engines

Rule based programming allows us to develop applications using declarative rules. These can simplify development in applications where such rules based knowledge is used for decision making.



Burr Sutter - Software Architect

SOA for Developers

The focus of this session will be to demonstrate innovative open source technologies and give you an insight into the skills, tools and techniques for SOA-enabling your enterprise architecture.



Bruce Tate - Author of 3 JavaOne best sellers

Effective Teams

Most conferences will try to tell you that the secret to good software development lies with a process, or a technology, or an architecture. Here's a dirty little secret. You can build working software with an outdated two tier archtiecture, a waterfall process and COBOL. How? By building a great team. These techniques were used to build one of the most unique and complex up and coming Ruby on Rails sites.

Java/Ruby Integration with JRuby and ReST

You can have rapid web development with Rails without losing access to your critical Java code. With the explosion of the Ruby programming language, more developers will need a strategy for letting Java and Ruby interoperate. This session explores two strategies: JRuby and Rails-based web services.

Three Technologies to Watch

The state of the art is progressing rapidly, and dynamic languages are driving the revolution. Find out about these topics that will be central to programming. We'll discuss continuation servers, metaprogramming frameworks and functional langauges.

What's New in Spring 2

In this session, we'll review the new features of Spring 2.0. If you've been using Spring 1.x, you'll want to hear about the improvements.

Where Agile meets Argyle: New processes in established companies

Agile programming is a collection of core principles and techniques that allow software developers to create lighter, more responsive applications, and to have fun doing it. Many established organizations are either openly or sub-conciously hostile to many of the principles of Agile development.



Vladimir Vivien - Software Developer / Consultant / Author

Developing Manageable Component-Based Systems with JMX and Spring

JMX (or Java Management Extension) facilitates the manageability of components hosted in the VM. While JMX has been available to developers prior to the latest version of Java, it has now been added as a standard API to Java 5. This session provides techniques and best practices for developing your own managed components using JMX and the Spring Framework.

Get Rich Now - Selecting Rich Client Technologies

There is a new equilibrium shift taking place between server-hosted and client-hosted applications where more code being sent to the client for execution. Today Java developers have more view technology options available than ever before including browser-based AJAX, Open Laszlo, Adobe Flex, and Mozilla XUL. This session explores these options to help you select the next one for your project.