Great Lakes Software Symposium Westin Chicago Northwest November 11 - 13, 2011

Fri, Nov. 11, 2011 Ballroom 3-4 Ballroom 1-2 Gallery Chambers Stanford Trafalgar 12:00 - 1:00 PM REGISTRATION 1:00 - 1:15 PM WELCOME 1:15 - 2:45 PM What's new in Spring Resource-Oriented Programming HTML5 Concurrency without Busy Introduction to Lean-Agile Craig Walls Architectures : REST I Tim Berglund pain in pure Java Developer's Software Development Brian Sletten Venkat Subramaniam Guide to Java 7 Paul Rayner Ted Neward 2:45 - 3:15 PM BREAK 3:15 - 4:45 PM NoXML: Spring Resource-Oriented NoSQL Smackdown! Collections for Concurrency Busy Java Measure for Measure for XML-Haters Architectures : REST II Tim Berglund Venkat Subramaniam Developer's Guide – Lean Principles Craig Walls Brian Sletten to Multi-Paradigm Design for Effective Metrics Ted Neward and Motivation Paul Rayner 4:45 - 5:00 PM BREAK 5:00 - 6:30 PM Introducing Spring Strategic Design Cassandra: Radical Towards a Humane Busy Java Resource-Oriented Roo: From Zero Using DDD NoSQL Scalability Interface—Aesthetics Developer's Architectures : to Working Spring Paul Rayner Tim Berglund and Usability Guide to Guava RDF/SPARQL Application in Record Time Venkat Subramaniam Ted Neward Brian Sletten Craig Walls 6:30 - 7:15 PM DINNER 7:15 - 8:00 PM Keynote: by Venkat Subramaniam Great Lakes Software Symposium Westin Chicago Northwest November 11 - 13, 2011

Sat, Nov. 12, 2011 Ballroom 3-4 Ballroom 1-2 Gallery Chambers Stanford Trafalgar 8:00 - 9:00 AM BREAKFAST 9:00 - 10:30 AM Code Archaeology Getting Started with Securing Spring Getting Agile Right! BDD with Cucumber Resource-Oriented Matt Stine Tim Berglund Craig Walls Ken Sipe Workshop (Bring A Laptop) Architectures : RDFa Paul Rayner Brian Sletten 10:30 - 11:00 AM BREAK 11:00 - 12:30 PM Rock SOLID Software Gradle: Bringing Scala for the Intrigued Continuous Delivery BDD with Cucumber Resource-Oriented Matt Stine Engineering Back to Builds Venkat Subramaniam Best Practices Workshop (Bring A Architectures : Tim Berglund and Ken Sipe Laptop) (continued) Semantic SOA Matthew McCullough Paul Rayner Brian Sletten 12:30 - 1:30 PM LUNCH 1:30 - 3:00 PM Effective Java Reloaded Sonar: Code Quality The Busy Java Rediscovering JavaScript Agile Engineering Practices Enterprise Security API Matt Stine Metrics Made Easy Developer's Venkat Subramaniam Neal Ford library from OWASP Matthew McCullough Guide to Akka Ken Sipe Ted Neward 3:00 - 3:15 PM BREAK 3:15 - 4:45 PM Effective Java Reloaded, Economic Games Busy Java Automated testing Build Your Own Glu-ing the last Mile Part II: Hello, Project Coin! in Software Projects Developer's tools and techniques Technology Radar Ken Sipe Matt Stine Matthew McCullough Guide to Android: Basics for JavaScript Workshop for Architects Ted Neward Venkat Subramaniam Neal Ford 4:45 - 5:30 PM BOFs Great Lakes Software Symposium Westin Chicago Northwest November 11 - 13, 2011

