Sunday, March 14, 2010

No Fluff Just Stuff: Minneapolis Summary (Spring)

The No Fluff Just Stuff conference was back in Minneapolis. Here is a brief recap of the sessions I attended:

Friday Sessions

Encryption on the JVM: Boot Camp

Key points:
  • Anything can be cracked with time, money, and hardware. The goal is to make it an infeasible task.
  • The Java Cryptography Extention (JCE) within the JDK is a good library. However, JASYPT was the speakers preferred encryption library.
  • Is all of your sensitive information encrypted?

Encryption on the JVM: Advanced Techniques

Key points:

Hadoop: Divide and Conquer Gigantic Datasets (Intro)

Key points:
  • Hadoop is an extremely performant solution for searching enormous amounts (terabytes) of unstructured data (HTML, XML, images). The performance advantage is achieved from partitioning the search across a cluster of worker nodes.

Keynote: How (not why) Agile Works!

Key points:
  • Agile works for the following three reasons:
    1. It provides continuous feedback loops
    2. Improves communication
    3. It is fun!

Saturday Sessions

Grails - How to Build Enterprise Apps

Key points:
  • The GORM capabilities are nice. It is not necessary to code trivial finder methods. For example, Person.findAllByAgeLessThan(16) is implicitly available. The convention works as follows: .findAllBy(). Very convenient.

Implementing Evolutionary Architecture

Key points:
  • Restful Web Services are appealing because they are scalable and free.
  • What is the value of leveraging Hypermedia as the engine of application state (HATEAOS)? This strategy completely decouples the server-side workflow from the client. For example, imagine we have a wizard-style workflow where the user makes decisions and clicks the "next" button as they continue through each step. As the server processes the requests, it will update the state of the workflow and respond with a list of allowable transitions (URI links) that the user may perform next. What is the advantage? If the workflow changes in the future we only have to update the workflow on the server-side. No client-side changes will be necessary because the server is dynamically driving the UI's navigation by returning the allowable URI links following each request.

Implementing Emergent Design

Key points:
  • Code == Design
  • Delay design decisions until the last responsible moment.
  • Eliminating technical debt must be a continuous process. You may evaluate your technical debt with Sonar.
  • Code analysis tools:
    • ckjm (analyze coupling)
    • x-ray (Eclipse plug-in to analyze system complexity)
    • Structure101 (Currently used on the Spring framework)

HTML 5 ... and the Kitchen Sink

Key points:

Sunday Sessions

Architecting Code for Concurrent Execution

Key points:
  • The preferred design strategy is to manage concurrency concerns at an architectural level. Traditionally, we have leveraged concurrency via Java's synchronized keyword at the method level. Successfully managing concurrency at a low level can become challenging. Instead, prefer to leverage architectural design patterns to simplify concurrency management. Several design patterns for consideration include:
  • Functional languages are inherently thread-safe because all their objects are immutable.

Introducing Spring Roo

Key points:
  • Spring Roo can help provide Grails-like scaffolding. A valuable tool for rapid prototyping.


  1. nice writeup brad. it is great to see so many new speakers. no fluff looks fresh.

  2. This is a unique and fresh information regarding hadoop mapreduce. Thanks for sharing it with us...