cf.Objective() 2010 — Day 2
Part two of my cf.Objective 2010 series. I was a bit worried this day was going to be rough as I had been at the office until almost 10pm the night before. I was a little late the first session and missed breakfast but for the most part I was more awake than I expected. It helped that the first couple sessions weren’t entirely boring. Actually the session on Flex 4 was pretty interesting, but still wasn’t earth shattering information.
ColdFusion & jQuery: Two Great Tastes That Go Great Together
with Jeff Coughlin
I came a few minutes late to this session so I missed the introduction.
When I walked in Jeff was talking about the cfmediaplayer tag in CF9 and how you can hook into it with JavaScript. Specifically he was using jQuery to control the flash video player that ColdFusion was outputting to the screen. So he had it set up so that when the user clicks on any one of a specific set of links jQuery takes the value of the href attribute of that anchor tag and updates the source attribute of the media player then plays the new video.
Then he showed an example of using CF9’s built in cfmap & cfmapitem which use the Google Maps API to output a map that can be interacted with. The cfmapitem take is used to defined 1…* points on the map. He then used jQuery to add a link the each map item’s detail view which opened a video in a jQuery pop-up window.
Jeff’s final demo was a slideshow with rotating images, cross fade transition, and a semi-transparent caption bar at the bottom of each image. This seemed to me to be a pretty simple demo but I am pretty familiar with JavaScript and have played around a bit with jQuery. One simple but neat feature was that when the user hovers over the slideshow with the mouse it pauses the image rotation. He had other features that seemed pretty standard for that kind of widget.
Flex 4 for Flex 3 Developers
with Jeff Tapper
First note for this presentation is that it was not intended for people who have never used Flex before. It was truly for people who have been developing with Flex 3 and want to move to Flex 4. Pretty specific subject matter so the numbers were pretty thin. That being said I wasn’t sure I would get much out of it. I have been playing with Flex 4 a bit using the command line SDK but I am coming more from Flex 2 not Flex 3.
The most jarring difference is that there are new libraries (new namespaces). No longer do define all of your components using the ‘mx’ namespace. Jeff pointed out that one reason for this is a shift from favoring inheritance for a composition approach. He cited the example of most components in F3 inherit a ton of layout specific properties such as scrollable (default true). Which you inevitably spend time overwriting.
He demonstrated how easy it is to create custom layout types in F4, rather than creating a custom container component. If you need a layout other than vertical, horizontal, or tile you can just create it.
Instead of using repeaters you provide a group with a dataProvider and an itemRenderer and that’s it. It works like a list. All the list class does now is manage selection. Virtualization has been moved outside of the list class and into the layout. This opens up virtualization to almost everything. On top of that, virtualization now works much smoother. Rather than waiting until the item renderer at the top is off the screen to recycle it for the new item appearing at the bottom, now it creates new renderers and junks the one at the top.
The states model in F4 has been simplified. You can define inline state properties when you define a component. The example I have below shows how the Button component has a label of ‘Register’ when the state is ‘register’ and a label of ‘Login’ when the state is ‘login’.
<s:States>
<s:State name=" register" />
<s:State name=" login" />
</s:States>
<s:Button label.login="Login" label.register="Register" />
Containers not only do not inherit layout functionality they do not inherit style functionality which is not delegated to the skin component. One key to this concept that I didn’t understand at first is that you need to think of a skin as not just the colors and styles of a component but also the structure.
Something to note about F4 is that there are several more complicated components from F3 that are not available in F4. However you can still use the MX library version in F4 but there are a few special components you need to use with them like MXDataProvider.
One thing I asked Jeff about because I was curious, was if you could compile an only F3 app with the F4 SDK. I assumed that because the F4 stuff is mostly in new libraries that this would not be an issue. He said there is a option for F3 compatibility mode within the F4 SDK. Also that the new SDK is faster in general.
Building RIAs with jQuery & jqGrid
with Ezra Parker
Ezra gave a quick elevator intro to jQuery, prefaced with the disclaimer that this was not a talk about how to use jQuery. He pointed out several key features of jQuery including Utilities (which currently only consists of one, Position), themes, and widgets.
Generally I found this session a little too introductory for me. He didn’t show how jQuery works but rather what it can do. Which to be honest, I found even less useful. If I want to know what properties are available for the accordion widget I can get all of the information in the available documentation online. It seems a bit out of place for such an ‘advanced’ conference. If it wasn’t for the fact that there where not any other sessions that I felt where more, relevant I would have left. I am not at all suggesting that Ezra was a bad speaker or that the presentation was bad. Just that for me personally it was not very compelling. If you are interested in more specifics of the jQuery portion of his presentation seek it out for yourself.
The jqGrid information was a little more interesting to me because it is not something I have worked with before. However, it was still information I could easily get from online documentation and experimentation.
Deploying ColdFusion Applications with Ant
with Doug Hughes
The idea behind deploying with Ant is to automate all of the things you do to get your code from development to production. Automating these things helps to avoid user error, missed files, wrong environmental settings, etc. Ant is an Apache product that was primarily built for doing Java build processes. The way you primarily interact with it is by writing build files in XML, which are basically descriptions of what you want to have happen.
Doug briefly introduced Ant and then jumped right into examples. His first example was pretty simple. First he walks through his scenario without using Ant. He throws in some pretty extreme ‘accidents’ but makes a good point. The whole processes, with him explaining it, took at least 5 minutes (and it was a very simple example). Then he did the whole thing using Ant and it probably took about 10 seconds.
CFAnt is a project Doug started that provides pre-built Ant tasks to aid ColdFusion developers deploy applications.
…lapse of attention span … caught fragments of the talk on CF9 ORM with Hibernate … looked like a good presentation but I am really starting to crash at this point. One more session to go. I think he got more in-depth with specific hibernate stuff than session I have seen about it before.
Don’t Let OO Drag You Down: A Pragmatic Look at OO Design and Development
with Brian Kotek
This session was not exactly what I expected. Brian had a tendency to ramble a bit and I think he thought he was simplifying things more than he was. But maybe I was just too tired.
What I think he was trying to do was break down some examples, each starting with a poor OO
implementation and then gradually getting more complicated but being a better implementation. I have
to say I didn’t entirely agree with his reasoning or maybe just his examples. Without actually using
the terminology he was really talking about OO Patterns. If you are interested in these
patterns I have compiled a couple lists of Wikipedia articles that are relevant.