Sun, Nov. 13, 2011 Ballroom 3-4 Ballroom 1-2 Gallery Chambers Stanford Trafalgar 8:00 - 9:00 AM BREAKFAST 9:00 - 10:30 AM Emergent Design HTML5 For Developers Requirements and Spock - Unit Test Cryptography on the Busy Developer's Neal Ford Nathaniel Schutta Estimating - state of the art and Prosper JVM: Boot Camp Guide to CouchDB Peter Bell Ken Sipe Matthew McCullough Ted Neward 10:30 - 11:00 AM MORNING BREAK 11:00 - 12:30 PM Functional Thinking jQuery: Ajax Made Easy NoSQL: Getting The Seven Wastes of Simpler Cryptography Busy Java in Java 8, , Nathaniel Schutta Started with Neo4j Software Development with 3 JVM Libraries Developer's Groovy, and Scala Peter Bell Matt Stine Matthew McCullough Guide to Games Neal Ford Ted Neward 12:30 - 1:15 PM LUNCH 1:15 - 2:15 PM EXPERT PANEL DISCUSSION 2:15 - 3:45 PM Going Mobile with jQuery Essential Complexity: Pragmatic Architecture Executable Specifications: Git Going with Distributed The Curious Clojureist Nathaniel Schutta Developing and maintaining Ted Neward Automating Your Version Control Neal Ford complex software Requirements Document Matthew McCullough Peter Bell with Geb and Spock Matt Stine 3:45 - 4:00 PM BREAK 4:00 - 5:30 PM Hacking Your Brain How to Select and Architectural Stop, DevOp, and Git Workshop Agile.next for Fun and Profit Adopt a Technology Kata Workshop Roll Out Software Matthew McCullough Neal Ford Nathaniel Schutta Peter Bell Ted Neward Matt Stine Great Lakes Software Symposium -Session Schedule- (event schedule as of October 14, 2020) Friday, Nov. 11 12:00 - 1:00 PM : REGISTRATION 1:00 - 1:15 PM : WELCOME 1:15 - 2:45 PM - Sessions Session #1 @ Ballroom 3-4 : What's new in Spring by Craig Walls In this session, I'll lead a guided tour through the latest that Spring has to offer. Whether you're a Spring veteran or a Spring newbie, there will be something new for nearly everyone.

Session #2 @ Ballroom 1-2 : Resource-Oriented Architectures : REST I by Brian Sletten The first in a series of talks that are part of an arc covering next-generation information-oriented, flexible, scalable architectures. The ideas presented apply to both external and internal-facing systems.

Session #3 @ Gallery : Programming HTML5 by Tim Berglund HTML5 wants to make some major changes to the way we deliver media over the web and the way we mark up our pages, but it also gives us a bunch of new stuff in the browser's programming model. To ignore these new JavaScript APIs is to give up on a richer browser UI and a lot of fun.

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

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

Session #6 @ Trafalgar : Introduction to Lean-Agile Software Development by Paul Rayner Successful software development is about building the right product at the right time for your customers. This means focusing attention on the right places in the portfolio of projects and products that your company provides, and optimizing the entire value stream from "concept to cash" for your customers and the development teams.

2:45 - 3:15 PM : BREAK 3:15 - 4:45 PM - Sessions Session #7 @ Ballroom 3-4 : NoXML: Spring for XML-Haters by Craig Walls In this presentation, we'll explore all of the ways to do bean wiring in Spring We'll take a pragmatic view of each style, evaluating their strengths, weaknesses, and applicability to varying circumstances.

Session #8 @ Ballroom 1-2 : Resource-Oriented Architectures : REST II by Brian Sletten The second in a series of talks that are part of an arc covering next-generation information-oriented, flexible, scalable architectures. The ideas presented apply to both external and internal-facing systems.

Session #9 @ Gallery : NoSQL Smackdown! by Tim Berglund You've read that the relational model is old and busted, and there are newer, faster, web-scale ways to store your application's data. You've heard that NoSQL databases are the future! Well, what is all this NoSQL stuff about? Is it time to ditch Oracle, MySQL, and SQL Server in favor of the new guard? To be able to make that call, there's a lot you'll have to learn.

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

Session #11 @ Stanford : Busy Java Developer's Guide to Multi-Paradigm Design by Ted Neward The is home to several different languages beyond Java, many of which mix ideas (paradigms) together to create a flexible language. Languages which support these different paradigms can be awkward and hard to understand how to use at first. Great Lakes Software Symposium -Session Schedule- (event schedule as of October 14, 2020) Session #12 @ Trafalgar : Measure for Measure – Lean Principles for Effective Metrics and Motivation by Paul Rayner This presentation explores the nature of motivation and the place of metrics and measurement in software development, and how lean software development principles and practices shed light on motivation and metrics and how they can be used to support deep organizational improvement.

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

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

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

Session #16 @ Chambers : Towards a Humane Interface—Aesthetics and Usability by Venkat Subramaniam A successful application has to focus on three dimensions—value (business), design (engineering) and usability. Usability is not only about the wow factor. It is about making the application easier and intuitive to use. In this presentation we will learn the fundamentals of creating a usable application. We will look at some basic dos and don't. These will help you move forward from being a to a good application developer.

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

