CFDevcon 2008, Brighton, UK

Viewing By Month : October 2005 / Main
October 26, 2005
Jennifer says:
At tonights meeting I'll be going over some new features and bug fixes in CF 7.0.1 (Merrimack). We will also be going over some details of upcoming product updates announced at MAX. Color commentary by Sean Corfield.

7pm tonight
601 Townsend at the corner of 7th St
1st floor meeting room on the left (Kojak)
San Francisco

This meeting will also be broadcast via Breeze: http://mmusergroup.breezecentral.com/bacfug1005/

See you there?


Well, I finally got around to installing Ruby on Rails this evening. Apparently it's very easy on some platforms but on Mac OS X it's kind of a pain. First off, OS X 10.4 (Tiger) ships with Ruby 1.8.2 which is what you need for Rails. However, as with several pre-installed OS X packages, it needs a bit of tweaking and some careful nudging...

Tony Arnold's Rolling with Ruby on Rails on Mac OS X Tiger is a great place to start. He offers an installer package that fixes the pre-installed Ruby and adds Rails etc. Caveat: if you have CFMX 7.0.1 installed, your httpd.conf file probably has some LoadModule directives after the AddModule directive block - move those LoadModule directives up to the end of the main LoadModule block before running the RoR installer!

Then he says to update your rubygems - make sure you switch to GCC 3.3 before doing this!

sudo gcc_select 3.3
sudo gem update
The MySQL gem will not compile correctly with the default GCC 4.0 version - you will not be able to connect to MySQL from RoR because the authentication will fail. That cost me an hour of frustration!

Then you can run through his test application example and it should just work. Pay particular attention to the chgrp and chmod commands he specifies and the directives in Apache to tie it all together.

At that point, you'll probably want to walk through the two part ONLamp Rolling with Ruby on Rails article: Part 1, Part 2.


October 25, 2005
Vineeta at Lintas asked me to post this ColdFusion / Flex position. It's a long term contract for one of his clients in Michigan. Contact Vineeta directly.
Skills Required:

Strong Flex, ColdFusion, Oracle and SQL development experience with TOAD, UNIX Shell Scripting, Java, and Web Services/XML would be definite assets.

Education/Knowledge: University or College Diploma in related field;

Experience / Skill: Five years of Web Development experience

Job Knowledge - Knows, understands and appropriately applies the technical /soft skills, methods and processes required for the position. Is able to learn, retain and apply information to the job, keeps current with new and/or updated program information, trends and developments in field.

If interested please send your resume in word format along with desired hourly rate and contact details.

Best Regards,
Vineeta.

Vineeta Srivastav
LINTAS, LLC.
566 West Adams Street, 4th Floor,
Chicago, Illinois 60661
(312) 681-5400 -Phone
(312) 681-5454 - Fax
vsrivastav@lintas.com


October 24, 2005
Wow! I just watched the Q206 results Breeze presentation with Betsey and Stephen telling everyone about the record quarter we've just had. Studio 8 is doing well, Breeze continues to grow strongly, Flex 1.x added another 100 customers last quarter. It's all impressive stuff.

And, no, before you start complaining, ColdFusion was not mentioned in the earnings report. As those who were at MAX heard, ColdFusion is doing just fine so don't worry! Don't expect every product to be mentioned in every utterance from Macromedia - we make a lot of products you know!


October 23, 2005
Nahuel has a great post on AS Fusion about why a ColdFusion developer should care about Flex 2.0. This is a response to criticism leveled at Nahuel & Laura for indicating they would, over time, be writing less about <cfform> and more about Flex 2.0.


October 22, 2005
Jonathan Cogley recently presented at the MDCFUG on Test-Driven Development. He's normally a .NET guy so he figured he'd learn ColdFusion so that he could speak to the CFUG in their own language. He blogged about his experience and, although he says that it was a big mindshift to learn a tag-based language, he notes:
...the fact that I was able to become mildly proficient in a new environment and prepare my examples for the presentation is a great testament to the platform!
I came from a C++ / Java background and, at first, found the tag-based syntax to be a bit challenging (to get used to) but nowadays I'm very comfortable with it - and don't use <cfscript> at all.

I like that Jonathan draws a parallel with other tag-based languages such as the various XML-based dialects in build tools such as ant - and notes that developers can have difficulties learning those languages too.


To make life easier (I hope!), when viewing a single entry now on the blog, where you can already see all the comments, the comments link just takes you to the bottom of the page where the post comment form is placed inline in the page. Adding a comment there will refresh the page, showing the entry and all the comments. This should help users visiting the blog from news readers that have integrated browsers (like NetNewsWire).

Also, if you click on a category that has a lot of entries, you will get the first 100 and a "More articles..." link at the bottom.

And I've added a Skype badge at the bottom of the right hand column.


October 21, 2005
BACFUG will be meeting next Wednesday, October 26th, and the topics will be a recap of MAX for those who missed it and an overview of what's new in the recent ColdFusion MX 7.0.1 Updater. Speakers look like being Jennifer Larkin and myself. I expect it will be fairly informal and we welcome attendees who went to MAX and/or who are using CFMX 7.0.1 to contribute to the discussion.

What sort of topics would you like to see covered at future meetings?


I have uploaded my Concurrency library to riaforge.org and made the 1.2 release available as a download there. Visit the Concurrency for ColdFusion MX project on riaforge.org. The code in the CVS repository includes the beginnings of the TaskVector component I promised a while back and the beginnings of some reworked documentation (in HTML format).


