Sunday, August 16, 2009

CFUnited Presentation Roudup

CFunited was busy for everyone involved so I have no excuse for falling behind in making blog entries as many others just as busy as I did kept up just fine. I'll only post 2 entries for CFUnited this one with all my presentations and then a second one recapping my CFUnited experience (spoiler: It kicked ass!). On with the recap!

Red Green Refactor
PDF Keynote

I was fortunate enough to be given the opportunity to present this topic 2 times at the conference. I feel like both presentations were solid and entertaining; including a reference to old Purple Pants (if you do not know, probably best not to ask :) ). Barney B was disappointed in my lack of gratuitous vulgarity, I'll attempt to not let him down next year. I got really good feedback, even testimonial that TDD does speed up development!

Fusebox Past Present Future (Busy Developers Guide to Fusebox)
PDF Keynote

This was a bit awkward given the current situation surrounding Fusebox and Myself. The first half I did my best to sell on the framework and break down some of the old myths. At about 5:55 I entered my 5th Myth: Fusebox is Dead and instead of really getting into that I made the attendees aware of the current state (at the time) and announced I was resigning. I think spent the second half of the presentation talking about FuseNG (or Fork-a-doodle-doo). Expect more entries soon surrounding FuseNG 1.0 (code named Cuddles).

Code Review and Team Dynamics
PDF Keynote

This started my 3 hour marathon of presenting. It was also a late add to the conference, I was subbing for Jake Munson who was unable to present do to person reasons. I love this presentation, I've given it a few times previous. I felt really good about my delivery and I think everyone got something out of the presentation. I think I might create a new presentation on the same vein but with more emphasis on Team Dynamics and mentoring for next years conferences. I appreciate all the positive feedback from everyone!

Busy Developers Guide to Java Part 1
PDF Keynote

This was one of those presentations with so much content it has to go perfect or you run out of time. I screwed up 2 times and ran over. I was also called Drill Sgt. and Reverend after this presentation. Apparently I was too brash haha! I felt everyone still learn a great deal about java and I got some great positive feedback as well, definitely help enable folks in this one. This was the second session I got to repeat. The second iteration I tried not to preach as much I also pulled some content that might have been too preachy. I ended right on time and had some great interaction, just like the first time. I think this session has great replay potential for future conferences.

Busy Developers Guide to Java Part 2
PDF Keynote

This was my final presentation of the 3 hour presentation marathon. I'll admit that about halfway through the Part1 session I felt ill. This continued into part 2. About half ways through one of the most embarrassing things happened, I had to excuse myself from the presentation for a moment. Luckily this was the last session of the day and everyone was very understanding and allowed me to run over the time and finish the content. I appreciate everyone's patients with me. Aside from the total misery I was in as far as how I felt I think this presentation was awesome. I got good participation from the attendees and very positive feedback from many folks. Anytime I stick around after a session to answer additional probing questions seeking to learn more is awesome.

Overall I had a blast presenting. I hope everyone attending my presentations was entertained and learned or was motivate. As long as I was able to positively affected at least one individual that is all the more I can ask for as a presenter the rest is gravy. Our community is growing and I am glad to be part of the growth. Here's to CFUnited and any other conference that facilitates collaboration and growing! Thanks Stellr for organizing, promoting and kicking ass.

Thursday, August 13, 2009

FuseNG Announced

I have a quick, and I mean quick, moment to post something exciting and sad to my blog. The creation of a new framework is official, the name: FuseNG. FuseNG (think, Fusebox Next Generation) is the official name of the fork from Fusebox 5.5.1. I can't say it was a rough decision to make. I wish I could say otherwise in a sense but it was just so depressing seeing where we were as a community as Fusebox I felt I had no choice. On the other hand I am lucky enough to have a great community behind me; that was really empowering for me and helped make the decision to fork extraordinarily simple.

I chose FuseNG as the name for a couple of reasons:
  1. Suggestions like Fork a doodle doo, while very entertaining (the first 500 times it was suggested to my by someone), do not represent what I want people to remember about the framework.
  2. I am a tad bit on the uncreative side and most of the cool names with Cold or Box are taken :)
  3. I love Star Trek TNG so doing anything that resembles one of my favorite television series is cool
  4. I feel that it reinforces a core value: FuseNG is not intended to alienate the Fusebox community with the fork. It really is about pushing the framework forward into the Next Generation of the framework. A bit of a history lesson Fusebox almost became FuseNG one other time interestingly enough I was told this after I chose the name without prior knowledge.
I will remain active on the Fusebox forums and websites, I think it is important that Fusebox exists in some capacity to provide those that may not know about our new endeavours a starting point to learning about frameworks, MVC and code generation. So with that I bid Teratech adieu.

Sunday, August 09, 2009

CFUnited Introduction to Java

For anyone attending my Java part 1 session I have checked in all of my sample code to my SVN repo:

http://svn.cfinnovate.com/trunk/presentation-materials/

There are 2 Eclipse projects you will want to download from the repo. I wanted to make this available ahead of time for anyone interested in following along! I'd recommend download it now and then syncing at the conference, download speeds have historically sucked at conferences.