Session #18 @ Trafalgar : Resource-Oriented Architectures : RDF/SPARQL by Brian Sletten The fourth of a series of talks that are part of an arc covering next-generation information-oriented, flexible, scalable architectures. The ideas presented apply to both external and internal-facing systems.

6:30 - 7:15 PM : DINNER Keynote: Keynote: The rise and fall of empires: Lessons for language designers and - Venkat Subramaniam

Saturday, Nov. 12 8:00 - 9:00 AM : BREAKFAST 9:00 - 10:30 AM - Sessions Session #19 @ Ballroom 3-4 : Code Archaeology by Matt Stine Feature requests are steadily pouring in, but the team cannot respond to them. They are paralyzed. The codebase on which the company has "bet the business" is simply too hard to change. It's your job to clean up the mess and get things rolling again. Where do you begin? Your first task is to get the lay of the land by applying a family of techniques we'll call "Code Archaeology."

Session #20 @ Ballroom 1-2 : Getting Started with Grails by Tim Berglund Grails is emerging as a standard JVM web framework in environments ranging from startups to the enterprise. It's a full-stack solution build on rock-solid components, fully relying on convention over configuration, and using the best application language the JVM has Great Lakes Software Symposium -Session Schedule- (event schedule as of October 14, 2020) yet seen: Groovy. This is the place to be for web apps on the JVM. In this introductory talk, we'll get a whirlwind introduction to Grails, visiting seven things you need to know about the framework to get started.

Session #21 @ Gallery : Securing Spring by Craig Walls In this session, I'll show you how to secure your Spring application with 3.2. You'll see how to declare both request- oriented and method-oriented security constraints. And you'll see how SpEL can make simple work of expressing complex security rules.

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

Session #23 @ Stanford : BDD with Cucumber Workshop (Bring A Laptop) 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.

Session #24 @ Trafalgar : Resource-Oriented Architectures : RDFa by Brian Sletten The fifth in a series of talks that are part of an arc covering next-generation information-oriented, flexible, scalable architectures. The ideas presented apply to both external and internal-facing systems.

10:30 - 11:00 AM : BREAK 11:00 - 12:30 PM - Sessions Session #25 @ Ballroom 3-4 : Rock SOLID Software by Matt Stine Object-oriented programming was formally introduced in the 1970's with the advent of Smalltalk. C++ took it mainstream in the 1980's, and Java carried it to the next level in the 1990's. Unfortunately, if you examine the vast majority of Java codebases, what you'll find is a bunch of C-style structs (a.k.a. JavaBeans) and functions. As these codebases grow, a number of design smells can potentially crop up, which in turn cripple our ability to respond to change. We need SOLID principles that we can apply to keep our software clean and malleable.

Session #26 @ Ballroom 1-2 : Gradle: Bringing Engineering Back to Builds by Tim Berglund and Matthew McCullough Gradle. Another build tool? Come on! But before you say that, take a look at the one you are already using. Whether your current tool is Make, Rake, Ant, or Maven, Gradle has a lot to offer. It leverages a strong object model like Maven, but a mutable, not predetermined one. Gradle relies on a directed acyclic graph (DAG) lifecycle like Maven, but one that can be customized. Gradle offers imperative build scripting when you need it (like Ant), but declarative build approaches by default (like Maven). In short, Gradle believes that conventions are great -- as long as they are headed in the same direction you need to go. When you need to customize something in your build, your build tool should facilitate that with a smile, not a slap in the face. And customizations should be in a low-ceremony language like Groovy. Is all this too much to ask?

Session #27 @ Gallery : Scala for the Intrigued by Venkat Subramaniam Scala is a statically typed, fully OO, hybrid functional language that provides highly expressive syntax on the JVM. It is great for pattern matching, concurrency, and simply writing concise code for everyday tasks. If you're a Java programmer intrigued by this language and are interested in exploring further, this section is for you.

Session #28 @ Chambers : Continuous Delivery Best Practices by Ken Sipe There is a new “movement” in software development circles called DevOps. It is about the automation of development best practices as well as the automation of the deployment pipeline. Answer this question, “How long does it take your organization or team to push 1 line code of change into production?” That’s what this session is all about.

Session #29 @ Stanford : BDD with Cucumber Workshop (Bring A Laptop) (continued) 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.