My wife & I are going to a cat show in LaPlata, MD the first weekend of December. We're arriving Thursday and leaving Monday so I'll be in town for Friday 2nd if any local user groups would like to take advantage of that...
More details on the Jungle Lovers cat show website.


Macromedia has a section on the Developer Center dedicated to MAX 2005. It provides in-depth reports on the Day 1 General Session, Day 2 General Session and the Sneak Peeks Session. Even if you were there, these make great reading because of the depth of detail - they're bound to jog your memory about things you either missed or can't quite remember.

Another section of the Developer Center worth checking out is the Community Area which provides a one-stop shop for upcoming events, Macrochats, user group information, blogs and quick links into the forums and Developer Center sections.


Evan H. Donaldson of Eastridge Infotech says:
I am looking for 3 Sr. Web Developers with ColdFusion expertise (*possibility of direct conversion if desired) in beautiful San Diego for a leading Biotechnology company. Looking at your experience, I thought that you might know someone!
Here's the job spec:

Sr. Cold Fusion Developer (3 month contract / contract-direct)

Job Description:

  • We are looking for a strong Sr. web developer with experience designing, developing, deploying and supporting ColdFusion applications.
  • Expected to be a self-starter that works well with the existing team.
  • Developer will need to write detailed specifications, develop code, testing/debugging of code and provide support.
  • In addition, the developer will be required to document designs, procedures, manuals and other documentation needed for the applications.
Experience Requirements:

Requires at least 8 years technical experience in a similar position.

  • In-depth knowledge of applicable Web-based application programs and programming languages is required.
  • Excellent problem solving and customer service skills and attention to detail needed.
  • Excellent organizational and communication skills as well as effective problem analysis and resolution abilities needed.
Additional Requirements:
  • Highly motivated, assertive self-starter that is goal-driven and detail-oriented
  • Great communicator, written and verbal
  • Effective: able to work across functional groups to meet aggressive schedules Independent: able to work with minimal supervision while maintaining focus and productivity
  • Flexible: able to quickly adapt to new situations
  • Macromedia ColdFusion 6.1 MX expert
  • Experience developing dynamic applications using XML / HTML / DHTML / CSS / JavaScript
  • Write SQL (both DML and DDL) and working with databases In-depth knowledge of FuseBox 3 methodology
Desired Expertise:
  • Experience developing medium to large eCommerce systems In-depth knowledge of Model-View-Controller (MVC) architecture
  • In-depth knowledge of XML and XSLT including integration using CFMX and/or Java XML functions
  • Experience developing medium to large eCommerce systems
  • Experience with development tools such as ColdFusion Studio
  • Experience with WebServices / SOAP / Middleware Life Science /Bio Technology experience
Contact Evan by email or phone (619) 260-3947.


I was chatting with Michael Dinowitz tonight about one of my pet peeves. He suggested I post something on cf-talk. I thought I'd post it here first, just to start a discussion.

Memory is not persistent. That means application scope is not about persistence. Wikipedia defines persistence as:

...the characteristic of data that outlives the execution of the program that created it: which is achieved in practice by storing the data in non-volatile storage such as a file system or a relational database. Without this capability data structures only exist in memory, and will be lost when a program exits. Persistence allows, for example, a program to be restarted and reloaded with the data structures from a previous invocation of the program.

ColdFusion documentation and developers seem to have a history of misusing "persistence" to mean storing data in application or server scope (or even session scope). If ColdFusion developers want to be taken more seriously, we need to stop misusing terminology and start speaking the same language as the rest of IT...

Like I say, this is one of my pet peeves!


October 20, 2005
Folks at MAX saw Damon Cooper demo RDS support in Eclipse - the most requested feature for the CFEclipse project. I will be working with the CFEclipse team over the next few weeks to help them put together a roadmap and release schedule so hopefully we will soon be able to say when you might expect RDS support in a CFEclipse build.

What I'd like to hear about are other things you'd like to see in CFEclipse. Not the small, niggling little bug fixes - there's a good process in place for managing those (the bug tracker on Tigris). What I want to hear about are the bigger concerns, the futures. What could CFEclipse do to make your life as a developer easier? How can CFEclipse help you write better code?

I'll be posting some of my thoughts over the next few weeks in this new cfeclipse category - stay tuned!


In the end, Mike's session on Flash and AJAX was the only one I got to on Wednesday. A couple that I was interested in were completely full (despite being run multiple times) and I didn't feel like standing or sitting at the back. So I sat in the hallway and did email and chatted to a variety of folks who were either skipping sessions or were just plain late to sessions.

The general sense I got from everyone was that this was a great conference with excellent sessions - and several people commented that there seemed real technical depth to this year's sessions that had been missing in previous years. And of course the biggest excitement was the Flex 2 product line and the opening up of the technology so that everyone could try it now with the alpha and buy it later because $1,000 would be within their reach.

Expect to see a lot of Flex applications appearing over the next six months or so!

It was great to see all those folks that I got time to chat with - sorry that I didn't hook up with everyone I knew who was there.


My site was offline for a while this morning due to "a problem with the Apache configuration" according to the support folks at HostMySite. As usual, they responded very quickly when I sent them an email about the problem. Apologies for any inconvenience!