I do not think part 2 will have enough time for much code. Since it is all about JEE environment we'll spend most of our example time exploring the ColdFusion installation (Hopefully you have this already!).

Wednesday, August 05, 2009

An Open Letter to The Custodians of the Fusebox and the Community

I feel like I have shielded the community about strife that has existed within Fusebox team too much. It's not my intent to air dirty laundry out in public but I do think I should have been more open with the community about my disapproval of how Fusebox has been run. Presently, Teratech has ownership of the Fusebox domain and the rights to the source code. While I believe Teratech sought to gain those rights with the best interest of the community at heart, I believe it is time for a change.

Fusebox has the prestigious history of being the first major ColdFusion framework and Fusebox, in all its forms, powers thousands of applications worldwide. It is imperative Fusebox continues to prosper and advance. The Fusebox Framework has stalled and is as a rudderless ship among the seas of source code. What Fusebox needs is an injection of active, willing leaders that are willing to take an active role in the evolution of the framework, with the community at the forefront of road map. A group has formed, consisting of me (Adam Haskell), Robert Burns and Tony Bommarito and Chris Weller and is willing and able to provide the energy and leadership to move the framework forward.

After a spirited conversation with Michael Smith the other night it is clear we have irrevocable differences centering around the leadership of the team behind Fusebox. Fusebox has a bright future ahead of it under the proper leadership. We have an opportunity to make Fusebox easier to use and provide tools and options to allow a developer to grow with the framework. New active leaders can focus attention on more than just the framework's code by fostering more active community involvement in documentation and tutorials. Fusebox has grown tremendously under Teratech and provides great tools for developers and I think we now have the opportunity to make the framework easy to jump into, something that can be leveraged in less than 30 minutes. We can accomplish all this and more and remain free and open in source and in policy. The license can remain Apache licensed and free for everyone (let me be clear here Teratech is NOT threatening to change this). To be clear I have no intention of changing the license from Apache either. This is my commitment to the community.

This is what I would like to see from Teratech to prevent a fork in the framework:
  1. Pass control of Fusebox Domain and Source Code to Community under the leadership and copyright of myself (Adam Haskell), Sean Corfield*, and Robert Burns
  2. Work closely with the community and be willing to provide certified Fusebox training produced by the core group
  3. Become an active member of the community, the community can only gain from Teratech's involvement
On a final note I do want to sincerely thank Teratech for what they have done, if they (and Sean Corfield and Simeon Bateman) did not step up 3 years ago and subsequently get Fusebox under the Apache license I would not being posting this today. They have empowered the community to ensure Fusebox remains a stellar framework. Teratech has affirmed their rights to the domain and to the source code under the name of Fusebox. While I respect the law in this case, there are irreconcilable differences between me, as Lead Developer of the Fusebox Framework, and Teratech. As such, I ask the community to let their voices be heard and to act quickly. Should these differences between me and Teratech remain unresolved, I'll resign from Lead Developer of the Fusebox Framework on August 12th, 2009 at 6:00PM EST. At which point in time a fork will be made available to the public and the essence of Fusebox will live on under a new banner.


*Myself, Tony, Chris and Robert all work for the same company and I felt it best that a person from the community outside of our company was on the copyright. Since the mind share of the current version of Fusebox is Sean's I felt it appropriate that he be on the copyright, we have spoken and he is in agreement.

Monday, August 03, 2009

Want to Learn OO?

Last week Ben Nadel posted an entry detailing how to win a free ticket to CFUnited, which rocks. Since I am giving 4 different presentation I didn't figure I was eligible for a free ticket. I resisted posting my anticipated topic, which is probably Living the in Cloud from Sean Corfield (which I will be missing the first time through thanks to my Fusebox presentation) or Thinking outside of the ColdFusion Box. I digress though, in reading the comment stream from Ben's entry (how you enter by the way) I've noticed a pattern that many of the respondents are wanting to learn more about OO. I find this so funny since we've all seen recently how evil OO can be. I have not really weighed in and I will, mostly, not weigh in on that subject. If you choose you would like to learn OO and have not been scared away!

Welcome to the Treadmill

Learning OO is admirable and hard, we've seen this detailed hundreds of times. The world is full folks using the big D word (depends) and many folks on the treadmill known as learning OO. You see learning OO is not a steep learning curve it is a treadmill. You feel like you are getting no where because not matter what you do you really are getting no where. Don't give up on me yet, let's think about this for a second. You don't get on a treadmill to get somewhere, if you do you are indeed a moron. You get on a treadmill to get fit, stay in shape, build stamina etc.. Learning OO does not allow you to build anything new or different than before. Don't think that once you have learned OO you will magically have a different end result. You will not. The end result will be the same, a functional application. Now how it is accomplished will be drastically different but the end result is the same. What the hell does this all mean? Well a couple of things really.


Setting Expectations

