Kenneth Kousen
Author of "Making Java Groovy"
Ken Kousen is the President of Kousen IT, Inc., through which he does technical training, mentoring, and consulting in all areas of Java and XML. He is the author of the O'Reilly screencast "Up and Running Groovy", and the upcoming Manning book about Java/Groovy integration, entitled "Making Java Groovy".
He has been a tech reviewer for several books on software development. Over the past decade he's taught thousands of developers in business and industry. He is also an adjunct professor at the Rensselaer Polytechnic Institute site in Hartford, CT. His academic background includes two BS degrees from M.I.T., an MS and a Ph.D. from Princeton, and an MS in Computer Science from R.P.I.
Presentations
Groovy by Example
Learn the basics of Groovy through a series of small, but non-trivial, examples. Rather than simply survey the language, in this talk we'll walk through a series of use cases to see how Groovy is used in practice to solve problems. The goal is to help Java developers who haven't seen much of Groovy get up to speed on the fundamentals.
We'll cover Groovy topics including closures, native collections, the Groovy JDK, iterators, file handling, database access, and more advanced metaprogramming topics like builders and metaclasses.
Grails Plugins: A Free Library of Functionality
One of the best features of the Grails platform is that its modular architecture makes developing plugins very easy. As a result, hundreds of plugins have already been developed and made available in the standard repository, with the number growing almost daily.
If you need to add functionality to your Grails application, look for an existing plugin first. This talk will survey a wide range of available plug-ins, including those for security, testing, building maps and charts, sending email, deploying to the cloud, and as many more as time allows.
Spock: Logical Testing for Enterprise Applications
The Spock framework brings simple, elegant testing to Java and Groovy projects. It integrates cleanly with JUnit, so Spock tests can be integrated as part of an existing test suite. Spock also includes an embedded mocking framework that can be used right away.
In this presentation, we'll look at several examples of Spock tests and review most of its capabilities, including mock objects and integration with Spring.
Groovy, part 1: Collections, closures, and the Groovy JDK
Want to use Groovy but don't have time to read all of Groovy in Action? This talk gives you a whirlwind introduction to its capabilities, from basic data types, Groovy strings, POGOs, collections, Groovy SQL, and the Groovy JDK.
Learn the basics of Groovy through code examples, including both scripts and classes. A complete set of test cases is included, as well as a gradle build script to download everything you need and run all the tests.
Testing Groovy and Java Systems
Most Java developers work with unit testing frameworks like JUnit, and use mocks and stubs generated by third-party libraries. Groovy has both features built into the language. This presentation will show you how to write tests for Groovy, Java, and mixed projects that are simple, easy to write, and run on your existing test infrastructure.
Examples will be given showing how GroovyTestCase simplifies JUnit, how to test Groovy scripts, how to build stub implementations with Expandos, and how to take advantage of the built-in Groovy classes MockFor and StubFor. The Spock framework will also be used to show how to create data-driven tests. All of the examples can be run together in the same Java-based or mixed Java and Groovy project.
Groovy, part 2: Builders, metaprogramming, and AST Transformations
Want to use Groovy but don't have time to read all of Groovy in Action? Building on the Groovy 101 talk, this presentation reviews features of Groovy that aren't based on simplifying Java. Topics include building and parsing XML and JSON, using the metaclass to enhance existing classes, and Abstract Syntax Tree Transformations like @Delegate, @Immutable, @Canonical, and more.
Learn the basics of Groovy through code examples, including both scripts and classes. A complete set of test cases is included, as well as a gradle build script to download everything you need and run all the tests.
Grails Workshop
Build a Grails application from start to finish in this half-day workshop. We'll start with domain classes, apply constraints, add controllers and services, apply both unit and integration tests, and then add additional functionality through plugins.
This rapid introduction to Grails will take advantage of the newest features of Grails 2.0 using the interactive scripts and db console. In addition to building an application, existing samples will be reviewed as a source of good practices and plugins.
Some knowledge of Groovy is assumed but not required.
Modern Spring Development
The Spring Framework has undergone significant evolution since versions 3.0 and 3.1 were released. Now annotations, Java configuration files, embedded databases, and bean profiles are all a normal part of Spring development. This talk will review how Spring expects to be used in its current form, complete with tips and tricks to make Spring development simpler and easier.
Examples will include configuring beans using a combination of XML, annotations, and Java configuration files, using the Spring Expression Language, REST support in Spring MVC, the "p" and "c" namespaces, and more.
Understanding Hibernate through Grails
The Grails Object Relational Mapping (GORM) API is an elegant domain specific language on top of Hibernate. To really understand how it works, you need to understand how Hibernate sees the world. This workshop will explore the behavior of GORM, from following object state transitions to managing the session to fetching lazy associations and more.
While the focus will be Grails and understanding how it works, code samples will also be provided using plain Hibernate with the Spring Framework to manage the session factory and transactions. All examples will be built with Gradle and tested with both JUnit and Spock.
Gradle Fundamentals
The Gradle build tool is one of the most successful projects in the Groovy ecosystem because it addresses a difficult problem -- every major build is a custom build. Gradle builds are written in Groovy, so the full power of the language is available if you need it. Gradle supports Maven project structure and repositories and uses Ivy dependency management without being bound by their normal constraints. With major systems like Grails, Hibernate, and the Spring Framework moving to Gradle, this is a technology worth taking the time to understand.
This talk will cover the basics of Gradle both through simple examples and by examining the build files for major open source projects.
Testing Grails
Grails comes with extensive testing support, ranging from unit to integration to functional tests. This session will demonstrate the range of options available both natively and through testing plugins.
Topics will include testing constraints, the mock libraries for testing controllers, generating test data, the available testing annotations, and more.
Making Spring Groovy
The Spring framework has always had a friendly relationship with dynamic languages. In this presentation, we'll look at all the ways you can add Groovy to Spring to make development easier, ranging from simplifying your configuration files to deploying refreshable beans to using Spock tests in the Spring test context and more.
Groovy works comfortably with existing Java infrastructure, and Spring has special capabilities designed specifically for scripting languages. The combination is very powerful and is an easy way to take advantage of Groovy code simplification.
Making Java Groovy
Groovy isn't designed to replace Java -- it just makes Java cleaner and easier to develop. This presentation will look at various tasks Java developers need to do and demonstrate ways Groovy can help.
Topics will include building and testing applications, accessing both relational and NoSQL databases, working with web services, and more.
Design Patterns in Groovy
Languages that support both dynamic typing and closures radically simplify the standard design patterns. This presentation will demonstrate how many of the common patterns in Java simply vanish in Groovy, and how much simpler they are even when they remain.
Patterns will include Adapter, Factory Method and Abstract Factory, Builder, Decorator, Singleton, Proxy, Visitor, and as many more as time allows.
Groovy Techniques for Build Processes
Learn how Groovy can simplify your build process, whether you work with Ant, Maven, Gradle, or a custom approach. This presentation will review Groovy build tools like AntBuilder, Grapes, and GMaven, and provide an introduction to Gradle as well.
Groovy is designed to work with existing Java systems, so it's only natural that it provides a variety of ways to simplify your build process, whatever it may be. From basic classes to full frameworks, you have a wide variety of options at your disposal. The pros and cons of each will be discussed here.
Spring MVC Basics
Spring MVC is one of the leading web frameworks in the Java world. It provides all the power of Spring dependency injection and bean management with an elegant configuration mechanism based on annotations. Learn how to work with the annotation-based approach, which is significantly different from the previous XML-based style.
This talk will demonstrate the fundamentals of Spring MVC, including controller, service, and repository annotations, handling form data, using layouts, and more.
Spring Projects You're Not Using (Yet)
The Spring-based ecosystem is very large and dynamic, with a wide variety of projects that build on Core Spring. This talk will survey many of them, including Spring Mobile, Spring Social, Spring Android, Spring Data, and the one you are probably already using -- Spring Security.
Examples from each will be presented, as well as links to documentation and recommendations on how to answer your questions.
Android Fundamentals
The basics of developing for the Android platform will be explored, from setting up your development environment to using the SDK to working with activities, intents, and fragments. No previous experience is required, other than a basic knowledge of Java.
We'll look at basic layouts and views, menus, and styling for different devices, and will touch on location services and maps.
Advanced Android
Building on the basics, this talk will discuss how to use Android persistence, access remote services, perform asynchronous activities, work with notifications, and more.
We'll show how to broadcast your services to other applications and how to use others in return, connect to cloud services, and plug into Android's notification and scheduling frameworks.
Android for Tablets
The Android tablet marketplace is rapidly growing and provides different challenges to those accustomed to phone-based development. We'll discuss how the differences go beyond larger screens, with alternative patterns available.
The talk will include discussions about the table UI design, action bars, side navigation, fragments, and third party libraries.
Testing and Building Android Applications
Testing is well-established in the server-side Java ecosystem but is often an afterthought when it comes to Android development. This talk will review the available options and libraries used to do both unit and integration testing. In addition, the new, Gradle-based build approach will be discussed.
We'll look at tools that come with the SDK, as well as third-party tools for UI testing.
Managing your Manager
Technical people value expertise above all, but the ability to communicate with others in your organization is a big key to success. This talk will present helpful techniques, like reflective listening and the Myers-Briggs Type Indicator, that enable you to quickly decide how to lead your manager where you need him or her to go.
We'll look at both written and oral communication methods, how to talk to supervisors as well as subordinates, and more.
Bayes' Rule Says You'll Attend This Talk
Statistics is hot lately, due in part to the easy availability of large data sets and the successes of people like Nate Silver. These aren't your father's statistics, however. A quiet revolution has swept through the field, shifting it from traditional frequentist methods toward a more Bayesian approach. This talk will discuss Bayes' Theorem and show you how to do simple, back-of-the-envelope calculations to apply it to a wide variety of problems.
In addition, we'll also talk about common errors non-experts make when dealing with statistical conclusions, ranging from small sample size issues to the use of arbitrary endpoints to the problem of overfitting and more.
RESTful Groovy
The JAX-RS 2.0 specification is part of Java EE 7, but can be used now. It contains the expected annotations for the HTTP verbs (@GET, @POST, and so on) and mechanisms for retrieving variables, but only a few methods for doing hypermedia. This presentation will review those techniques by adding both structural and transitional links to resource representations. Groovy is used to simplify the code and also to implement a MessageBodyWriter for JSON data.
In addition to simplifying the implementation classes, Groovy also supplies a RESTful client class from the HttpBuilder project. That will be used, as well as the native client implementation classes in JAX-RS 2.0, to build Spock tests for RESTful services.