October 19, 2005
Mike Chambers gave a great overview of how to use the open source Flash / JavaScript integration kit to communicate between rich media and HTML together on a single web page. He used the MXNA click report as an example: you can interact with the chart and the HTML on the page updates accordingly (without a page refresh); you can also click on categories and feed names (in the right hand column) and the page content - both Flash and HTML - updates without a page refresh. It's a slick experience and Mike showed that it really isn't that hard to achieve.

Then he talked about the new-in-Flash Player 8 ExternalInterface API that makes it even easier to interact between HTML and Flash using JavaScript. Impressive!


October 18, 2005
Jen has blogged a pretty complete set of notes about what was shown in the sneaks this evening! Also see Kai König's blog about it.


For nearly an hour and a half, various folks from the product teams showed cool pre-alpha features from potential upcoming releases of their products.

We saw several Flash / Flex collaboration examples; Flex debugging and testing with Mercury's testing tool; ESRI demonstrated a new version of their mapping system - very high performance due to the vector maps in Flash - with search by IP address as well as name, phone # etc; CFEclipse with RDS query and file system browsers and a visual query builder; a Flash Media Server event gateway for CFMX; Flex Builder enhancements to show container hierarchies in design view and a variety of cool code navigation stuff in code view; simple AJAX application building in Dreamweaver - using bindings and drag'n'drop behaviors to create AJAX code; Contribute integration with Microsoft Internet Explorer and Word (via toolbars); some stunning enhancements to Flash authoring to support mobile and device content development.