Firstly if you want to learn OO just do it. Not just learning OO but give OO it a try and accept what ever comes out*. Remember this is a treadmill, there is no end only more running. If you get tired, annoyed or are otherwise not seeing the results you want get off the treadmill. Try something else for a while, and maybe you can come back and try again later. Next time you try though remember there is no end and learn from what you did last time. Maybe this time you can push yourself harder or dig a little deeper, or maybe now you have a new pair of shoes (but let's face it shoes may help on a real treadmill but typically when I program I don't wear shoes).

Secondly, and this one is a bitch, you can not learn OO in 50 minute increments by listening to community leaders. No matter how great the presenter's OO foo is there will be so much context, back story and other situational circumstances encapsulating everything he/she divulges that you will inevitably misinterpret what he/she is saying at least 40% of the time. If you want to learn OO going to presentations like this is like drinking an energy drink; it is great for a short jittery unfocused burst of learning OO but it typically is no help in long term commitment to learning OO.

Should this discourage anyone from going to these types of presentations? Heck no, just know what to expect and know that you have to focus that energy on 1 concept at a time as you learn. You should also try to learn/attend presentations that are more focused and/or that teach critical thinking skills. While some presentation or practices will not mention anything about OO they will indeed go a very long way in enabling you to learn OO.

Red Bull Presentations

So what presentation might one visit to learn the skills to use to learn OO? You may think oh hows about your presentations on Java. Java is OO that will enable me right? Nope that'll screw you up, bigger than life. Do not go into learning any other language with the hopes of learning how to program OO in another (drastically different) language. That's like trying to kick your smoking habit by increasing the amount of alcohol you consume. Might sound good at the time but it's just gonna fuck you up more in the long run. There are good reasons to learn Java wanting to learn OO in an "OO language" is not one of them.

Design Patterns for ColdFusion that has got to be an enabler right? Nope, sorry it's an energy drink. Presentations like this are good for you if you've been on the treadmill for a bit; you know where your pulse is accelerated but you're still trying to find your rhythm. If you've been playing OO for a while but don't have that background or know a design pattern or 2 but don't quite grasp why or how these design patterns are use these types of sessions greatly help in clarifying and possibly introducing a new design pattern. The reality is it's buck shot, it's a spray of design patterns, if you try to pick them all up you are being unfocused, yep energy drink. Most design patterns warrant their own sessions to really allow the exploration of real life examples on how they solve a problem. Maybe next year we can have an evening of Design patterns with 25-30 minute BOFs (not presentations, BOFs) discussing a single design patter, and have 2 or 3 BOFs a night.

Getting the Tools to Fish

Enough with the what not to go to, you want to learn OO right? At least at first take language out of it, that's what a good enabler will do. These are learned skills that are not specific to a language. Note: I said at first sooner or later language is key to understanding what concepts to even attempt. A Presentation like Design Diagrams for CFCs and Databases is an enabler. This helps you learn the language of OO. What's the point of attending a design patterns presentation if you are not even going to entirely capture the real meaning of some of the words used? The beauty of learning the language of OO and how to design is you don't even have to code to see if your OO concepts you are learning will hold up. If you can diagram you can make a system with pretty cave drawings first and see how well it will work.

Next one of my topics Red Green Refactor. Learning how testing works and why testing produces better code really can empower a person. Beyond improving code this gives you a mechanism to learn anything. I've found, as have others, when I want to learn a new language first thing I do is figure out how to write tests. In respect to OO, what you will find is that Tests, and TDD, allow you to first hand interact with the Objects you create. Its like a UAT for your objects. The theory is if I write a testable object I've written a better object. Sometimes reality begs to differ but at best I've written very nice Objects, at worst I now have tests that will help ensure my API and functionality is the same when I go back to refactor it later. That is pretty empowering and really helps you get off that treadmill of OO for a bit and pick back up later without concern of tripping on your shoe laces.

Lastly, and admittedly this is a bit of a buck shot presentation, John Paul Ashtenfelter's Thinking Outside the CF Box will do just that bring you into a different world that forces you to think differently. I say earlier you should never learn another language with the motivation of learning a concept to apply somewhere else (don't learn Java so you can do OO in CF). That being said learning how other languages operate or how life is made simpler elsewhere can really open your eyes and help you think differently about how you solve today's problems in today's language. Learning concepts elsewhere is a good idea you just always have to make sure you temper those ideas and apply them (or not) in the proper way of the language you are working with at the time, otherwise you end up with interfaces in CFML.

Everything has it's place

I want to stress that all the presentations bring great value to the community. However, you need to know yourself and your comfort level and attend appropriately. Obviously I think learning Java is a great idea but the context/motivation for learning it is not learning OO it is learning it to leverage it in ColdFusion, or learning another skill set to increase you value in the technology community. Presentations on OO or OO concepts like design patterns help re-enforce what you are trying but unsure of, it also may provide the little extra boost of energy you need. Good luck to all that entered (hell the drawing will have happened by the time i publish this) and good luck to all that attend. If they will help please attend my sessions, I hope to see everyone at the bar sooner or later.

*I've shared this story before but my first attempt at OO was back in ColdFusion 6.0 and I cfincluded my first object on the page. I quickly learned how stupid it was to do this and that I really failed miserably at OO but I learned and got better. The key is I just tried and learned, I'm still on the treadmill.