Session #30 @ Trafalgar : Resource-Oriented Architectures : Semantic SOA by Brian Sletten The sixth in a series of talks that are part of an arc covering next-generation information-oriented, flexible, scalable architectures. The ideas presented apply to both external and internal-facing systems. Great Lakes Software Symposium -Session Schedule- (event schedule as of October 14, 2020) 12:30 - 1:30 PM : LUNCH 1:30 - 3:00 PM - Sessions Session #31 @ Ballroom 3-4 : Effective Java Reloaded by Matt Stine Even with the recent explosion in alternative languages for the JVM, the vast majority of us are still writing code in "Java the language" in order to put bread on the table. Proper craftsmanship demands that we write the best Java code that we can possibly write. Fortunately we have a guide in Joshua Bloch's *Effective Java.*

Session #32 @ Ballroom 1-2 : Sonar: Code Quality Metrics Made Easy by Matthew McCullough You're serious about improving the quality of your code base, but with 10,000 lines of code, where do you start and how do you ensure the greatest ROI for the re-work your team members will perform? Sonar is an open source tool that brings together the best of breed static and dynamic analysis of Java projects. The result is a unified view of problematic areas of your code on a time-line basis, allowing the team to attack the problems with the best ROI, and maintain a more watchful eye for positive and risky trends in the codebase in the future.

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

Session #34 @ Chambers : Rediscovering JavaScript by Venkat Subramaniam JavaScript is one of those very powerful languages that is often misunderstood and underutilized. It's quite popular, yet there's so much more we can do with it.

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

Session #36 @ Trafalgar : Enterprise Security API library from OWASP 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.

3:00 - 3:15 PM : BREAK 3:15 - 4:45 PM - Sessions Session #37 @ Ballroom 3-4 : Effective Java Reloaded, Part II: Hello, Project Coin! by Matt Stine Even with the recent explosion in alternative languages for the JVM, the vast majority of us are still writing code in "Java the language" in order to put bread on the table. Proper craftsmanship demands that we write the best Java code that we can possibly write. Fortunately we have a guide in Joshua Bloch's *Effective Java.*

Session #38 @ Ballroom 1-2 : Economic Games in Software Projects by Matthew McCullough The full title of this talk reveals its grand aims: Game Theory and Software Development: Explaining Brinksmanship, Irrationality, and Other Selfish Sins Once in a while, a topic, seemingly orthogonal to software development, presents a great opportunity to showcase how engineering can benefit from knowledge of seemingly more social disciplines. In this talk, the fundamental principles of economics' Game Theory are compared to often inexplicable behaviors and decisions we frequently observe in programming projects.

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

Session #40 @ Chambers : Automated testing tools and techniques for JavaScript by Venkat Subramaniam Programmers often complain that it is hard to automate unit and acceptance tests for JavaScript. Testability is a design issue and with some discipline and careful design we can realize good automated tests. Great Lakes Software Symposium -Session Schedule- (event schedule as of October 14, 2020) Session #41 @ Stanford : Build Your Own Technology Radar Workshop for Architects by Neal Ford A Technology Radar is a tool that forces you to organize and think about near term future technology decisions, both for you and your company. This talk discusses using the radar for personal breadth development, architectural guidance, and governance.

Session #42 @ Trafalgar : Glu-ing the last Mile by Ken Sipe How does your team handle release weekend? Is it the whole weekend? Is everyone on call? Is there a way to reverse the decision mid-stream?... How long would it take your company or team to push a single line code fix from dev into production? Way too many organizations handle the production release through manual and tedious labor following a lengthy to-do check list. Way too many organizations have no way to reproduce their production environment... because they have manually changed or updated configurations without version control... or they have OS or application server paths that are not under proper management.

4:45 - 5:30 PM : BOFs

Sunday, Nov. 13 8:00 - 9:00 AM : BREAKFAST 9:00 - 10:30 AM - Sessions Session #43 @ Ballroom 3-4 : Emergent Design 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.

Session #44 @ Ballroom 1-2 : HTML5 For Developers by Nathaniel Schutta Wonder what all the fuss is about HTML5? This session will show you how to leverage HTML5 in the applications you are building today. We'll start with a gentle overview describing just what HTML5 is all about and then we'll delve into the details. We'll look at the new elements HTML5 brings to the table, why canvas isn't just something you find in the art department, how geolocation can find Waldo and much much more.

Session #45 @ Gallery : Requirements and Estimating - state of the art by Peter Bell A chance for experience agile developers to learn and share state of the art tips for improving requirements gathering and project estimation.