I'm sure I've missed a few things... I remember Captivate and Director were also featured (but I'm not familiar enough with those products to really know what was new in the sneak peeks).


Scott Van Vliet showed a variety of techniques for intgrating Java into ColdFusion. He started off showing things like the page context object and how to access request headers etc. Then he moved on to show how you can create and use regular Java objects in ColdFusion.

Next he showed how to share application and session variables between ColdFusion pages and JSP pages running on the same server instance.

Other things he covered were JSP tag libraries and event gateways, the latter being a very powerful form of Java / ColdFusion integration.

I would have liked to see a bit more structure and a bit more justification to some of the examples but I think everyone got a good sense of how powerful - and easy - the combination can be.


The core of today's general session was a skit based on the Studio 8 "meet your match" promotion, with Tim Buntel acting as master of ceremonies and introducing different "features" on a variety of products.

First under the microscope was Flash video. There has been a huge uptake in video on the web with a large and growing percentage of young adults watching video online. Flash video is gaining acceptance because of the reach of the Flash Player and the ability to embed video directly into web pages. Flash Player 8 brings a new codec offering improved performance and quality.

Jen Taylor of the Dreamweaver team showed how easy it is to embed Flash video in web pages, using Dreamweaver. She also demonstrated several of the new DW8 features (guides, zoom, code collapse).

Next up Steve Kilsky of Adobe showed the future of After Effects, with a unified user interface, simple keying (green screen) and alpha transparency and a number of professional-looking, easy to use animation effects. He also showed direct export to Flash video. Then Mike Downey (Flash product manager) showed the powerful Flash video import tools in Flash 8 Professional. All very slick! Mike also noted the new Flash Media Server 2 release and said that streaming video service providers such as Akamai are busy upgrading to that new release so that everyone will have access to the new, improved Flash video.

Back to Tim and the dating service, he introduced Jeremy Allaire who took us through the forthcoming "Internet TV" offering from his company Brightcove. This allows simple publishing and distribution of video and assets through online television-style channels. The system handles advertising and e-commerce (pay-to-view, pay-to-download etc) as well as video programming (i.e., creating "lineups" containing media and advertising policies and so on). The entire service is offered via a Flex application that lets you manage your assets, upload data (including giant video files), build your "media players" - branded Flash video playback skins and so on. Incredibly impressive! A real "WOW!" factor...

Next we had a video cameo of Ben Forta, hinting at the next release of ColdFusion MX and wishing everyone well since he couldn't make the conference. I couldn't help noticing that he was wearing one of Will Tomlinson's ColdFusionGear "Property of..." T shirts.

Tom Hale talked about improving the communication experience and how Breeze enables all sorts of people to interact effectively. He introduced a short video interview with two guys from Cisco who talked about baking Breeze into their next generation virtual meeting / communications equipment then Tom showed a Japanese application built on top of Breeze that took advantage of the customization available, including custom Flash graphics objects for the whiteboarding pod to allow math e-learning.

Next up was a quick demonstration of a new beta product - "Room Extensions" - that allows developers to create their own plugins for Breeze. Tom showed a Closed Captioning extension and then Nigel Pegg and Peter Ryce demonstrated some collaborative applications running inside Breeze. Nigel said the extensions were possible using two simple primitives that broadcast and receive messages, via the Breeze server. They also showed how an Excel spreadsheet could be converted to an interactive Flash app and shared thru Breeze (I didn't catch the name of the third-party product that did this, unfortunately). Oh, and the first Breeze demo was an app built with Flex Builder 2!

Mobile & Devices was the next focus with Al Ramadan talking about the growth of the market and the advances in the devices. iRiver will be releasing a Personal Media Player powered by Flash that will be able to play Flash video as well as audio etc. Nokia continue to do more with Flash on their cellphones - we saw a video interview with several Nokia folks from Europe - and Qualcomm's BREW system will be adopting Flash Lite. The next generation mobile player, Flash Lite 2.0, based on Flash Player 7, will be available from Macromedia <labs> in January. Bill Perry showed the support for mobile app development in Flash 8 Professional (slick) and Josh Ulm showed FlashCast and talked about user interface work on devices.

Finally Kevin took the stage to present the MAX Awards. Some very impressive user experiences took the top slots (including the air traffic training app from Australia that I saw demo'd at MXDU 2005 earlier this year). At the end we all got to vote via SMS for our favorite entry - the votes went to a CFMX server and were tallied and displayed back to us through a Flex user interface in real time. A nice touch!


The morning started with a lively breakfast conversation with a ColdFusion developer who is learning Flash and wants to persuade his company to start using Flash to provide a better user experience on their applications. This has been quite a common theme at the conference, with developers looking to Flash and/or Flex as a way to bring great interfaces to the applications they are building with ColdFusion - and a general sense that Flex Builder 2 brings that within their reach.

Then I had a good chat with Tom Jordahl and Bill Sahlas of the ColdFusion team about what was coming up in the sneak peek later in the day as well some thoughts about Scorpio (CF8). It's an exciting time to be a ColdFusion developer!

Next was the second run of my Enterprise Integration talk. It definitely felt a bit smoother today although I ran through it a bit faster than yesterday and left quite a bit of Q&A at the end - but only got a couple of questions. I need to reorganize the "challenges" section and add in some notes about XML standards still allowing a lot of leeway in data formats (from comments after yesterday's talk - I remembered to mention it today but didn't integrate it into the slides).

After lunch I had planned to attend the RIA best practices session but it was extremely full so I sat out and chatted with several ColdFusion developers - including an interesting discussion about object modeling and the differences between a data model representation and an object graph representation (objects refer to objects directly by reference, data models use keys to identify entities).


I stayed pretty close to my plan today (Monday) so let's see how I do tomorrow (Tuesday)!

8am Not sure... maybe Integrating ColdFusion with Flex?

9:15am ColdFusion Enterprise Integration (me!)

10:30am General Session / Keynote (with a ColdFusion focus I believe)

1:30pm Probably RIA Design Best Practices: Theory for Developers

2:45pm Perhaps Leveraging Frameworks and Development Methodologies or maybe Next Generation Flex: Data Services

4pm Developing Hybrid Applications with ColdFusion and Java or maybe the SAP Flex / Netweaver session?

5:30pm Sneak Peaks

6:30pm CFC BOF


After another free beer'n'snacks session in the main hall, I hurried upstairs to "meet the ColdFusion team" for their birds of a feather session. Lots of good questions were asked about possible future features, some of them new, some of them common requests. The CF team enjoyed getting the feedback and had good answers for a number of requests. One thing that came out several times tho' was that when they hear a request for feature X and start to drill down into what that really means, users don't always have specifics. The more specific you can be when requesting an enhancement, the more that helps the team evaluate the feasibility and desirability of the request.

Then it was time for my Java/CF integration BOF. Considering how little feedback I've had from folks before the conference, I was surprised at how well-attended it was! I led off with a couple of examples of Java/CF integration from macromedia.com (Google appliance API, credit card authorization) and then asked the audience to volunteer stories. Most were success stories, some were genuine war stories tho'... Some specific issues that came up included: handling of Java native array data types, overloading / casting, class path issues, JAR versioning. The latter two were probably the issues that caused people the most grief, and they are both really Java core issues rather than CF-specific issues. Tom Jordahl was in attendance and said he would welcome feedback on ways to help people resolve those issues.


The Flex / AJAX session was full so I caught a repeat of Ray's session (which I'd missed earlier because it was full!). Ray gave a great step-by-step overview of the new-in-CF7 Application.cfc framework, showing how each method works and when you might use it, as well as giving several caveats to help developers avoid mistakes. Good presentation!


October 17, 2005
Jeff Peters gave a good introduction to OO, and showed how basic OO principles are implemented in ColdFusion. It was marked as an advanced topic but I felt it was more introductory so I was clearly not in the target audience. As always, Jeff did a good job with a lot of real-world examples to explain how the concepts actually apply.

I had to duck out near the end so I could go and set up for my session on enterprise integration. It's the first opportunity I've had to give this talk (because I only wrote it a week ago!) so I wasn't sure of the pace or timing. I felt it started out a bit rocky and I was going too fast but the second half of the preso seemed to go more smoothly and the immediate feedback from attendees seemed very positive - thank you! Hopefully I'll feel happier about the talk when I give it again tomorrow morning.


The general session opened with Ze Frank talking humorously about what Macromedia Flash has done for him over the last four year. Bizarre but pretty funny.

Next up Stephen Elop talked about the great things we've seen since MAX 2004 with Studio 8 and ColdFusion MX 7, the rapid adoption of Flash Player 8 (he commented that around 400,000 people would download the player worldwide while we were sat in the General Session!) - ColdFusion got several mentions as a great success over the last year. He pointed at some of the great experiences on the web and picked out Harley Davidson as a particularly compelling use of Flash.

Kevin Lynch came on next and talked about what is possible today with the Flash platform. He mentioned "web 2.0" and showed the MeasureMap hybrid HTML/Flash blog analytics application then moved onto the roadmap. Now we have Flash Player 8, Flash Lite 1.1, Flex 1.5 (and Flash Lite 2.0 just shipped to manufacturers). Guido Schroeder of SAP spoke about the value of Flash for their enterprise applications and demo'd their Visual Composer tool generating MXML / AS to create slick Flex user interfaces.

Coming soon is Flex Builder 2, Flex 2 and Flash Player 8.5 (all available in alpha downloads from Macromedia <labs> - read Scott Fegette's article about the <labs> concept). Kevin said the new player is being reported to provide big performance boosts (caveat: depends on what your app does!). FP8.5 also brings a richer ActionScript language, native regular expressions and native manipulation of XML (E4X). Sho Kuwamoto, co-lead on the Flex Builder team, did a live demo (effectively the same as Kevin's recent demo at Web 2.0) and then William Wechtenhisen talked about what the Flex Enterprise Data Services will provide and showed a real time chat / photo-sharing app built on Sho's Flickr search app. Enterprise Data Services will open up JMS and many other enterprise-class systems to Flex apps.

Kevin also announced a partnership with Mercury Interactive that will provide hooks for automated testing of Flex applications.

Then Kevin showed some possible future scenarios (very slick integration of applications on the web / TV / devices with both online and offline collaboration features). He covered the future architecture of the Flash Platform - a full stack from solutions to low-level services - and then gave a brief overview of "Apollo" - a project to provide a Flash / HTML hybrid experience outside of the browser, offering data synchronization and online / offline operation.

Next up was Mike Sundermeyer of the Experience Design team who postulated a unified media control system across TV, PC and mobile devices that provided a rich, intuitive, personalized, collaborative - and overall emotional - experience.

Finally, Bruce Chizen of Adobe talked about his hopes for the future of the combined Adobe / Macromedia company and his commitment to the importance of great experiences.

After that, a very nice lunch was served (real service with wait staff and silverware!).


Alistair and Stephen of Macromedia Consulting (formerly of iteration::two) explained the Cairngorm Rich Internet Microarchitecture. This was my first exposure to Cairngorm and was marked as an advanced session but I figured that I'd find it interesting anyway. It turns out that Cairngorm is effectively a set of design patterns and a recipe for how to use them together so I was pretty comfortable with the material.

They went through each of the major pattern collaborations in a Cairngorm-structured Flex app and emphasized the benefits of an event-driven architecture, using named, high-level business events rather than just the low-level click / drag type events in Flex.

The design patterns include Front Controller, Command, Service Locator, Business Delegate, Value Object and a Model Locator. Together they provide a powerful and compelling structure that makes it easy to scale applications as features grow. To demonstrate that, Alistair did a live enhancement to the demo application (the Cairngorm-structured Flex store) in just five minutes that would have taken substantially longer without a framework in place.

Definitely sparked my interest in doing more Flex development - and using Cairngorm!


Since the Dinowitz crew cannot be here in person this year, they have set up a MAX blog to act as a virtual community suite with various guest bloggers.


I figured I'd try to post my plan every morning and then see how reality stacked up against it later in the day.

8:00am Flex Frameworks: Cairngorm and More (or maybe RIA Design Best Practices: Theory for Developers)

9:15am ColdFusion MX 7 Application Framework or Architecting Flex Applications (or maybe Leveraging Frameworks and Development Methodologies)

10:30am General Session / Keynote followed by lunch

1:30pm ColdFusion Components as Objects

2:45pm ColdFusion Enterprise Integration (me!)

4pm Integrating Flex and Flash Content with AJAX

7pm Meet the ColdFusion Team BOF

8pm ColdFusion Java Integration War Stories BOF (me!)

But now... breakfast...


Apart from getting a flat tire before leaving the Bay Area, the journey was uneventful. Jennifer and I arrived about 6pm, checked in and found some friendly faces in the convention center for beer and snacks and a wander round the exhibitor booths. Then it was time to catch the bus to Dave & Busters to mingle with user group managers and Team Macromedia folks.

Spent some good time chatting to UG managers from Albany, NY and Sacramento, CA and a few other places, as well as a variety of TMM folks from all over the world.

Networking is one of the biggest benefits of attending conferences!

Now I need to review the schedule to figure out what I'm doing tomorrow morning... breakfast is at 7am and the first session starts at 8am...

p.s. I'm in room 1543 if anyone needs to contact me!


October 15, 2005
Thanx to the excellent support folks at HostMySite, my site has been moved from a CF6.1 SmarterLinux account to a HostMySite Linux Builder+ CF7 account. DNS is still propagating - if the banner is a link to the blog home page** and you see "Powered by CFMX 7!" in the right hand column, you're looking at the new site.

The move was pretty smooth. HostMySite edited my Fusebox core file to fix the duplicate() issue with sandbox security (changing duplicate() to structCopy()). They notified me (and made a backup of the core file - very efficient and helpful!). The only glitch was my heavy set of Apache redirects and other directives - by default HostMySite have those disabled on new accounts but they quickly enabled them for me. Thanx folks!

**Tony Weeg suggested making the banner a link back to the home page - good idea!


Chris Scott (ColdSpring AOP) recounts his experience of learning Model-Glue in a day as he converted his ColdSpring AOP sample application from Mach II to Model-Glue. Interesting to hear a framework author's views on other frameworks.


Dave Ross reports on the CFUG where he presented ColdSpring and Elyse gives an attendee's report. Check out the slides for the talk and the sample code - both linked from Dave's blog post!


October 13, 2005
I mentioned this feature earlier as an add-on but wanted to let folks know that the next release of ColdSpring will include the Model-Glue autowiring code (Dave Ross gave me commit access to the CVS repository - thanx!).

That means that the Model-Glue / ColdSpring integration will be as simple as:

Specify the ColdSpring bean factory loader and location of the ColdSpring bean definition file in ModelGlue.xml:

<setting name="beanFactoryLoader" value="ModelGlue.Core.ColdSpringLoader" />
<setting name="beanMappings" value="/ggcc9/config/beans/ggcc.xml" />
Adding the autorwiring controller (as the first controller):
<controllers>
<controller name="csaw" type="coldspring.modelglue.AutoWire"/>
...other controllers...
</controllers>
Adding setXxx(yyy) methods to your controllers, where xxx is the name of the ColdSpring bean you want to be injected automatically.


There's a shiny new webDU 2006 website with all the details of the conference, taking place at the beginning of March next year.



If you get a pop-up from the Macromedia Flash Player offering an upgrade to the latest player but it errors out when you accept, you may find this Tech Note about the auto-update useful. Note that the error only affects people who were running a beta version of Flash Player 8 and did not upgrade to the release version.


Just in time for MAX, Brian Meloche is blogging. Like Jared Rypka-Hauer, he will be covering MAX in depth for Fusion Authority.


Will Tomlinson, of ColdFusionGear T shirt fame created a banner for my blog. I like the CF in Corfield. I really do need to get a new publicity shot tho!


October 12, 2005
If you've already downloaded my frameworks sample app you'll have seven variants of a single application, all using different frameworks in different ways. Tomoaki Tanaka created an eighth variant, blending Model-Glue and Tartan (mentioned previously on this blog - thank you!). I have now created a ninth variant using the tiered OO model of variant #5 (a Mach II variant), the Model-Glue framework and the ColdSpring framework.

In order to try it out you will need the BER of Model-Glue (which has Joe's latest ColdSpring integration), the 0.2.1 release of ColdSpring which includes both AOP and the Model-Glue adapter from Dave Ross, and you will also need this extension to ColdSpring that adds auto-wiring for Model-Glue controllers.

In this variant, ColdSpring manages all of the model (except the transient note, task and user beans - I may convert these later) and it also autowires the various beans into the controller objects at startup (so the controller objects have no internal initialization code!).

I've also modified how security is managed to use ColdSpring AOP. In the previous Model-Glue variant (#7), security was checked explicitly in various event handlers by broadcasting the checkIdentity message. Now it is handled through "before advice" on the taskDAO and taskGateway objects, using ColdSpring AOP. The advice performs the security check and throws an exception if the user is not logged in. In the exception event handler, a message is broadcast that causes event results to be set if the exception can be handled by another event (in this case the security exception can be handled by the ggcc.identify event, which challenges the user to login).

I think this shows the power of these two frameworks in combination!


This Thursday, October 13th, Dave Ross will be presenting ColdSpring at the Albany NY CFUG. If you're in the area, don't miss this! ColdSpring is a very important development in the ColdFusion framework arena - hear it from the horse's mouth!


October 11, 2005
This afternoon I presented my frameworks talk to the Maryland CFUG. It's the first time I've presented remotely using Breeze Live (which is why I didn't advertise it here in advance - I wanted to see how viable this would be for future CFUGs). It seemed to go pretty well although we lost audio twice due to network glitches at my end. Ajay from Teratech called me after the presentation to say it went very well at their end and was well-received. At my end it was a little strange sitting in a quiet room presenting to "the ether" with no feedback at all! All-in-all, a success - and a format that I might be willing to entertain for other remote CFUGs where it's just not practical to attend in person to speak.

But the lack of a "real" audience... boy, that's a biggie! Made me realize just how much I like the live feedback of people.

A big thank you to Michael Smith of Teratech for inviting me to speak - and I hope the members of the MDCFUG really did find it useful.

You can download the code for the talk - I have already sent the presentation (as a PDF) to Michael for posting on the MDCFUG site.


ColdSpring can deal with the drudgery of creating and initializing all of your model CFCs. Very nice. But when you're using a framework, you still need to explicitly 'wire' the model to the controller - by calling ColdSpring's bean factory to obtain the bean and storing it locally inside your controller. No big deal, you might think, but if ColdSpring can build all of your model for you, why can't it wire it into your controller as well?

The simple answer is because it doesn't know about your application framework so it doesn't know about controllers.

Dave Ross and Chris Scott are working on a plugin for Mach II that will allow ColdSpring to automatically locate the listeners, plugins and filters in your "controller" and look for setXxx(yyy) methods in them. If it can match a setter to a bean that it knows about (from the ColdSpring bean XML file), it will automatically invoke the setter for you.

I thought that was a great idea but I wanted it for Model-Glue!

So I wrote an AutoWire.cfc for Model-Glue. It relies on Joe's BER changes to Model-Glue to support the ColdSpring bean loader. I've submitted it to Joe, Dave and Chris so hopefully it will be incorporated at some point.


How it works: Model-Glue creates the bean factory, then creates the controllers. With the ColdSpring changes that Joe listed, Model-Glue creates the ColdSpring bean factory instead of its own (ChiliBeans). My AutoWire.cfc is a controller that you declare in the XML (as the first controller). At startup, when Model-Glue creates that it, AutoWire then modifies the in-memory Model-Glue object so it can intercept subsequent controller creation. Then, as Model-Glue creates the remaining controllers, AutoWire searches for setXxx(yyy) methods on each one and attempts to match them to beans declared in the ColdSpring XML file.

If anyone is desperate to try this out, I'm happy to send you the work-in-progress code...


October 10, 2005
TheServerSide notes that the JRun team are running a survey for information about your current usage and what you'd like to see in the next release. If you're using JRun for Java development / deployment, it'll only take five minutes to complete the survey!


After my previous post about integrating ColdSpring, Model-Glue and AOP, Joe went ahead and incorporated a hook for ColdSpring directly into Model-Glue. It works beautifully!

I was able to remove the ColdSpring bean factory 'hack' from my controller (see link to Dave Ross's post in my previous entry) and just make the ModelGlue.xml changes that Joe mentions. Using ColdSpring is now so easy with Model-Glue that I expect this is how I'll be building applications moving forward!


After a little bit of trial and error, I just succeeded in (a) integrating ColdSpring with Model-Glue, (b) defining logging advice after a method call and (c) actual logging results returned from methods!

Dave Ross shows how to use the Model-Glue adapter in ColdSpring - the returnType= attribute should actually specify the fully-qualified return type tho'. That combined with Chris Scott's AOP tutorial and a quick read of the source code (download from coldspringframework ).

My LoggingAfter CFC extends coldspring.aop.AfterReturningAdvice, implements afterReturning() which logs a message and then returns arguments.returnVal (very important!).

My ColdSpring XML file specifies:

  • xxxTarget - my actual bean that I want to log methods in
  • xxx - a coldspring.aop.framework.ProxyFactoryBean that references xxxTarget and uses the logAfterAdvisor intercepter (below)
  • logAfterAdvice - my simple logging class
  • logAfterAdvisor - a coldspring.aop.support.NamedMethodPointcutAdvisor that specifies my logAfterAdvice as the advice property and * as the mappedNames (matches anything)

The results of calling methods in xxxTarget are logged automatically!

Logging can be disabled by renaming the xxx and xxxTarget beans (so that my application code calls the actual bean, via the name xxx, instead of the proxy).

Very slick...


Update: see the next blog entry for an even simpler integration!


October 9, 2005
Just a reminder that there's a set of fairly active (if often off-topic) chat channels established on DAL.net IRC for ColdFusion developers. The main channel is #coldfusion which has a bunch of irreverent and fun regulars and then there are channels registered for several of the application frameworks: #fusebox, #machii, #modelglue, #tartan. In anticipation of ColdSpring becoming increasingly more popular, I have just created and registered a #coldspring channel.

The #coldfusion channel is often all over the shop and sometimes politically incorrect in the extreme but the framework-related channels are generally much quieter and much more on-topic.


Chris Scott has posted the first in a series of tutorials on ColdSpring AOP. It's a very good tutorial but it'll probably leave your head spinning the first time you read it: AOP allows you to change the behavior of your code, applying external code before and after certain method calls, without touching a line of code in your original application!

Well, assuming your application is built with ColdSpring in the first place - which is reason enough to start looking seriously at using ColdSpring to assist in managing objects in your Model.

ColdSpring AOP lets you "re-wire" the objects in your Model so that your code ends up calling proxy objects (which in turn call your original objects), and the proxy objects can execute "advice" code before, after or around calling the original methods. This lets you add logging to all or any part of your application, simply by configuring the XML file that defines the objects that ColdSpring manages. Or security. Or...


My "Official Voter Information Guide". Boy, it's really nice to get my own copy of the voter guide! I can vote for the first time this year, since moving here in '99. Five years of dealing with the INS / CIS means that on November 8, 2005, I can do my civic duty and vote on Prop 73 thru Prop 80!

There are a lot of TV informercials about these propositions this year, mostly "No on Prop XX", paid for by a lot of large organizations. Don't be swayed by the propaganda - do your own research, read the text of the proposed laws, make up your own mind.

Use your voice - vote on November 8th!


October 8, 2005
There has been a lot of positive buzz around yesterday's announcement of the Flex 2 product line and David Wadhwani's Flex Developer Center article that gives more detail.

I didn't want to post a "me too!" blog entry - it's been very gratifying to see the overwhelmingly positive response on other people's blogs!

So why am I posting about this at all?

First off, it's a landmark release in many, many ways. Flash for developers like you and me instead of just designers. Flex 1.0 got me excited because I could finally build Flash applications without wrestling with the timeline and the designer-focused authoring environment. I love Flex but I can't deploy it on my site (no hosting). Flex 2 will make that possible: build an app with Flex Builder 2, generate the SWF, stick it on corfield.org. That alone would make me very happy.

It's more than that. Much more.

ActionScript 3 brings ECMAScript compliance. An OO language with stronger type checking and support for E4X. Intuitive, native manipulation of XML data. That alone would make me very happy. [More on E4X: ECMA-357]

Flash Player 8.5 will run ActionScript 3 in an all-new virtual machine (AVM2) while allowing legacy content to run in the original virtual machine. It will run ActionScript 3 "significantly faster, supports full runtime error reporting and industry-standard debugging. It includes binary socket support, allowing developers to extend the player to work with any binary protocol". Speed, power and ease-of-use. That alone would make me very happy.

You think you know how happy I am about this?

There's more.

I mentioned back in mid-July that I was working on a new project and shortly after that I commented that QA was also development. Now that Macromedia has announced the Flex 2 product line, I feel I can tell folks that I had the honor of spending a month working on the Flash Player team doing QA on what will now be known as ActionScript 3 and AVM2. They are an exceptionally talented and dedicated team and they are producing phenomenal work. ActionScript 3 is awesome and so is AVM2. I really enjoyed working on those components of the Flex 2 product line, albeit in a very small way, and I hope you will enjoy using them!

That little bit of product involvement makes me happiest of all!


October 7, 2005

...but nor should it drive your entire application design.

Back in November last year, I posted an entry about data-driven design and pointed to responsibility-driven design which has essentially replaced it. Mark Kamoski just posted a (long) comment on that entry which points out, quite rightly, that a database is important and that some (many?) RDD evangelists speak as if the database can almost be ignored.

I just wanted to clarify that, yes, the database is an important part of most applications because, well, you need your data to persist and preserve its integrity. However, starting to design an application from the database tables forward to the UI is not going to create a maintainable, easy-to-use application. The UI is the most important part because that's what your users see and interact with. The interaction use cases drive the functionality your application must have. Those use cases should drive the design of the model, since it must support all the interaction use cases - and often more if you plan for growth and change. The model determines the data the application requires and that in turn drives the database design.

Database design is important. Your tables should not just be mere shadows of your objects. Objects (classes, really) are designed to satisfy dynamic interactions and represent a variety of entities and relationships in your domain. Databases represent those entities and relationships too but usually in a different form - due to normalization and efficiency concerns (or sometimes just the simple practicality of representing something complex using just columns and rows!). Therefore there is nearly always a mapping between object data and tables.

If you start with the database, that mapping will not be obvious until you get closer to the UI and that's the wrong place to do the mapping - you need the model first and that means focusing on responsibilities, not data.


October 6, 2005
I resubscribed to CFCDev and cf-talk so expect to see me active once again on those lists!

Except for occasionally dropping in on cf-talk via the archives, I've missed all the conversations on those two lists from July 12th through October 5th. If you desperately want my opinion on something I missed in that time, send me a private email!


It never quite feels real until my hotel is booked... Three nights at the Marriott Anaheim... So much for my plan of driving down Monday morning and back Tuesday afternoon! I'm driving down Sunday morning now, to get there in time for the reception and speakers' meeting etc. This way I'll get to see the keynote on Monday and several sessions I expect...

...and give my Monday afternoon / Tuesday morning talk on Enterprise Integration and run the ColdFusion / Java Integration BOF on Monday evening. Oh, and the talk is all-new for MAX, not the similarly-named talk I gave at CFUNITED (and various CFUGs).


October 5, 2005
Someone said (in a comment on a blog posting) that they thought Simon Horwith and I were opposites. I replied that we were probably more similar than anyone would imagine (despite our diametrically opposing views on frameworks). I've just had confirmation of that: I completed my introNetworks profile for MAX and the closest person to me on the experience / skills / interests / personality grid was... Simon Horwith!


October 4, 2005
Joe Rinehart has an interesting follow-up on Simon Horwith's talk about framework-free software development from the recent Fusebox & Frameworks Conference. I didn't see Simon's talk but based on the quotes in Joe's post, I would have disagreed with several of the same points that Joe takes issue with. In particular, implying that the Model is all about data and that databases should be designed first while pushing all of the logic into the Controller portion of an application is, in my opinion, short-sighted and not even close to best practices. Hopefully Simon will clarify some of these issues when he publishes his methodology / framework!


My feelings about wiki sites are fairly well-known but since Hal Helms has gone to the trouble of creating a Fusebox wiki to help make contributing documentation more accessible, I thought I'd mention it.


Expanding the reach of Fusebox, Jared Ryka-Hauer's company is offering a two day Fusebox training course in associated with the Minneapolis Community & Technical College. The cost is only $325 (which is a bargain for two days of training!).


Well, the sabbatical is over and I'm back at work. I have lots of email to delete(!) and lots of post to sort through. It'll probably take me a couple of days to get back into routine (getting up at 7am again will certainly take some getting used to!).

The Salt Lake City CFUG talk seemed to go well on Friday. Thanx to all those who turned up and good luck to our hosts MasterControl Inc completing the office move that started that morning!

After that trip to SLC, our Prius has now done 12,500 miles in about five months and we're still very happy with it. The fuel economy is typically around 46mpg, although long freeway journeys at 75mph (ok, 80mph) drive it down to 40-43mpg. We love the carrying capacity, we love the sat/nav system - we'll never buy another car without that! And at three bucks a gallon, we love the fuel economy. Anyone want to buy a customized '94 Mustang Cobra?


October 1, 2005
Simon has also posted an interesting summary of the Fusebox / Frameworks conference. In particular, this comment is very telling:
The reason I haven't liked most applications I've seen that were built with frameworks is the fault of the developer, not the framework.
In other words, you can write bad code with any framework but don't blame the framework for that! It's very similar to old saw that you can write bad code in any language but don't blame the language.

He also says:

I decided prior to the conference that for the next issue of CFDJ I would ask each of the pioneers of a framework to rewrite the Macromedia Pet Market application in their framework.
He'll be creating a website to host the code for this. The articles and the website should prove a fascinating comparison of the various frameworks!



Just noticed that iteration::two are now part of Macromedia Consulting! Welcome onboard and congratulations! It's been great watching you guys work - you've done some great stuff already - so I'm really pleased you're part of the Macromedia crew now. I look forward to more greatness!


Ben Forta is asking for your opinion on how to implement per-application settings (mappings, debugging etc). Hurry on over and tell him what you think.


Andy Jarrett is getting onboard with Model-Glue and has posted a number of useful resources.


Ben Forta has posted some documentation about CFCProxy that should get you up and running.




Hosting provided by