No Fluff Just Stuff Tampa — Day One
Originally posted 2010-04-16 20:57:05
No Fluff Just Stuff began in Tampa today. This is my second NFJS conference — my first was in 2008. Five of us from work drove down from Jacksonville, all expecting great things. So far, the conference hasn’t disappointed.
After check-in, at which we were handed a badge, a binder, a commemorative 10-year T-shirt, and a 2GB branded thumb drive with all the conference materials pre-loaded, we went to the various sessions. The first session I attended was Neal Ford’s Implementing Evolutionary Architecture. He talked about how architecture evolves, going from a spaghetti-pile of connections among servers and services, to a clean implementation of an Enterprise Service Bus, to a renewed spaghetti-pile because the policies and bureaucracies around the ESB make stringing wires around it faster and easier. He asserted that the web as a platform needs to be more evolvable than that.
He then talked about Richardson’s Levels of Maturity:
- Level 0: Single URI, Single HTTP verb
- Level 1: Many URIs, Single HTTP verb
- Level 2: Numerous URIs, addressable resources
- Level 3: HATEOAS
He walked through architectures at the various levels, but the interesting part was the HATEOAS (not his term — let me google that for you), which stands for pool! No, it stands for:
- Hypermedia
- As
- The
- Engine
- Of
- Application
- State
The tenet of HATEOAS is that the service and consumer exchange representations of resource state, not application state. It reduces coupling between service and consumer, preserves RESTful and XML semantics, and leverages HTTP appropriately. He gave as an example the Atom format. The talk was well-done, full of code examples, and illustrated the points well. It contained too much information for the allotted hour-and-a-half, so we raced through it, but I’ll be reading and rereading the slide deck, as well as purchasing the book he mentioned: REST in Practice.
After a cheese-and-Diet Dr Pepper break, I went to Mark Richards’ The Art of Messaging. He has more fun writing code and presenting than Shaq does taunting Kobe. His presentation focused on leveraging ActiveMQ and JMS, touting it as a superior solution — at least behind the firewall — to Web Services: easier, cleaner code, and guaranteed delivery. He also showed how two messaging queueing solutions (ActiveMQ and WebSphere MQ) are implementing JMS over HTTP, which would allow you to dump Web Services all together. Great presentation that talked me into downloading ActiveMQ.
Ted Neward’s The Busy Java Developer’s Guide to Advanced Collections came next. He demonstrated how to use Java functional programming to shut up the Rubyists and Groovyists who mock Java, not for unit tests, but for its verbosity. By using generics and anonymous classes in your libraries, you can read a file and print its contents just as tersely as you can in Ruby or Groovy. He also demonstrated the power of Iterables and Iterators. He then took a swing at classic object-oriented techniques and thought patterns for changing behavior by subclassing or decorating. Instead, he showed, you can change behavior by passing functions or closures. He encouraged us to look into Google’s and Apache’s collection classes, cherry-pick the parts that interest us, and develop our own collection libraries for our problem domains. He eschewed slides completely, fired up TextMate for Windows, opened a command prompt, and spent the time writing, compiling, and running live code. The one part I don’t understand is that he runs Windows on his MacBook Pro (I think in a virtual machine) — that’s like buying a convertible Ferrari and using it as a wheelbarrow.
After a tasty dinner, we gathered for Neal Ford’s keynote: Smithing in the 21st Century. The premise of the talk was that blacksmiths had all the business they could handle in the 1890s, and smithing seemed a secure career choice. 20 years later, the world had changed and smiths begged for food while rooting for the $%@#! Yankees. Technologists face a similar fate (well, most of us don’t even know who the Yankees are or what they do, and we’re happier for it) if they fail to adapt as the world changes. He pointed out, however, that we’re terrible at predicting the future, mostly because we rely on the past as a predictor of the future. As he spoke, I scrawled highlights across six pages of notes (well, hotel-shrunken sized pages) that read like sanskrit, I’m afraid, and don’t recapture the brilliance of the material. The things to watch for, however, to determine what will succeed in the future are:
- Right Place, Right Time (Java hitting right when the Internet rose to prominence, Struts and then Rails arriving when we needed easy-to-learn, powerful web frameworks)
- Paradigm Changers (iPhone)
- Warmed-over Technologies (Java resurfacing p-code’s ideas, functional and dynamic languages coming back to address multi-threaded programming)
- Accelerators (War as a technology accelerator: Civil War accelerated surgery, WWI accelerated airplanes, WWII accelerated computers, and today’s wars accelerating robotics)
He then spent some time on cautionary tales, stressing the importance for us to step back from problem-solving mode to make sure we know why we’re solving a particular problem. Someone wrote the code, after all, for a border-patrol robot that shoots to kill if you lack the proper RFID card (or if its RFID reader is out or you washed your card and damaged the chip or if you’re wearing a blue shirt and three hawks have flown between the robot and the sun in the past 3 minutes and 13 seconds and no one thought to test that scenario).
He then asserted that the future will involve processing gigantic datasets (Google, for example, processes an entire petabyte of data every 72 minutes). The languages we use will affect our ability to address the problems we face — notation matters, so we should embrace polyglot programming and match the language we use to the problem we’re trying to solve. He talked about the rise of social networking and the current platform plays to gain RIA lock-in (Silverlight, Flex, JavaFX). He pointed out that no cell phone has open standards (with the arguable exception of Android), and painted a picture of Apple and iPhone and iTunes that ended with Apple become the world’s largest bank through their micro-payments platform.
Overall, he said, the future will come from left field, and then quoted Peter Drucker: \”The best way to predict the future is to create it.\”