Session #46 @ Chambers : Spock - Unit Test and Prosper by Ken Sipe Spock is a groovy based testing framework that leverages all the "best practices" of the last several years taking advantage of many of the development experience of the industry. So combine Junit, BDD, RSpec, Groovy and Vulcans... and you get Spock! This is a significant advancement in the world of testing.

Session #47 @ Stanford : Cryptography on the JVM: Boot Camp by Matthew McCullough Does your application transmit customer information? Are there fields of sensitive customer data stored in your DB? Can your application be used on insecure networks? If so, you need a working knowledge of encryption and how to leverage Open Source APIs and libraries to make securing your data as easy as possible. Cryptography is quickly becoming a developer's new frontier of responsibility in many data-centric applications.

Session #48 @ Trafalgar : Busy Developer's Guide to CouchDB by Ted Neward With the rise of the NoSQL movement, a whole new crop of different ways to store data suddenly became available to the Java developer. Unfortunately,what didn't come with them was an owner's manual. CouchDB, for example, was the first of the NoSQL databases to be named as such, and offers features not found in the traditional RDBMS: A distributed, robust, incremental replication document-oriented database server with bi-directional conflict detection and management, accessible via a RESTful JSON API, stored ad-hoc and schema-free with a flat address space, that is both query-able and index-able, featuring a table oriented reporting engine that uses JavaScript as a query language. (With a list of buzzwords like that, what's not to love?)

10:30 - 11:00 AM : MORNING BREAK 11:00 - 12:30 PM - Sessions Session #49 @ Ballroom 3-4 : Functional Thinking in Java 8, Clojure, Groovy, and Scala by Neal Ford Learning the _syntax_ of a new language is easy, but learning to _think_ under a different paradigm is hard.

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

Session #51 @ Gallery : NoSQL: Getting Started with Neo4j by Peter Bell What is a graph database, why would you use it, and how do you get started? In this session we'll look at the kinds of problems that graph databases can solve and will run through the process of getting started with neo4j

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

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

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

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

Session #56 @ Ballroom 1-2 : Essential Complexity: Developing and maintaining complex software by Peter Bell Some apps are little more than CRUD. The interesting projects are those with essential complexity in the domain. In this presentation we'll show how ideas from Domain Driven Design, Domain Specific Modeling and Domain Specific Languages can be used to more effectively design, refine and maintain the code at the heart of complex applications.

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

Session #58 @ Chambers : Executable Specifications: Automating Your Requirements Document with Geb and Spock by Matt Stine One of the hallmarks of lean software development is the elimination of waste. Several of the key wastes in software development revolve around incomplete, incorrect, or obsolete documentation, especially documentation of requirements. One effective means of ensuring that your requirements documentation is complete, correct, and up-to-date is to make it executable. That sounds nice, but how do we get it done, especially in the world of modern, cross-browser web applications? Great Lakes Software Symposium -Session Schedule- (event schedule as of October 14, 2020) Session #59 @ Stanford : Git Going with Distributed Version Control by Matthew McCullough Many development shops have made the leap from RCS, Perforce, ClearCase, PVCS, CVS, BitKeeper or SourceSafe to the modern Subversion (SVN) version control system. But why not take the next massive stride in productivity and get on board with Git, a distributed version control system (DVCS). Jump ahead of the masses staying on Subversion, and increase your team's productivity, debugging effectiveness, flexibility in cutting releases, and repository redundancy at $0 cost. Understand how distributed version control systems are game-changers and pick up the lingo that will become standard in the next few years.

Session #60 @ Trafalgar : The Curious Clojureist by Neal Ford Why is Clo*j*ure the best new language on the JVM? _Come to this session and see why this functional, dynamic Lisp is the best thing on the JVM since Java._

3:45 - 4:00 PM : BREAK 4:00 - 5:30 PM - Sessions Session #61 @ Ballroom 3-4 : Hacking Your Brain for Fun and Profit by Nathaniel Schutta The single most important tool in any developers toolbox isn't a fancy IDE or some spiffy new language - it's our brain. Despite ever faster processors with multiple cores and expanding amounts of RAM, we haven't yet created a computer to rival the ultra lightweight one we carry around in our skulls - in this session we'll learn how to make the most of it. We'll talk about why multitasking is a myth, the difference between the left and the right side of your brain, the importance of flow and why exercise is good for more than just your waist line.

Session #62 @ Ballroom 1-2 : How to Select and Adopt a Technology by Peter Bell What's the point attending a conference unless you do something with the knowledge you gain? In this session we look at practical strategies for selecting new technologies and proven approaches for driving adoption back at the office.

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

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

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

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