193 symposiums and 30,000 attendees since 2001

Scott Leberknight

Chief Architect at Near Infinity

Scott is Chief Architect at Near Infinity Corporation, an enterprise software development and consulting services company based in Reston, Virginia. He has been developing enterprise and web applications for 14 years professionally, and has developed applications using Java, Ruby, Groovy, and even an iPhone application with Objective-C. His main areas of interest include alternative persistence technologies, object-oriented design, system architecture, testing, and frameworks like Spring, Hibernate, and Ruby on Rails. In addition, Scott enjoys learning new languages to make himself a better and more well-rounded developer a la The Pragmatic Programmers' advice to "learn one language per year."

Scott holds a B.S. in Engineering Science and Mechanics from Virginia Tech, and an M. Eng. in Systems Engineering from the University of Maryland. Scott speaks at the No Fluff Just Stuff Symposiums and various other conferences. In his (sparse) spare time, Scott enjoys spending time with his wife, three children, and cat. He also tries to find time to play soccer, go snowboarding, and mountain bike whenever he can.

Presentations

Google Your Domain Objects With Hibernate Search

Hibernate is one of the pre-eminent object/relational mapping technologies, but the Hibernate Search project adds full-text search capabilities to an already extremely capable tool to allow you to Google your domain objects.

Hibernate Search provides the means to add full-text search to your domain objects by leveraging Apache Lucene under the covers. You control which domain objects are searchable, how they should be indexed, and Hibernate Search takes care of the dirty work for you. It handles the object/index impedance mismatch and the task of managing the search indices. You can also execute full-text searches and retrieve actual domain objects transparently. We'll also discuss various architecture alternatives including using Hibernate Search in both clustered and non-clustered environments.

Polyglot Persistence

Polyglot persistence is all about considering your persistence requirements and selecting a persistence mechanism that best mets those requirements, as opposed to selecting an RDBMS as the default choice. In this session we'll look at some of the persistence alternatives that are available like Amazon SimpleDB, CouchDB, Google Bigtable, and more.

In late 2006 Neal Ford wrote about Polyglot Programming and predicted the wave of language choice we are now seeing in the industry to use the right language for the specific job at hand. Instead of assuming a "default" language like Java or C# and then warring over the many different available frameworks, polyglot programming is all about using the right language for the job rather than just the right framework(s). Paralleling Neal's description of polyglot programming, a relational database is often the accepted and default choice for persistence. Sometimes this is due to the fact that organizations have standardized on RDBMS systems and there isn't even any other choice. Other times it is simply what we're used to doing, and possibly we don't even consider alternatives. But now, with things like Amazon SimpleDB, Google Bigtable, Microsoft SQL Server Data Services (SSDS), CouchDB, and lots more, we're now seeing the beginning of Polyglot Persistence in addition to polyglot programming.

Spring 3.0 Overview

The Spring framework has simplified Java enterprise and web development since 2003, and has been a major innovator in improving and simplifying Java server-side programming since its inception. This session will look at the new features in Spring 3.0.

Spring 3.0 refactored much of the Spring core so it will no longer run on Java 1.4 and earlier, meaning it is optimized for Java 5 and beyond. Spring 3.0 includes several notable new features like the expression language (EL), support for REST, Spring MVC improvements including @PathParam and URI templates, and much more. In addition, Spring 3.0 will deprecate and remove from the Spring core several APIs like the original Spring MVC controller hierarchy and JUnit 3.8 support. There is also new support to make scheduling jobs cleaner and easier.

Real World Hibernate Tips (Reloaded)

Hibernate is a very powerful object/relational mapping framework. This session contains a new set of Hibernate tips, tricks, and pitfalls.

In this session we'll look at a collection of tips, tricks, and pitfalls for using Hibernate effectively. Some topics we'll cover include: optimistic locking pitfalls with object versioning; using StatelessSession for bulk operations; extending Hibernate dialects to register native functions; using contextual sessions; pitfalls when using "all-delete-orphan" cascades; "shared" objects using unidirectional mappings; detached objects; and more.

Hibernate Performance Tuning

This presentation will cover a selection of strategies for improving performance of Hibernate-based applications, ranging from reducing the number of queries executed to using caching effectively to avoid queries altogether.

Hibernate is a powerful Object/Relational Mapping tool that lets you work with rich object-oriented domain models and persist those model objects easily. But developers who assume Hibernate will magically solve all database-related problems are usually surprised when they realize that like all sharp tools you need to understand the mechanics of Hibernate's interaction with the database in order to deal effectively with performance problems of excessive queries due to lazy loading, the "N + 1" selects problem, and ineffective caching.

This presentation will cover a selection of strategies for improving performance of Hibernate-based applications starting by reducing the number of database queries. We will also cover how to choose the right inheritance mapping strategy and how performance is affected; caching effectively using the Hibernate second-level cache; and looking at several tools you can use to monitor and profile Hibernate to measure effectiveness of tuning. We'll even see a few tricks that Hibernate currently doesn't implement by looking at ActiveRecord, Ruby on Rails' ORM solution. These strategies will also apply, with a few exceptions, to any JPA persistence provider.

Apache Hadoop Databases: HBase and Hive

This session will cover the basics of Apache Hadoop and in particular will focus on HBase and Hive, two polyglot persistence-style databases fulfilling different needs designed to be horizontally scaled across clusters of commodity hardwire.

Apache Hadoop is all about building software to support "reliable, scalable, distributed computing." Hadoop is comprised of an impressive collection of subprojects with the common goal of providing infrastructure components for large-scale distributed computing such as a distributed file system, a map/reduce framework, two different styles of distributed database, and more.

Hadoop is comprised of a distributed file system on which HBase and Hive run; these databases are designed to be run in a distributed environment across dozens, hundreds, or thousands of servers. HBase is modeled after Google's BigTable database and is a distributed, column-oriented database designed to store billions of rows and millions of columns and accessed in real time. Hive is built as a batch-oriented, data warehousing system atop the Hadoop distributed file system (HDFS).


Scott's NFJS Schedule

Tampa, FL
Apr 16 - 18, 2010

Reston, VA
Apr 30 - May 2, 2010

St. Louis, MO
May 21 - 23, 2010

Denver, CO
Jun 14 - 17, 2010