It’s been just over a week since the No Fluff Just Stuff conference here in Minneapolis. It was truly two and half days of geeking out! As always, the speakers are well polished, know how to engage the audience, and there is rarely a dull moment.
Here are a few highlights of the sessions I attended:
Functional Java with Ted Neward
Listening to Ted Neward speak is always entertaining. His style of presentation makes it exceptionally easy to absorb the material. He interacts with his audience, answers questions, and throws a little bit of humor into it. As I expected, the room was full of interested listeners. This particular presentation reviewed the merits of functional programming and how to apply functional programming concepts using Java. When adoption of true functional languages is often not desired or allowed in a traditional Java shop, the Java programming language can be used along with the FunctionalJava library. Rather than lecturing from powerpoint slides, Ted broke out a text editor and compiler where we proved that “gang programming” (like pair programming) really does work. With the simple examples Ted showed us, I was able to get up and running with the FunctionalJava library and write some code to see for myself how it worked within 15 minutes.
Hadoop with Matthew McCullough
This was the first time I have been to a Matthew McCullough session. As with the other speakers at NFJS, he had a style that showed his enthusiasm for the topics on which he was speaking. It was a little fast-paced, but he did not hesitate to stop and answer questions the audience had. Matthew’s presentation described the ever-growing problem of the ability to process more data in less time. For many years, processing speeds were growing at an obscene rate. In the last few years, this growth has started leveling out and technologists are approaching this problem in a different way. Today, you hear the words “cloud” or “grid” where computing resources are distributed across datacenters, across the country, and across the world. These distributed resources are shared similar to that of electricity or other utilities. The challenge here for developers is easily making use of these distributed resources. Matthew introduced a Java solution, the Hadoop Apache projects. This suite of projects allows a developer to quickly and easily overcome the challenges of working with distributed resources by providing a scalable framework.
Just reviewing the PoweredBy page for Hadoop, shows big names are using this framework across hundreds of nodes to analyze and search (among other things) terabytes of data. I often hear my non-geek friends ask how sites like LinkedIn, Facebook, and Yahoo know as much as they do. It is technology like this that powers the behavior analysis, machine learning, and data mining that allow these companies to provide targeted recommendations like people you may want to connect with or advertisements targeted at you and your interests.
Agile Engineering Practices by Neal Ford
Neal Ford, another exceptional presenter, one that I always look forward to listening to, held a session on agile engineering practices. A lot of discussion goes into agile process and agile project management, but this particular session was aimed at developers. A few of the practices he described were:
- Use a whiteboard and a digital camera. Capture brainstorming sessions and rather than having a scribe copy this data into another heavy tool, use a digital camera to save it. You can also use Evernote to upload your photos and PDF documents and they are instantly searchable.
- This practice was presented in a few of the sessions I attended and that is to estimate using a magnitude of complexity. Rather than asking a developer or manager how many hours a task will take, ask the actual developer to estimate it’s magnitude of complexity compared to a previous task. Both Planning Poker and story points based estimation were the popular methods of estimation throughout this conference. While I know I won’t be able to stray too far from providing hours based estimates for our projects, I would like to start trying this in addition to the required hours based estimates to start establishing a baseline and make sure the entire project team in more involved.
- Both in his keynote on Friday night and in this session, Neal provided an awesome description of pair programming and the science behind why it actually works. Describing the responsibilities of the left and right brain, he showed that pair programming forces BOTH sides of the brain to be used at once, something that is not possible when programming alone. The left side of the brain is responsible for rational and linear thought and analysis, while the right brain is for creative, non-linear thought. In pair programming, one of the pair uses the left side of the brain and the other of the pair uses the right side.
- Ping pong pair programming is a technique for writing unit tests where programmer 1 writes a failing test and passes the keyboard to programmer 2. Programmer 2 fixes it, writes another failing test, and passes the keyboard back. What a unique idea!
- This practice – make decisions late, and only when they need to be made – is something that I have learned in the last few months of the project I am on. We are very dependent on external teams for deliverables and will not always know the answer or requirement of each and every part of the project. Because of this, delaying technical and implementation decisions has been a key success factor in the project. We are not wasting time up front implementing something that will change later. We are not wasting our time trying to make decisions on how to handle the unknown UNTIL we know what it is.
- Lower the truck number. I really hate when I have to ask someone on my team this, but “What happens if so and so gets hit by a bus?”. FINALLY, I have name for this: Lowering the bus/truck number.
- Last but not least, have some fun. A game will help bring the team together. Counting how many times a particular person walks around the building in a day brings the team together. A gigantic stuffed ape will make people smile. A pin ball machine, a ping pong table, a WII bowling tournament, and free beer on Fridays are welcome breaks to a day of deep thought and programming. This is definitely an area my company excels at.
These practices were presented in a simple, yet effective way.
RDFa by Brian Sletten
Brian Sletten held a couple of sessions related to an area he is very active in: the semantic web. I had attended one of his sessions about three years ago and found it interesting, but not something I could really wrap my head around at the time. I decided to try again and attended his first two sessions. In the second morning session, he spoke more specifically about RDFa, a resource description framework which allows data on webpages to be tagged with additional meaning. This additional meaning is useful to search engines, providing for a more powerful result. By adding this additional data about the content, search engines can learn more about the specific meaning of the content.
What interested me the most about this presentation was the mention of GoodRelations, a vocabulary written specifically for tagging e-commerce content. This content is automatically searched by search engines. Product and other store information can be more accurately tagged for what your shoppers are searching for. Stores can put full details of a product’s specifications on the on-line store, exposing it to search, comparison, and recommendation engines. It allows store owners to provide more effective advertising and pricing data to their shoppers. Local e-Commerce shop, Best Buy, started using GoodRelations and has reported a 30% rise in store traffic since, setting the stage for others to follow.
There were other sessions I attended, also of high quality, but these are the ones that will stick in my mind for awhile, making me question how and why I am approaching a problem in a particular way and whether there might be a different approach to take.
Definitely looking forward to the next No Fluff Just Stuff conference!