Viewing By Month : February 2004 / Main
February 29, 2004
Several people have mentioned BatFink to me, especially while I was down under. Those nice folks at Mossy Blog have made the BatFink framework available. Or rather, to be accurate, they've made a sample application available - a wiki - that is built with BatFink (and which provides basic BatFink documentation). BatFink has served these folks well so it's nice to see them put their code where their mouth is - too many folks create private frameworks that never see the light of day!
I'm not going to offer much of a critique - the wiki provides reasonable documentation on the principles behind BatFink (based on MVP - Model-View-Presenter - which is sound stuff) and it does indeed seem to be very lightweight. Download it, play with it and tell them what you like and dislike!
I'm not going to offer much of a critique - the wiki provides reasonable documentation on the principles behind BatFink (based on MVP - Model-View-Presenter - which is sound stuff) and it does indeed seem to be very lightweight. Download it, play with it and tell them what you like and dislike!
February 28, 2004
I've just posted the remainder of my photos from MXDU. Sorry if they're a bit bigger than you'd like! Browse every day here!
Thanx to Andrew Muller and Ben Bishop for providing me with all the names!
Thanx to Andrew Muller and Ben Bishop for providing me with all the names!
February 27, 2004
Update! New Atlanta have just released more details about their precompiled, encrypted templates. Whilst this is a feature that many users have been requesting, it seems a bit brutal to overwrite the source files with the precompiled results. I'll be interested to see how this feature is received by the CF community. The technology preview of Blackstone - at MXDU - talked briefly about secure, sourceless deployment so it seems that you can expect similar functionality from the official ColdFusion product shortly.
As promised by Vince recently, Beta 3 of BlueDragon is now available for download. Windows only right now, the Mac and Linux versions will be available shortly (they're sorting out an issue with the installer).
Vince says "With the beta3 release, BlueDragon 6.1 is now-feature complete. We'll concentrate on bug fixes and tidying-up over the next month, with a final release planned for March 31."
Two of the big new "features" with this beta are: precompiled, encrypted templates and the revamping of the free server edition. I have no more information about the former at the moment but the free server edition news is very interesting... Vince Bonfanti, New Atlanta CEO, says "We've decided to significantly enhance the features provided in the BlueDragon Server 6.1 FREE edition. The free edition now has almost all of the features of the premium edition BlueDragon Server JX." The advanced features the free edition will not support are: JSP / J2EE support (such as page context, J2EE sessions,
This is a very bold move by New Atlanta - they'd previously said that the free edition would remain only CF5-compatible and that to get access to the new 6.1 features, users would need to buy the JX edition (currently $549 but will rise to $999 when 6.1 ships) or the J2EE edition ($4,998 for 2 CPUs). For comparison, Macromedia offers a Developer Edition (free, full-featured but single IP), Standard Edition ($1,299) and Enterprise Edition ($5,999 for 2 CPUs).
As soon as the Mac OS X version of Beta 3 is available (next week, according to Vince), I'll take it for a test drive, try my various Mach II applications on it and give a report (so far, Beta 1 and Beta 2 have been unable to run Mach II applications).
Vince says "With the beta3 release, BlueDragon 6.1 is now-feature complete. We'll concentrate on bug fixes and tidying-up over the next month, with a final release planned for March 31."
Two of the big new "features" with this beta are: precompiled, encrypted templates and the revamping of the free server edition. I have no more information about the former at the moment but the free server edition news is very interesting... Vince Bonfanti, New Atlanta CEO, says "We've decided to significantly enhance the features provided in the BlueDragon Server 6.1 FREE edition. The free edition now has almost all of the features of the premium edition BlueDragon Server JX." The advanced features the free edition will not support are: JSP / J2EE support (such as page context, J2EE sessions,
cfforward
, cfservlet
and cfinclude
of a servlet or JSP); support for databases other than ODBC, MySQL and PostgreSQL; ability to deploy encrypted, precompiled templates; web server adaptors for iPlanet and Sun ONE. That means that it will support CFCs, XML, Web Services, Java tags etc. This is a very bold move by New Atlanta - they'd previously said that the free edition would remain only CF5-compatible and that to get access to the new 6.1 features, users would need to buy the JX edition (currently $549 but will rise to $999 when 6.1 ships) or the J2EE edition ($4,998 for 2 CPUs). For comparison, Macromedia offers a Developer Edition (free, full-featured but single IP), Standard Edition ($1,299) and Enterprise Edition ($5,999 for 2 CPUs).
As soon as the Mac OS X version of Beta 3 is available (next week, according to Vince), I'll take it for a test drive, try my various Mach II applications on it and give a report (so far, Beta 1 and Beta 2 have been unable to run Mach II applications).
I've just been looking through the activity log for my blog to see what common search terms there are - with a view to writing something to answer those questions. Amongst the many, many searches for "Fusebox", "Mach II" and "Design Patterns", there are some interesting(!) ones but here are some of the more common search queries on my site for which I have very little information:
- search enginer safe
- compare ColdFusion and C#
- session (actually lots of session-related stuff)
- C++ (searches for several specific library functions and keywords)
Checked out of my room and now I'm banished to the business center for an hour or so before Mike Chambers and I grab a cab to the airport and fly home to Australia.
The bloggers' dinner was a good event - great food at Chinta Ria - and then lots of drinking afterward (Brandon Hall and I didn't get back to our rooms until around 5:30am, chatting about all sorts of things including software design of course!). I'll be posting pictures from that when I get back on a high-speed connection. The BBQ at Daemon was also excellent - again, pictures coming soon.
Big shout out to Geoff Bowers & his wife Julie for being great hosts on Thursday night and to the larger Daemon crew for a wonderful conference.
The bloggers' dinner was a good event - great food at Chinta Ria - and then lots of drinking afterward (Brandon Hall and I didn't get back to our rooms until around 5:30am, chatting about all sorts of things including software design of course!). I'll be posting pictures from that when I get back on a high-speed connection. The BBQ at Daemon was also excellent - again, pictures coming soon.
Big shout out to Geoff Bowers & his wife Julie for being great hosts on Thursday night and to the larger Daemon crew for a wonderful conference.
I was very pleased to see that CFUN-04 has added a dedicated accessibility track! It looks like it will be a terrific conference with a huge amount of information crammed into one weekend. I'm looking forward to it!
February 25, 2004
The final session of MXDU - the speaker panel - saw a large number of folks on stage facing a grilling from various audience members. Some interesting questions were asked as well as some of the "standard" concerns being aired (e.g., "Is Director dead?", "Is Flash Remoting dead?", "Is HomeSite+ dead?" - No on all of these - the response was something like "Macromedia continues to make releases and enhancements to these techologies and is committed to providing the best tools for developers.")
Quite a few questions about the Flashosphere and direction - "Flash is going in six directions at once... can we have a roadmap?" was one question. Mike answered that so I won't attempt to paraphrase (I'm sure he'll be happy to blog the answers to these questions).
Some interesting questions about Flex and its position in the marketplace - "Won't it eat into the existing Flash developer market?". My sense is that there's a whole sector of developers (often called enterprise developers, i.e., folks who write Java and other text-based languages without visual tools) who will never master the Flash authoring environment but will 'grok' Flex immediately - for them, Flex represents a way into the RIA space. The existing Flash developer space will be effectively untouched by Flex (except perhaps to increase demand for their skills to create components for the new enterprise Flex / RIA space!). That's my feeling anyway.
One question was right up my street: "As we build more complex apps with components, it gets harder and harder to debug - what about some tools for this?" This is one of those 'moving to enterprise development' growing pains and it isn't really about components per se. My answer was that you need to start adopting other enterprise development practices such as building test harnesses for components, either as you build the components or - even better - before you build the components. Enterprise software requires enterprise testing.
Another related question was about the compile times for complex Flash applications. Mike talked about using command-line compilers and build systems and I said this is another 'moving to enterprise development' situation where we're building complex enough applications that we're beginning to hit the same compile time stuff that many Java / C++ enterprise developers have been used to for years: edit, compile-wait-link-wait, test. It's pretty much a natural consequence of building complex software and one that many scripting languages manage to hide from us by being very lazy about compiling code (on demand).
And that was it. MXDU 2004 is over. And what a great conference it's been! Incredibly passionate developers building astonishing applications with the latest versions of the Macromedia MX products. I'm looking forward to next year's MXDU already (if I get invited to speak again).
Tonight is the bloggers' dinner. Tomorrow is the partner conference. More later!
Quite a few questions about the Flashosphere and direction - "Flash is going in six directions at once... can we have a roadmap?" was one question. Mike answered that so I won't attempt to paraphrase (I'm sure he'll be happy to blog the answers to these questions).
Some interesting questions about Flex and its position in the marketplace - "Won't it eat into the existing Flash developer market?". My sense is that there's a whole sector of developers (often called enterprise developers, i.e., folks who write Java and other text-based languages without visual tools) who will never master the Flash authoring environment but will 'grok' Flex immediately - for them, Flex represents a way into the RIA space. The existing Flash developer space will be effectively untouched by Flex (except perhaps to increase demand for their skills to create components for the new enterprise Flex / RIA space!). That's my feeling anyway.
One question was right up my street: "As we build more complex apps with components, it gets harder and harder to debug - what about some tools for this?" This is one of those 'moving to enterprise development' growing pains and it isn't really about components per se. My answer was that you need to start adopting other enterprise development practices such as building test harnesses for components, either as you build the components or - even better - before you build the components. Enterprise software requires enterprise testing.
Another related question was about the compile times for complex Flash applications. Mike talked about using command-line compilers and build systems and I said this is another 'moving to enterprise development' situation where we're building complex enough applications that we're beginning to hit the same compile time stuff that many Java / C++ enterprise developers have been used to for years: edit, compile-wait-link-wait, test. It's pretty much a natural consequence of building complex software and one that many scripting languages manage to hide from us by being very lazy about compiling code (on demand).
And that was it. MXDU 2004 is over. And what a great conference it's been! Incredibly passionate developers building astonishing applications with the latest versions of the Macromedia MX products. I'm looking forward to next year's MXDU already (if I get invited to speak again).
Tonight is the bloggers' dinner. Tomorrow is the partner conference. More later!
I missed the first twenty minutes but for the remainder of the hour Tim valiantly deflected a number of questions while still providing as much of a sneak peak of what really is coming in Blackstone as he could. His catch phrase quickly became "That's a bit too specific an implementation question for me to answer at this point"... People seemed pretty excited about the Flash-based forms and the reporting / printable output features.
Talked about many of the ways that projects can get into difficulty including a number of bad process practices that people easily fall into. Then he started talking about ways in which you can manage this.
His recommendation: develop code locally - use version control - deploy to shared QA server. Daemon favor CVS so he demo'd TortoiseCVS and WinCVS and explained why he likes CVS. Despite a few technical difficulties, he showed a number of ways that CVS helps you manage your codebase, with a variety of tools and different views onto the code.
We use CVS at Macromedia (for our dynamic website code) and it really does make life easier. Look at Bonsai and Tinderbox as well (look them up on Google).
His recommendation: develop code locally - use version control - deploy to shared QA server. Daemon favor CVS so he demo'd TortoiseCVS and WinCVS and explained why he likes CVS. Despite a few technical difficulties, he showed a number of ways that CVS helps you manage your codebase, with a variety of tools and different views onto the code.
We use CVS at Macromedia (for our dynamic website code) and it really does make life easier. Look at Bonsai and Tinderbox as well (look them up on Google).
Another amusing Nectarine Flash cartoon intro (I forgot to mention that yesterday). "All your base are belong to us..." Anyways, today it was the Tim and Ben show. Tim asked who is running CFMX 6.1 and lots of hands went up (I noticed yesterday in my talk just how many folks have upgraded - very encouraging!).
Tim outline the "Blackstone" (CFMX '7') themes: application building, enterprise citizenship and new frontiers. For application building, they want to do for applications what
Then Tim gave a history of Rich Internet Applications, positioned Flex and talked about its high-level architecture. Then Ben Elmore stepped up to demo Flex and show us how to build an application with it. He demo'd an e-commerce application - very intuitive user experience - then emphasized the importance of application design and architecture before showing how to build a good portion of the e-commerce application from scratch with really only a handful of lines of MXML.
Finally, Tim came back on and demo'd a financial dashboard built with Flex - very sweet!
Tim outline the "Blackstone" (CFMX '7') themes: application building, enterprise citizenship and new frontiers. For application building, they want to do for applications what
cfquery
did for databases. Most applications are focused on data management, form-based and / or reporting. Tim showed rich (Flash-based) forms with data binding and validation (and tabbed navigation and accordion panes - which got applause) and easy PDF generation with the new cfdocument
tag which got more applause. He talked about enterprise citizenship with source-less deployment etc and for the new frontiers, he hinted at event-based programming. More to come in the Blackstone technology preview this afternoon. Then Tim gave a history of Rich Internet Applications, positioned Flex and talked about its high-level architecture. Then Ben Elmore stepped up to demo Flex and show us how to build an application with it. He demo'd an e-commerce application - very intuitive user experience - then emphasized the importance of application design and architecture before showing how to build a good portion of the e-commerce application from scratch with really only a handful of lines of MXML.
Finally, Tim came back on and demo'd a financial dashboard built with Flex - very sweet!
There were my two sessions. This is the third time I've given the Mach II talk and it went more smoothly, timewise, this time than before. The audience asked some good questions and a large number of them were already using a framework of some sort. After the beer break I ran a BoF on CFCs and Design Patterns which was a nice informal circle with some good discussion about application structure and design. As I suspected, many folks are already using a number of classic design patterns in their applications, even tho' they don't necessarily know the common pattern names (sometimes they don't even know they are using a pattern at all). This is a good sign - and it shows that design patterns aren't something magical that only gurus can aspire to!
In the evening, I went out to dinner with several user group managers under the wing of Ed Sullivan and had some enjoyable discussions about ColdFusion and the MX universe. It's really encouraging to see how passionate folks are here about the Macromedia technologies!
In the evening, I went out to dinner with several user group managers under the wing of Ed Sullivan and had some enjoyable discussions about ColdFusion and the MX universe. It's really encouraging to see how passionate folks are here about the Macromedia technologies!
February 24, 2004
Scott gave a great overview of the MXDU Central application. He explained the MVC-based architecture behind the typical Central app (Model - Web Services / Shared Object data; View - Shell / Pod; Controller - Agent). He explained how to simplify online / offline code paths by using same internal representation of data as you use in the (local) Shared Object - and how to work with just the new / changed data from the server by passing a timestamp back and forth (which can also act as the seed for alerts). He also warned developers to be careful to alert users only for 'important' changes (in MXDU, that's session deletion, room change or time change - other changes are ignored).
The more I learn about Central, the more I like it (and the more I want to try building some apps myself!).
The more I learn about Central, the more I like it (and the more I want to try building some apps myself!).
Although this was a session for experienced Flash developers - and therefore way over my head for the most part - it was very interesting to hear Branden talk about making pragmatic choices when developing applications (or even just small interactive Flash movies). He had a lot of good advice like: use OOP if it benefits you (and don't use it if it doesn't); break the rules when you need to... He also mentioned that using get/set property methods ("key-value coding") allows you to wrap object state changes in a way that makes it easy to build listeners and controllers that communicate state changes across your application. His overall message was that there is no one "true" way to build things (and don't believe anyone who says otherwise!).
John Treloar opened MXDU 2004, showing some great RIAs created by ANZ software developers - excellent examples of single-page Flash applications that bring improved interactivity and responsiveness. My favorite was Hell Pizza from New Zealand - anywhere that lets you put apricot sauce and anchovies side-by-side gets my vote!
Mike Chambers stepped up and talked about Macromedia Central and what's coming down the line. He demo'd the Intel Hotspot (wifi) Finder and an AOL chat client built in Central. Daemon have created a Central application for MXDU attendees that lets folks select their sessions as well as providing news about the conference. The application makes use of the alert feature to notify attendees of room changes (one of the sessions just moved into a bigger room). Central is already very cool and looks set to become even cooler!
Next up, Peter Ryce in San Francisco helped John demo the forthcoming Breeze 4.0 system live, including whiteboarding, Flash Video, file sharing and a number of other interactive features, including recording and a powerful search system. Finally, Peter showed the new extensibility API in Breeze 4.0 - "pods" - including examples of a Google search pod and a stock market pod.
Next on the agenda was Flash on devices, where John showcased the new Leapster educational device from LeapFrog with a full Flash UI and learning games (I think we needed some 4-8 year olds to demonstrate it properly!). The next demo was Flash on a Nokia cellphone - in fact a Flash 4 movie that was written long before cellphones could run Flash! - and then John looked at the i-mode phones from Japan that have very rich user interfaces and interactive content and applications... all written in Flash, including the forthcoming FlashCast system with information channels providing news, sports information, stock quotes, cartoons, traffic information etc.
In closing, John showed yet another great Macromedia-powered experience: Virtual Byron Bay. You can see more examples on the Macromedia Flash Video Gallery.
Mike Chambers stepped up and talked about Macromedia Central and what's coming down the line. He demo'd the Intel Hotspot (wifi) Finder and an AOL chat client built in Central. Daemon have created a Central application for MXDU attendees that lets folks select their sessions as well as providing news about the conference. The application makes use of the alert feature to notify attendees of room changes (one of the sessions just moved into a bigger room). Central is already very cool and looks set to become even cooler!
Next up, Peter Ryce in San Francisco helped John demo the forthcoming Breeze 4.0 system live, including whiteboarding, Flash Video, file sharing and a number of other interactive features, including recording and a powerful search system. Finally, Peter showed the new extensibility API in Breeze 4.0 - "pods" - including examples of a Google search pod and a stock market pod.
Next on the agenda was Flash on devices, where John showcased the new Leapster educational device from LeapFrog with a full Flash UI and learning games (I think we needed some 4-8 year olds to demonstrate it properly!). The next demo was Flash on a Nokia cellphone - in fact a Flash 4 movie that was written long before cellphones could run Flash! - and then John looked at the i-mode phones from Japan that have very rich user interfaces and interactive content and applications... all written in Flash, including the forthcoming FlashCast system with information channels providing news, sports information, stock quotes, cartoons, traffic information etc.
In closing, John showed yet another great Macromedia-powered experience: Virtual Byron Bay. You can see more examples on the Macromedia Flash Video Gallery.
Mike Chambers has posted a reminder about this event and I'll just reiterate. If you're an active blogger and you're at MXDU, you're welcome to join Mike and myself for dinner on Wednesday evening. Meet in the Star City hotel lobby around 7:15pm and we'll set off at 7:30pm sharp (it's only a brief walk, across the Pyrmont Bridge). And remember: no blog, no dinner!
There was a good turnout for last night's joint Web Standards Group / National Macromedia User Group meeting. Andrew Muller was an excellent MC, Russ Weakley gave us all a great insight into why web standards are important and why they are actually good for you, your clients and your visitors. I talked about macromedia.com in the context of web standards and accessibility, Tim Buntel talked a bit about the MXDU conference and Macromedia's products. Then there was a panel Q&A for a while with lots of penetrating questions from the audience. I enjoyed the meeting and I hope everyone who attended got plenty from it. Afterwards, I hung around chatting with folks until about 11pm - back to my room and sleep... it had been a long day.
MXDU Day One gets underway in a few hours. I'm hoping to blog live from the conference.
You can now download my WSG presentation (PPT, 90k).
MXDU Day One gets underway in a few hours. I'm hoping to blog live from the conference.
You can now download my WSG presentation (PPT, 90k).
February 23, 2004
As mentioned on the Daemonite blog, Kai and Diane were married today in the Botanical Gardens. It was a lovely ceremony in a beautiful setting - Kai and Diane make a lovely couple!
I plan to create a photo journal of MXDU 2004 so you can check there each day to see what is happening.
Right now I'm at the Macromedia offices in Sydney, with Mike Chambers and the local ANZ folks, catching up on email and working on my notes for the CFC / design patterns BoF tomorrow night. Tonight is the WSG / National MUG meeting - see you there?
I plan to create a photo journal of MXDU 2004 so you can check there each day to see what is happening.
Right now I'm at the Macromedia offices in Sydney, with Mike Chambers and the local ANZ folks, catching up on email and working on my notes for the CFC / design patterns BoF tomorrow night. Tonight is the WSG / National MUG meeting - see you there?
February 22, 2004
Wandered up to Sydney Harbor Bridge (impressive) and looked over at the Opera House (also impressive). Sydney is a beatiful walking city - like London only smaller, cleaner, less busy and much warmer!
In evening, went out to dinner with Geoff and a few other folks. A nice relaxing evening before the busy week takes over.
In evening, went out to dinner with Geoff and a few other folks. A nice relaxing evening before the busy week takes over.
I have a room (508 - spooky... I'll be talking briefly about 508-related stuff tomorrow!) and so I have my own dial-up access at last!
The official release date for BlueDragon 6.1 is March 31st, according to Vince Bonfanti on the bluedragon-interest mailing list.
The third (and final) beta will be available on Friday February 27th.
The third (and final) beta will be available on Friday February 27th.
Well, Mike Chambers and I are both here at the Star City. 9AM Sydney time on Sunday morning. We can't check in until 3pm so we can't charge calls to our rooms yet. We're using the "Business Center" at the hotel which has two PCs, each with a V.34 modem. Looking forward to getting real Internet connectivity at MXDU (so blogging might be a bit sporadic this week).
February 20, 2004
If you've ever tried to serve files to a user from a CF page like download.cfm, you've probably encountered the problem where the browser wants to save the file locally using the name of the CF page instead of the actual filename. This issue was raised on CFGURU today and Chris Hiester (of Macromedia) pointed folks at this Tech Note that explains a workaround using the Content-Disposition HTTP header.
Mark Stanton of Gruden Pty Ltd posted this nifty technique for tracking page execution times unobtrusively. Mark says:
Generally I haveI like this approach. It doesn't interfere with the page layout - and there are a number of useful tools for viewing HTTP headers on pages (e.g., the Firefox LiveHTTPHeaders plugin). It also allows for automated test harnesses - using<cfset request.execTime = getTickCount()>in my Application.cfm and<cfset request.execTime = gettickCount() - request.execTime>...in the OnRequestEnd.cfm. I don't use the built in CF debugging tools at all.
<cftry>
<cfheader name="X-ExecTime" value="#request.execTime#">
<cfcatch>
<!--- headers already sent --->
</cfcatch>
</cftry>
<cfhttp>
to run a page and extract the X-ExecTime (and any other debugging headers you choose to generate).
February 19, 2004
I fly out Friday night and arrive Sunday morning so Sunday is my one day as a tourist in Sydney! Here's my itinerary:
I've filled in the blanks - it's a busy week!
- Monday: working breakfast with Geoff Bowers of Daemon; spend time in our Sydney office; WSG/NMUG presentation and panel (Quarry Room, 6pm for 7pm start).
- Tuesday: MXDU Day 1: I'll be attending various sessions, mostly on Flash since that's my weak spot then I'll be speaking about Mach II at Macromedia (Ballroom 1, 3pm) and moderating the CFCs / Design Patterns Birds of a Feather (Ballroom 2, 5:30pm-ish); in the evening, it's dinner with "the team".
- Wednesday: MXDU Day 2: I'll mostly be attending integration and new technology sessions (I want to see and hear people's reactions to Flex and Blackstone) then it's the speaker roundtable (Plenary, 4:30pm); in the evening, it's the bloggers' dinner probably at Chinta Ria if they can accommodate a big group!
- Thursday: spend time talking with MM partners; speakers' dinner at Daemon HQ.
- Friday: probably customer visits; fly home at 3:15pm, arrive San Francisco that morning and work from home!
I've filled in the blanks - it's a busy week!
Ben has just published a great article showing how to build a client-server data management application using Macromedia Flash MX 2004 Professional, the Data Connection Wizard and Web Services built with ColdFusion. It's a ten page tutorial, with all the code available for download, that walks you through every step of creating a basic, useful application, complete with hints and tips at the end on what needs to be done to make it production-ready.
February 18, 2004
In response to numerous requests, I have created a printable version of the Mach II Development Guide. Each page has a link at the top to the printable version - which uses server-side includes to pull in the content from the individual pages (in fact, each page now uses a server-side include to pull in its contents). I'll probably tackle the CFMX coding guidelines next (but maybe not until I get back from Australia!).
Spike has a nice long blog entry discussing the results of experiments he conducted on tags and scopes. His comment about the scope search order is worth highlighting:
cffile scope is searched before URL or form scope when you use an unqualified variable name! My recommendation is to be explicit - always scope-qualify your variable names (well, almost always - see the "Style" section of the Macromedia Web Team coding guidelines).
February 17, 2004
Christian Cantrell has posted an unsupported way to run CFMX / JRun using the 1.4.2 JVM instead of the default 1.3.1 JVM. As Christian says "use at your own risk"...
There's been an interesting discussion on CFCDev recently about the tags that have an associated 'scope' and the impact that has on thread safety. First a little background: if you store a CFC instance in a shared scope, you need to be careful to declare all your local variables (with
How does this affect you? Well, for full thread safety, you should probably
You'd also need to move the use of the cffile tag into a CFC that is created per-request, if you're using the cffile result struct. Note that this only affects you if you use the result struct (which, for cfquery, would be the rarely-used
var) so that you don't accidentally store data in the unnamed scope - which would become instance data and therefore shared by all users of that CFC. That's easy to achieve for most coding situations - you just use <cfset> to 'declare' your variables at the top of your method, immediately after the last <cfargument> tag: <cfset var foo = 0 /> <cfset var bar = 0 />Where this becomes a problem is for the CF tags that implicitly declare their own result 'scope', e.g., cfhttp, cfcatch, cfquery, cffile. When you execute each of these tags, they implicitly create a variable with the same name as the tag that is a struct containing information about the success or otherwise of the tag. It turns out that you can use the
var declaration trick with cfhttp and cfcatch but not with cfquery and cffile. How does this affect you? Well, for full thread safety, you should probably
var-declare cfhttp and cfcatch if you use the result struct of either tag in a CFC stored in a shared scope. <cfset var cfhttp = 0 /> <cfset var cfcatch = 0 />You could assign
structNew() but 0 probably has less code overhead. You'd also need to move the use of the cffile tag into a CFC that is created per-request, if you're using the cffile result struct. Note that this only affects you if you use the result struct (which, for cfquery, would be the rarely-used
cfquery.executionTime). If you don't reference the result struct, you're safe. Christian Cantrell is following up with the ColdFusion product team to get more details on this issue.
The CommunityMX website has now made the entire source code of their CMXtra Central Application available as part of a great free article Anatomy of a Central Application. This is Part 1 but provides all the source code and lots of information about the application, how it was built, what all the code does etc. There will be a Part 2 with tips and tricks on customizing components. This might be the catalyst for me actually writing my first Central app!
February 16, 2004
Mach II 1.0.9 is now available for download. The changes / improvements include: thread safety at startup; whitespace management; core API is better defined (access specifiers have been adjusted); plugins now configured before listeners (making it easier to use a plugin to define core application properties); <event-mapping> now works on exception events (allowing fine-grained custom exception handling).
The Mach II Development Guide has been updated (Release 1.1.1) to reflect the changes in the 1.0.9 core files. Note in particular the changes in the plugins section!
The Mach II Development Guide has been updated (Release 1.1.1) to reflect the changes in the 1.0.9 core files. Note in particular the changes in the plugins section!
I only recently discovered that Macromedia has a very good document that will help you write accessible web pages: Section 508 Web Development Guidelines created through a partnership with the Department of Information Technology at the University of Wisconsin and Macromedia. These guidelines are better than the ones that were included with the ColdFusion MX 6.1 Coding Guidelines that my team created so I have updated the ColdFusion coding guidelines to refer to the official Macromedia 508 guidelines instead.
February 15, 2004
I went to a very traditional Grammar School in England (Collyers, founded in 1532 - but the site appears to be down right now) that, like most English schools, had compulsory Religious Education. Year one was "all history's religions" (well, I later discovered it wasn't really all of them!) and years two to four were spent studying the New Testament. I wasn't raised Christian and my views were not appreciated at school by the deeply Christian minister who taught us - I went from top of the class in year one to bottom of the class in year two... and stayed there until the exams at the end of year four!
I was therefore encouraged to read that the Institute of Public Policy Research recommends adding non-religious beliefs and philosophy to the curriculum. That would have made my school days much less unpleasant - and a lot more interesting. I think that encouraging diversity of religion - and discussion of it - is far more healthy than the approach France is taking by trying to suppress all signs of religion in schools.
One of the basic principles I like about America is the separation of church and state. You are free to practice (or not) the religion of your choice and the state won't interfere and, in particular, won't force any particular religion on your children in school. There are many other things I like about America... which is why I'll be applying for citizenship shortly.
I was therefore encouraged to read that the Institute of Public Policy Research recommends adding non-religious beliefs and philosophy to the curriculum. That would have made my school days much less unpleasant - and a lot more interesting. I think that encouraging diversity of religion - and discussion of it - is far more healthy than the approach France is taking by trying to suppress all signs of religion in schools.
One of the basic principles I like about America is the separation of church and state. You are free to practice (or not) the religion of your choice and the state won't interfere and, in particular, won't force any particular religion on your children in school. There are many other things I like about America... which is why I'll be applying for citizenship shortly.
February 12, 2004
Why am I blogging at 1:30am? Well, I just got back from the Southern California ColdFusion User Group Conference - driving the 800 mile round-trip in a day was worthwhile... I got to put faces to several email addresses (including Sean Tierney who drove from Phoenix to attend the conference!), chat with Sandy Clark about accessibility, watch Angela Buraglia (of Dreamweaver FAQ fame) show some very useful hints & tips for Dreamweaver MX 2004, see a great demo of RoboDemo and talk about Mach II to a roomful of people! Unfortunately, I didn't get to see any other sessions apart from Angela's because (a) I didn't arrive until lunchtime and (b) I ended up chatting to folks in the hallway outside the conference room. Thanx to Leon Chalnick, Greg Maxwell and Cameron Childress (amongst others) for organizing the event (and inviting me to speak).
I've already mentioned that the Macromedia product showcase / site of the day web application is powered by Mach II but I wanted to mention that yesterday's site of the day - UCI Epidemiology - is also powered by Mach II. Sami Hoda is the man behind the Mach II back end and he's used a variant of Fusium's Search Engine Safe Convertor to map /go/something URLs to Mach II (go is the eventParameter). Nice work!
February 10, 2004
Tomorrow, I'll be speaking at the Southern California ColdFusion User Group Conference down in Costa Mesa. I'll be driving down in the morning and - if I can stay awake - driving back in the evening. Which means no blogging until Thursday - when I'll write up a full report of the afternoon portion of the conference. If you're going to be there, I look forward to meeting you!
February 9, 2004
Well, we're back from Omaha (which was very cold and snowy!) and we had a great weekend! First off, the steak in Nebraska is fantastic (and we ate steak every night!). Second, both cats got "Best Cat" ribbons so they are both Supreme Grand Champions!
Many thanks also to Guy Rish (ex-Macromedia, now of Gestaltech) and his wife, Amber, for a lovely evening on Sunday - as well as T.J., a friendly Omaha perfusionist, who gave us a ride from the airport to the hotel on Friday night. Our overwhelming impression of Omaha was of very friendly people!
Many thanks also to Guy Rish (ex-Macromedia, now of Gestaltech) and his wife, Amber, for a lovely evening on Sunday - as well as T.J., a friendly Omaha perfusionist, who gave us a ride from the airport to the hotel on Friday night. Our overwhelming impression of Omaha was of very friendly people!
February 6, 2004
Matt Liotta has started up the Open Source Extensions, Components and Functions (OpenXCF) project on Source Forge. The intent is to provide a Jakarta-like environment for ColdFusion - contributors would make code available under the Apache Software License and use CVS to collaborate on projects.
Stephanie Sullivan and Adrian Senior - both CommunityMX contributors - have a great article on Macromedia's Developer Center about creating a print style sheet in Dreamweaver. My site has both screen and print style sheets and uses CSS to remove headers, footers and navigation for print while adding expanded URLs for links. Unfortunately, some of the links on the site are so long that the printable version of some of my pages doesn't always work too well - it's still a very good technique!
I mentioned Max Design's site yesterday because of the article about definition lists. I went and had a look around the rest of the site and I want to recommend the "presentations and articles" section - full of great CSS articles by Russ Weakley.
February 5, 2004
Looks like I'll be talking at the Portland CFUG in August (on the 19th) - again on Mach II. Details are yet to be confirmed but the date's good for me because there's a cat show in Portland on the 21st / 22nd!
The blog will be quiet for the next week I expect - my wife & I are off to Omaha tomorrow for a cat show with our current show cats Edmund and Ceilidh. We get back late afternoon on Monday so no blogging until Tuesday!
Then I'll spend all day Wednesday in the car driving down to the Southern California CFUG Conference where I'll be talking about Mach II at Macromedia (of course). I'll try to make it back to the Bay Area that night so I'll probably be blogging again on Thursday!
Then I'll spend all day Wednesday in the car driving down to the Southern California CFUG Conference where I'll be talking about Mach II at Macromedia (of course). I'll try to make it back to the Bay Area that night so I'll probably be blogging again on Thursday!
My week in Sydney is getting fuller by the day. Here's the schedule so far:
- Monday 23rd: National Macromedia User Group & Web Standards Group meeting at the Star City. I'll be giving a brief presentation on accessibility and web standards compliance in the context of macromedia.com. Tim Buntel and Mike Chambers will also be in attendance (and, I'm sure, speaking about something cool).
- Tuesday 24th: MXDU 2004 Day One. I'm speaking about the use of Mach II at Macromedia in the afternoon and I'm probably going to run a BoF session on ColdFusion Components (and Design Patterns and Mach II).
- Wednesday 25th: MXDU 2004 Day Two. Post-conference Speaker Roundtable. Bloggers' Dinner in the evening.
- Thursday 26th: Partner Conference followed by the MXDU Speakers' BBQ.
Sandy Clark's blog - essential reading if you're interesting in accessibility - points to this article on Max Design about Definition Lists. The article explains what they are and when you should use them and then gives some elegant examples of using CSS to style definition lists - so it's a good example of CSS too!
A little while back, Scott Keene interviewed me for the CFOOP website. The interview has just been published so you can read what I think about architecture and ColdFusion (and beer).
February 4, 2004
Tony Blake posted a long comment in response to my entry about Ben Forta's thoughts on CFCs and Custom Tags. Tony's comment involves some interesting questions so I figured I'd turn it into a blog entry of its own and add my own thoughts:
Just read your comment on Ben's site. There are certainly cases where custom tags can still be used in Mach-II and Fusebox. I was actually asking whether people felt that by putting business logic into CFCs and common display into customtags, we can get away from using any kind of framework because all the real hard stuff is completely separate.This raises an interesting question about the nature of frameworks: are they really there to handle the "real hard stuff" in an application design? My sense is, no, they exist to provide a standardized way to structure your application and, to some extent, provide certain common low-level functionality. The "real hard stuff" in my opinion is designing the right (business) model objects.
I used Fusebox 3 when that was common, warts and all, because it seemed quite popular and worked in our case. I'm uncomfortable with Fusebox 4 - even though it is very *very* fast - as the XML syntax just seems really messy. Those condition tags look nasty :), and it doesn't really integrate with CFCs that well. I know it can be done, but doesn't look like a snug fit IMO. I welcome being convinced otherwise.I'm not going to take on the Fusebox question here except to say that Fusebox 4 seems like a good upgrade path for Fusebox 3 - it provides performance benefits, it replaces the nested layout model with a more flexible system and it clearly delineates what logic should be in the "fusebox" by using a well-defined set of XML commands instead of allowing developers to put arbitrary logic in their switch files. Fusebox (both 3 and 4) work for a lot of people because it provides structure.
Mach-II looks good too, but sometimes feels like an overkill. I don't know if it's really necessary for a web application. However, it works very nicely with CFCs, is buzzword compliant, and seems to becoming the de facto standard.I'm naturally pleased that some people see Mach II as a developing de facto standard. I'm surprised Tony thinks Mach II is overkill - it's about as lightweight a framework I've seen that still does something useful.
In the Java-world, I used a framework known as Webwork, which is incredibly simple and powerful. It just made sense to me, and I'd recommend anyone doing J2EE development to look at it in place of Struts. I'm really after a CF equivalent.I hear good things about Webwork but Struts appears to be the de facto standard in the Java world (and increasingly looks very compatible with JSTL and JSF as they emerge). My feeling is that Struts is unnecessarily complex, albeit very powerful. I don't know enough about Webwork to comment on it directly, but I'd say Mach II is substantially less complex than Struts and, from what I've read, about in line with Webwork.
Erm, this is a long post :) but I'm just wondering whether by putting all the business logic in CFCs and with plain old .cfm pages being so simple anyway, is there any benefit with using a framework?Well, if Webwork provided value because it was a Java framework and, presumably, Fusebox 3 provided value because it was a ColdFusion framework, then I'd say that question is already answered - good frameworks add value and therefore they are worth using (on all but the smallest projects). I find myself using Mach II for pretty much any ColdFusion project now - even simple, "one-off" things - because it provides a simple, standardized structure that allows an application to grow and because it helps reduce coupling between components.
I remind you, this isn't a theoretical question - I have to make a decision soon, so my livelihood depends on the replies! Haha :)Hopefully, this answer is useful and will draw further answers from other folks as comments on this entry!
As a comment on my MDA entry yesterday, Simon Horwith asked me about "Streamlined Object Modeling" by Nicola, Mayfield and Abney. That led me to search for references to Coad's work on archetypes when I tripped over a list of articles about object modeling by Stephen Palmer of Step 10 Limited. Lots of useful stuff here that will be helpful to folks struggling to get up to speed in the world of OO and UML.
February 3, 2004
Following JD's lead, I'm happy to organize a bloggers dinner around the MXDU conference. I'm busy Monday, Tuesday and Thursday so Wednesday 25th February has to be the date. If you're going to be in and around Sydney, Australia that Wednesday, let's get together for dinner and an informal chat about the MX universe! I'll be staying at the Star City from Sunday through Friday - I'm open to suggestions on restaurants.
Ben Forta has blogged his thoughts on when to use custom tags and when to use CFCs. It hasn't drawn much comment yet and I haven't made up my mind whether that's because it's less controversial than I thought or whether folks are still just mulling it over. For what it's worth, I agree with his assessment and recommendations. Feel free to agree or disagree in comments either here on on Ben's blog!
The latest update of Safari is available for Panther users (Jaguar users are still stuck with 1.0). Apple's big push point for this release seems to be support for LiveConnect, allowing JavaScript control over Java applets, but I think most people will be more interested in resumable downloads and full keyboard navigation (as well as "Improved compatibility with websites and web applications", whatever that means).
I spotted this over on Ben's blog and it certainly looks interesting. Mindrally's Forklift product by Anthony McClure and others is a commercial persistence framework for CFCs that is intended to take a lot of the drudgery out of building CRUD objects. I haven't had a chance to dig into it but I'm sure many will this useful. The developers page (see previous link) gives an overview of a methodology to follow when designing and building CFCs as well as some code examples using FLAPI (ForkLift API) so you can get a feel for what is involved. Looks like it relies on public properties tho' which I don't like (but it might well be more familiar to folks new to CFCs). More on this after I've tried out the download...
February 2, 2004
A while back, I was asked, as part of an online interview, what I thought about MDA - Model Driven Architecture. I don't remember my exact answer but I was less than complimentary about it because it seems to be a wonderful academic exercise that really isn't providing an concrete benefits - in fact, it seems to add layers of unnecessary complication at a time when we are already beginning to see a bit of a backlash against some of the layers and practices common in OO programming (e.g., the recent anti-setter/getter sentiments).
Sometimes I feel very wary about dissing something that a lot of very smart people obviously think is a good thing, so I was heartened to read Martin Fowler making somewhat disparaging comments about MDA. Now, I'm quite a fan of CASE tools but only when they genuinely support your development lifecycle and make you more productive - hence my support over the years for Together Control Center with its simultaneous round-trip (re-)engineering for Java code. It's a CASE tool that can be used as a Java IDE. I don't adhere to the manifesto that you need to model everything in your application however and so, like Fowler, I tend to use UML as a sketch. To use MDA effectively seems to mean rigorous modeling with UML which in turn seems overwhelming to me, especially with talk of UML 2, and that just seems to 'price' MDA out of consideration for many folks in the trenches. If you've used MDA successfully, feel free to disagree...
Sometimes I feel very wary about dissing something that a lot of very smart people obviously think is a good thing, so I was heartened to read Martin Fowler making somewhat disparaging comments about MDA. Now, I'm quite a fan of CASE tools but only when they genuinely support your development lifecycle and make you more productive - hence my support over the years for Together Control Center with its simultaneous round-trip (re-)engineering for Java code. It's a CASE tool that can be used as a Java IDE. I don't adhere to the manifesto that you need to model everything in your application however and so, like Fowler, I tend to use UML as a sketch. To use MDA effectively seems to mean rigorous modeling with UML which in turn seems overwhelming to me, especially with talk of UML 2, and that just seems to 'price' MDA out of consideration for many folks in the trenches. If you've used MDA successfully, feel free to disagree...
February 1, 2004
This is an increasingly hot topic these days. Wired has a very thoughtful and insightful article on the subject. One of the key takeaways here is that outsourcing has happened before and will happen again - it's just part of the globalization of our economy and it is part of the equalization that pure capitalism causes. As always, there are pros and cons. A well-managed outsourcing relationship can be very beneficial (to both sides) and the key phrase there is "well-managed".
I mentioned this topic back in August 2003 and it drew a large number of comments, both pro and con. I think it will continue to be a hotly contended topic for the foreseeable future... Oh, and it drew the expected flames on Slash Dot...
I mentioned this topic back in August 2003 and it drew a large number of comments, both pro and con. I think it will continue to be a hotly contended topic for the foreseeable future... Oh, and it drew the expected flames on Slash Dot...


