Viewing By Category : machii / Main
February 4, 2010

This year's cf.Objective() is offering SIX pre-conference classes! You can choose from Building Secure CFML Applications, ColdBox: 100 Training, Developing Applications with ColdFusion 9 ORM, Getting Started with Flex / AIR Development, Mach-II / OOP from the Ground Up, Rapid Development with Model-Glue 3! Wow!

Some of these are one-day courses (Wednesday April 21st) and some are two-day courses (Tuesday April 20th and Wednesday April 21st).


May 11, 2009
In the absence of a printable schedule - sorry, Joe Rinehart says it's a problem with the Media3 hosting and he's been trying to get them to fix it for months! - here is my schedule for cf.Objective() 2009:

[More]


April 22, 2009
Since Mark Drew was also covering cloud computing in London, we've decided to offer a version of my framework comparison talk instead.

I'm looking forward to that first week of June despite the crazy travel schedule (I arrive Sunday afternoon and fly back the following Saturday, hopping from Edinburgh to Heathrow on a horribly early flight).


April 17, 2009
One of the neat features of the Railo Administrator console is that you can easily install pre-packaged applications with just a few clicks. As part of my recent presentation comparing application frameworks, I installed ColdBox, ColdSpring, Mach-II and Model-Glue via the Web Administrator. There are a couple of "gotchas" about the current default settings for those installations that I wanted to cover in a blog post.

[More]


April 16, 2009
Last night I presented to BACFUG on ColdBox, Mach-II and Model-Glue. I just posted the recording of the presentation to Charlie Arehart's UGTV. I've edited the recording to remove some of the chatter at the beginning and end which is why it will seem to jump in without my usual biographic introduction and cuts off at the start of Q&A.


April 15, 2009
BACFUG meets tonight in Alameda, hosted by Planitax (thank you!), and the featured speaker will be me!

I'll be looking at ColdBox, Mach-II and Model-Glue - talking about their similarities and their differences - and showing demos of each framework.

Please see the event listing on Adobe Groups for more details and to RSVP (you must login with your Adobe ID to RSVP!).


April 7, 2009
The last week has seen some big announcements in the CF world! On March 31st, Gert announced the open source release of Railo, the next day Mark Drew announced he has joined Railo as CEO of the new Railo UK and then this week Peter Bell announced that he has also joined Railo and will be heading up the new Railo US operation.

I've been using ColdFusion since 2001, back when I worked at Macromedia and my team of Java and C++ developers first encountered CFML in the form of very early builds of what went on to become CFMX (6.0). We were pretty skeptical at first.

[More]


March 23, 2009
Back in Summer 2005, Peter J. Farrell asked is Mach-II dead? There had been very little action on the framework for ages and Model-Glue was the "new kid on the block" and was surging in popularity. A few days later, he proclaimed Mach-II is dead as a call to arms. The result was that Matt Woodward took over the Mach-II project and Peter became lead developer. Since then Mach-II has gone from strength to strength with 1.8 in development now and 2.0 in the planning stage.

[More]


November 11, 2008
I just noticed that Mach-II 1.6.0 Release Candidate 1 has just been released! I remember looking at early builds of 1.6.0 some time ago and being very impressed by the additional features. It's great to see it reach RC status (in time for MAX?).

You can read the What's New in 1.6 wiki page to learn about the recent additions. I had already used the publish/subscribe listener invocation (more like Model-Glue), the improved Application.cfc integration and the ColdSpring Property (which replaces the old Plugin). The major new features in 1.6 are caching and logging which were not in the early build I was using, unfortunately (for me!).

Official support is provided for Adobe ColdFusion MX 7 / 8, Open BlueDragon 7+, New Atlanta BlueDragon 7+ (but not BlueDragon.NET - which I was a bit surprised by). They're hoping to add official support for Railo soon - but have heard that it runs just fine on that engine.


May 9, 2008
Kay Smoljak is running a series of interviews with framework developers and has a summary article on SitePoint that includes a survey of people's framework usage. It's going to be a great series of articles and makes interesting reading (FarCry and COOP have been covered so far with Fusebox, Mach-II, Transfer and ColdBox coming soon - and Model-Glue and ColdSpring et al to follow). The survey will only be open for a few more days so rush over and make your voice heard!


April 12, 2008
That's a question that crops up over and over again. I've blogged about it in the past. My answer - as I'm sure most folks would expect - is "it depends". The question came up on a mailing list again the other day and someone jumped in full of praise for ColdBox and then someone else said "Sean would say it depends" and went on to plug cf.Objective() as the "perfect place" to answer the question, wishing they could be there.

Here's what I said in response:

[More]


April 11, 2008
This year's cf.Objective() has a lot of firsts. If you're not attending, you're going to miss out on a lot of world premier events!

We've worked hard to make cf.Objective() 2008 a "must see" event. We have a number of firsts this year that we're very proud of:

  • The public release of Open BlueDragon on May 3rd!
  • The public unveiling - and Alpha - of Model-Glue 3: Gesture!
  • The public unveiling of Mate, the new Flex framework from AsFusion!
  • The first conference to feature the latest rising star in the frameworks world: ColdBox - with an introductory session and a two hour, hands-on advanced workshop!
  • The first public information about Swiz, the new Flex framework from Chris Scott of ColdSpring fame!
  • Speaking of Chris Scott, we're the first conference to feature a two-hour, hands-on workshop for ColdSpring!
  • We're also the first conference to feature a two-hour, hands-on workshop on agile development for ColdFusion developers by the leading light in automated process & testing, John Paul Ashenfelter!
How can you pass this up? $629 for three full days of brain-cramming, enterprise-level information in a hotel that's only $120 a night! Register Now! The room rate is only guaranteed for a few more days!

If you're a Mach-II user - or thinking of using Mach-II - you might also be interested in the pre-conference classes.


March 31, 2008
Andrew Powell - Enterprise Class MVC with ColdFusion and Java - Saturday 11:25am

We hear a lot of talk about using individual Java objects within ColdFusion but the reality of enterprise development is that entire subsystems tend to built entirely in Java. Software teams that serve the enterprise often build large, complex systems using Spring and Hibernate. How do you go about using ColdFusion with such systems? I haven't seen any presentations on this subject so I was pleasantly surprised when I started reviewing Andrew Powell's slide deck to find that he was focusing on how ColdFusion can provide the web front end to enterprise class Java systems.

He introduces Spring (the Java version) with a demo and then introduces Hibernate (the industry standard ORM for Java), again with a demo. After that, he will walk you through solutions to the problem of connecting ColdFusion on the front end to Spring on the backend and, using Mach-II as an example, he then shows how to create an MVC web application that allows you to leverage the entire Spring-powered, Hibernate-persisted Java backend.

If you work along a Java team - or you are considering using more Java for your backend systems - this talk will provide you with a lot of good information about how well ColdFusion plays in this space.


November 22, 2007
Since I'm using Mach-II for several of my clients (sometimes because they are already a Mach-II, sometimes because I've recommended it as the best fit for their needs), I'm getting back into the Mach-II community and getting more involved with the new release - I'm always happy to be on the BER while developing!

I wanted to let folks know what a great job Matt and Peter are doing with the framework. Mach-II 1.5 was a very impressive release with a lot of new features that help you manage large-scale application development: modules, includes, subroutines, extended property data type support, SES URL support and bindable property parameters.

[More]


October 8, 2007
Per the Mach-II blog, you can now download the final release of Mach-II 1.5. I know some of my clients will be very happy about this since they've been tracking the 1.5 release from SVN and integrating changes in as it has moved closer to release over the last few months. Great work from Matt and Peter and the Mach-II team!


August 28, 2007
I was experimenting with onMissingMethod() last night in a Mach-II listener and created a controller/listener that lets you implement the Model-Glue style of decoupled broadcast-listener semantics within Mach-II. Let me explain...

In Mach-II, inside an event handler, you notify a specific listener to execute a specific method. In Model-Glue, inside an event handler, you simply broadcast a message and any listeners that have been declared for that message are executed automatically by the framework.

[More]


August 27, 2007
If you've been following my blog over the years, you'll know that I pretty much stopped using Mach-II a few years ago, switching to Model-Glue instead (and, of course, continuing to use Fusebox for a variety of projects as well). At the time, I felt Model-Glue had leapfrogged Mach-II - as each new framework might be expected to do to existing frameworks - and I liked it's built-in bean factory and cleaner implicit invocation mechanism.

Model-Glue has come on in leaps and bounds - the rearchitecture based on ColdSpring, the scaffolding infrastructure, the integrated support for Reactor and Transfer for "generic database messages". It's very impressive. And now we're got the beginnings of a Flex version, which is very promising.

Now that I'm consulting and have a number of clients, I'm encountering Mach-II quite a bit and looking at the 1.5 release. I've mentioned in the past that I think 1.5 looked quite impressive (when Peter Farrell gave the "what's new?" talk at cf.Objective(), for example). Recently, I've been making recommendations for frameworks for clients and finding myself recommending Mach-II for some clients, mostly due to the new features in 1.5. For some of the sites my clients are trying to build, the modules, includes and subroutines really do allow you to build much larger, much more modular sites than earlier versions of Mach-II.

The extended property semantics in Mach-II 1.5 are also very nice, allowing you to specify structured configuration data - including full-on CFCs - as well as allowing property values to be dynamically substituted into parameter values throughout the configuration.

I still don't really like the direct invocation model (with <notify>) compared to Model-Glue's broadcast / listener mechanism, but the other features are pretty compelling.

One thing I have seen mentioned, but cannot find, is Peter Farrell's new ColdSpringProperty CFC, to replace the old ColdSpringPlugin. Anyone know where to get a copy?


August 15, 2007
Check out the Mach-II 1.5 RC1 build. In addition to bug fixes and a few enhancements for 1.5, the site talks about the roadmap: final version of 1.5 in time for MAX, plans for 1.6 and 2.0.


July 26, 2007
With all the buzz around AJAX - especially with CF8 making it so easy - we're starting to see a lot of questions about how best to integrate AJAX with MVC frameworks like Fusebox, Mach II and Model-Glue.

Brian Kotek has a great post about data vs content in the context of AJAX and frameworks. He emphasizes the benefit of having your model in CFCs as the easier way to expose data-centric functionality to AJAX and notes that for data calls, you should not be trying to go through the MVC framework. It's a good read.


July 13, 2007
The all-new Bay Area ColdFusion User Group website just went live. It is based on Matt Woodward's open source Capitol Hill User Group application, built with Mach II 1.5 and ColdSpring 1.0. It's still a bit of a work in progress (both as an application and as a website) but more content and functionality will be added over time.


July 10, 2007
The Mach II team have posted a great early warning list of features that are now considered deprecated and will go away in a future release.

As a framework developer, it can be really hard maintaining complete backward compatibility as you move the architecture forward and there are often parts of the framework that you don't want to have to maintain indefinitely.

It's good to see the Mach II team being so public and forward-looking about the framework so that users can plan to move forward as well.


July 1, 2007
After the networking event, Joe Rinehart hosted a Birds of a Feather session on frameworks. He covered the new release of Model-Glue 2.0 for ColdFusion, the Alpha 1 release of Model-Glue for Flex (which looks very exciting!) and said that Model-Glue for Java, developed by Chris Scott (I think) would also become an official Model-Glue project - all on the new Model-Glue website.

Next up I covered the Fusebox 5.5 release which is currently in limited Alpha with a public Beta planned in July (as soon as we can get enough documentation together on the new features). I also announced publicly that providing a migration path for Fusebox 3 was on the roadmap (for Fusebox 5.7 probably).

Matt Woodward (and Peter Farrell) presented Mach II 1.5 which is in Beta right now, and the new website. He also talked about plans for their 2.0 release (but didn't go into specifics).

Next up was Chris Scott, who said that an official 1.2 release would appear within a few weeks and then they would be working toward a 1.5 release. This will be the last release of ColdSpring that will run on CFMX 7 - ColdSpring 2.0 will require CF8 because they want to take advantage of cfinterface and onMissingMethod() to make ColdSpring faster (and simplify the core files).

Last up was Doug Hughes who assured us that Reactor would hit an official 1.0 release as soon as the documentation was complete. Ah, the dreaded documentation...


June 27, 2007
Mach II just launched their brand new website, along with a Beta download of Mach II 1.5. The new site contains lots of up to date information about the project which should stop people asking "is Mach II dead?"...

Kudos to the Mach II team for what has clearly been a lot of work behind the scenes!


June 17, 2007
For some reason, I've had a number of emails recently asking me if Mach II is dead. I guess I get these emails because I'm still listed as a contributor on the Mach II site and the site has not been updated since November 2006. Obviously the folks asking these questions don't listen to The ColdFusion Weekly podcast by Matt Woodward and Peter Farrell!

Anyway, I figured I'd put a note out based on the answers I've been giving these folks.

First off, Mach II is alive and well and getting some serious attention from Matt Woodward, Peter Farrell, Kurt Wiersma and others (like Dave Shuck who is taking on the role of Mach II community manager).

Second, Mach II is a mature, stable framework so you should not expect to see a steady stream of changes. That would make life hell for developers trying to use the framework! One release a year is probably a good pace for a framework once it is well-established.

Third, a public beta of Mach II 1.5 should be released at CFUNITED along with a brand new web site. Hopefully that will stop the questions.

CFUNITED will be a major event for frameworks: Mach II 1.5, Model-Glue 2.0 and a public beta of Fusebox 5.5 (I hope!).


February 7, 2007
I'm really pleased to see some more ambitious movement on the Mach II project. Peter Farrell has posted about the new complex properties that will be supported in Mach II 1.5. It's a very nice addition. It simplifies a lot of the plugin configuration code that's out there and makes the property manager a first class citizen - something that Ben Edwards and I agonized over for months during the early development of Mach II.


December 2, 2006
Matt Woodward has great post that talks about stuff he's working on, mostly around Mach II. Even if you are not a Mach II user, it's worth reading Matt's post just to get a sense of the broad way in which he's working with and supporting the framework - it's a great model for any community project!

The example blog application created for the MAX frameworks debate is going to be released soon - as an example of a full blown application built with Mach II, Model-Glue and Fusebox (as well as ColdSpring in the Mach II and Model-Glue cases). Definitely something to look at, no matter which framework you use (or not).

Matt is also working on a detailed comparison of Mach II and Model-Glue which should make interesting reading.

He is also producing a (much needed!) update to my original Mach II development guide. Big thanx for taking that so I won't have to feel bad about how long it's been since I updated it. My excuse? Well, I haven't worked on any Mach II applications for quite a while...


December 1, 2006
The latest release of Mach II is now available. Peter Farrell talks about the new features and bug fixes in release 1.1.1 as well as calling for feature requests for release 1.5.0 which will be the next major release of Mach II. Lots of activity in the Mach II camp! Also of note, the Mach II forum on the Fusebox website has been closed now, in favor of the Mach II Google Group which is the (new) official discussion list for Mach II, having recently migrated away from Topica.


October 24, 2006
The Mach II team are looking for your feedback! This is one of the great things about the Open Source community - if you use a project, you can have a voice in how it develops. At least, that's how Open Source should work so props to Matt and Peter for doing this!


September 29, 2006
After Peter Bell stirred the pot, Peter Farrel wrote a fairly explosive post (repeating a lot of what he said on the cfweekly, episode ?) and it spurred Joe Rinehart to respond with an impassioned blog post defending the design choices made in the development of Model-Glue: Unity.

As someone who has contributed extensively to Mach II, Model-Glue, Fusebox, ColdSpring and Reactor (phew!), I would like to step up and defend Joe's decisions - he's done a sterling job, sticking to his vision for the framework and has been very clear about what should be in the framework and what should not. As a framework developer myself, I can tell you it's a rocky road. The "community" deluge you with requests for all sorts of features and you have to stand firm and defend your vision. None of the popular frameworks are "kitchen sink" efforts - there are countless feature requests that have been denied by the framework authors.

I've requested enhancements to all these frameworks. Some of those requests have been implemented but most have been denied. Even as lead developer on one of the Mach II releases, some of my suggested enhancements were turned down (and some of the changed Peter implemented in Mach II were reverted as inappropriate for the framework).

When I built Fusebox 5, I was deliberately very conservative about what went into the framework and what didn't. I implemented a few things the community really wanted that I didn't think were great ideas but I also did not implement several things that I thought were great ideas that the community weren't very interested in.

Fusebox 5.1 will be a fairly conservative enhancement release. Fusebox 6 has more scope for adding features but, even so, backward compatibility will be maintained and the addition of features will be strictly controlled but community-driven.

I don't know how community-driven Mach II is. I don't think it has a public bug tracker (Model-Glue, Fusebox, ColdSpring and Reactor all do). I get the impression that Application.cfc support was added for coolness (the other frameworks have taken great pains to remain compatible with CFMX 6.1 and equivalent competing ColdFusion engines).


August 22, 2006
Peter Farrell and the crew have been busy over at Mach II with the latest public beta release of the framework! Lots of bug fixes and small enhancements. See the site for more details. Remember that your feedback is important in open source projects like this: that's how projects get better and better!


July 10, 2006
You can now register for MAX 2006. The sessions & tracks are all listed as well. Plenty of ColdFusion sessions this year with a good range of levels. I'll be there as part of a three hour session covering frameworks and methodologies - ColdSpring, Fusebox, Mach II, Model-Glue and Reactor will all be covered. Yes, Fusebox at MAX!


May 31, 2006
Thanx to the generosity of Kurt Wiersma, I will be creating a Fusebox 5 version of his AppBooster sample application. Kurt has made some great contributions to the ColdSpring project and is an advocate for Mach II. He has created AppBooster as a way to help Mach II developers get a 'leg up' when starting a new application. I asked Kurt if I could take his code (currently at Beta 2) and create a version of it to distribute as a sample application for Fusebox 5.


May 24, 2006
So you're building a Mach II application and you're figuring out what code should go in your filters and what code should go in your listeners and you build it all out in a nice, modular fashion and it works and you're very pleased with yourself.

And then you need to put a Flex front-end on your application. That means you need to expose your model as a set of remote methods. If you got your application design right, that'll be easy: just open up your model CFCs and change the access attributes and you'll be done, right?

[More]


April 14, 2006
Updated to add some clarification on my views about performance!

First off, while I think the tests are interesting, I've always been one to say don't worry about performance too much because "fast enough" is almost always sufficient. Very few websites get the sort of traffic to need heavy load testing and tuning, frankly, and as we know there are some very high traffic sites out there running on various frameworks. macromedia.com runs (about a quarter of its applications) on Mach II and the performance under load testing met all of our criteria.

My comments about the tests Webapper ran were meant to say:

  • It's no surprise Fusebox is "faster" because it is more of a compiler than anything else (the framework doesn't really "do" anything at runtime, once your XML is compiled to CFML)
  • I was pleasantly surprised that Mach II was not slower than a hand-coded CFC-based application - a lot of people complain about the "overhead" of Mach II but this shows that is not necessarily true
And I should have pointed out that none of the versions were optimized for speed. However, I'll bet that if they are all optimized, the results overall won't be too different - at least, not different enough to make any overall judgments and, in particular, framework choices based on.

The point of the original (Webapper) article was that JVM tuning can have a dramatic effect on performance, as can Trusted Cache.


Those wonderful folks over at Webapper have been doing some load testing on various frameworks using the ColdFusion PetMarket application (featured in the February CFDJ). They tested Fusebox 4.1, Mach II and Simon Horwith's "no framework" versions of PetMarket. Fusebox 4.1 was the fastest which really isn't much of a surprise since it compiles everything down to straight line CFML on the first request so subsequent requests just process a single file. What surprised me was that the Mach II version outperformed Simon's version (albeit, not by very much). Overall, Simon's version was 100% slower than the Fusebox 4.1 version. Unfortunately, Webapper couldn't test the Model-Glue version because "the PetMarket Model Glue application was not fully functional". Based on my experiences, I'd expect Model-Glue to fall somewhere between Fusebox 4.1 and Mach II performance so I hope they get a chance at some point to show that.


March 1, 2006
Fusion Authority has another great interview / article about one of the topics coming up at cf.Objective(). This time it's Kurt Wiersma, talking about combining Mach II and ColdSpring. The article gives a short overview of each framework and then talks about the benefits of combining them to produce enterprise-grade applications that are easier to maintain and enhance. Kurt's blog also has some good information about the conference, about ColdSpring and about Mach II.


November 10, 2005
Scott Barnes talks about the work that went into Mach II 1.1.0 and why your favorite features didn't make the cut. His point is that framework development is not a free-for-all and every change must be carefully considered. A good read!


November 9, 2005
The Mach II website has just posted the 1.1.0 release for download. Lots of enhancements and bug fixes - and still backward-compatible with 1.0.10! The download page lists the main changes.

Probably the biggest news in this release is the introduction of resultArg= and contentArg= as the new "best practice" to avoid using the request scope.

There is also a <redirect> command (added to the XML language) so that you don't need to write a filter for simple redirects.

Keep an eye on Peter Farrell's blog for hints and tips on using the new release!


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.


October 7, 2005

September 18, 2005
In preparation for the forthcoming 1.1.0 release of the Mach II application framework, the ColdFusion codebase has been frozen, as Matt Woodward announces on his blog.


August 23, 2005
I'll be in Portland this Thursday, speaking at the Portland ColdFusion User Group about application frameworks. I've given versions of this talk at several conferences and user groups over the last year but I've updated it this time to include Model-Glue on a par with Fusebox and Mach II.

We will be meeting at the Portland offices of Schoonertech - directions are now on the PDXCFUG website.


Looks like I'll be taking my recently updated application frameworks talk to the Salt Lake ColdFusion User Group at the end of September (for their 'October' meeting) since I'll be in town for a cat show that weekend (the last weekend of my sabbatical). Kudos to Matthew Reinbold for twisting my arm and making it possible!


August 19, 2005
The early bird price of $299 ends TODAY then it goes up to $499 so hurry along and register for the 2005 Fusebox & Frameworks Conference!

Don't forget that there are also full-day classes being run on the Wednesday before the conference (9/28):

  • (FB103 Intro to Fusebox - Simon Horwith - cancelled)
  • FB301 Advanced Fusebox - Jeff Peters
  • (MT101 Mach II - Hal Helms - cancelled)
Those classes are just $449 each!


August 12, 2005
The Fusebox & Frameworks conference is coming together nicely - take a look at the list of topics and speakers! All the major frameworks are going to be covered: Fusebox, Mach II, Model-Glue, Tartan, onTap, Rails, Spring and various custom concoctions! I think it's particularly interesting to see Rails and Spring on the menu (with talks from John Paul Ashenfelter and Maxim Porges respectively).

I'm going to be in Salt Lake City so I'll miss this year's conference which I'm fairly bummed about - it really looks like a great lineup!

Only a week left to get the early bird price too so hurry up and register!


August 2, 2005
Curious about what it would look like to use Dave Ross's ColdSpring framework with the Mach II framework? Check out the great diagram on Dave's blog.


July 21, 2005
Ray Camden asked on the Model-Glue list about whether there was a way to avoid repeatedly typing the application name in the XML configuration file. Wayne Graham came back with a brilliant way to do this that uses XML entities - definitions of &entities; directly in your XML file.

Read Ray's enthusiastic response to Wayne's blog posting about the technique.

This should apply to other frameworks that use XML configuration files but I haven't tried it.


July 19, 2005
Michael Smith has just announced the 6th Annual Fusebox / Frameworks Conference at the end of September. The call for speakers / topics is open now until July 25th. This year's conference will cover more than just Fusebox and FLiP - it will cover a variety of frameworks based on the topics you request!

And, no, I will not be there this year - it clashes with a cat show in Salt Lake City so I'll be on the road from California to Utah while the conference takes place!


July 5, 2005
Dave Ross notes that this announcement by Ben Edwards about a 1.1.0 release of Mach II may have been lost in all the chatter about CFUNITED. I remember seeing it on the Mach II mailing list while I was out in DC but I forgot to blog it. My bad. Matt Woodward has a good head on his shoulders so this seems like a very sensible move that should help assuage some of the criticisms leveled at Mach II, Ben and Hal in regard to the openness (and timeliness) of its development.


An interesting commentary from Adam Crump about how hard these frameworks are to learn. I won't add any additional commentary here because I already posted a comment on Adam's blog (and I think Adam already covers all the bases in his post).


June 27, 2005
Well, it seems that no one got my reference to the Monty Python sketch when I linked to Peter J. Farrell's post about Mach II. Sometimes humor is lost.

I'm back from a long weekend away and I'm very gratified to see several people writing good, reasoned, blog posts explaining why Peter is wrong. Although Elyse seems to side more with Peter.

Those who know me will be well aware that I'm stirring the pot to provoke discussion and to make people think for themselves about their technology choices. That's one of the main drivers behind my "Frameworks: Fusebox or Mach II?" talk (Wednesday 6:10pm and Friday 10:40am at CFUNITED)...


June 23, 2005
Peter Farrell seems to think so in a couple of posts on his blog. He thinks the excitement over Model-Glue is killing Mach II. Pop over to his blog and let him know what you think!


June 22, 2005
After publishing the sample code, I decided to have another pass through my presentation. With the current surge in popularity of Model-Glue, the "Fusebox vs Mach II" nature of the talk feels a little dated to me (gee, how fast things change in IT!) so I decided to add copious notes saying where Model-Glue is similar / different to both Fusebox and Mach II. Naturally, it has more similarities with Mach II than with Fusebox but the "third leg" of comparison is enlightening all the same.

Now the question in my mind is whether I should "promote" Model-Glue from the notes (for folks to read after downloading the PPT) to content in the actual presentation itself? In some ways, most of the comparisons (between Fusebox and M**) would turn out the same but there are some interesting differences as well. Thoughts?


June 4, 2005
Now that my application conversion is complete and tested, I want to talk about some of the issues I ran into and some of the differences in approach that I had to take between the two frameworks.

The first thing that kept tripping me up was that Mach II uses event= for the event-handler name but Model-Glue uses name=. It's a hard habit to break as I repeatedly found out! Overall, the Model-Glue grammar is more verbose because of its nested structure but the visual effect is a much less dense XML file: Mach II's flat syntax means event handlers have a sequence of single-line XML tags; Model-Glue has a broadcasts section containing indented message tags followed by a views section containing indented include tags and a results section containing indented result tags. The nesting and the simpler tag language leads to more whitespace and more vertical layout which, in my opinion, is easier to read.

A corollary to that is that Mach II lets you intersperse view-page tags, notify tags, event-arg tags and so on which can make it a little hard to follow exactly what is going on in a complex event handler. Model-Glue makes you list your broadcast messages first, followed by your view includes, followed by any continuation events (results). That means you have a clearer separation of control logic and presentation than Mach II allows. Model-Glue uses the event object consistently as the data bus so it doesn't suffer from the event-arg injections that are necessary in Mach II (unless you're using a custom Mach II invoker to store results directly in the event object!).

Shifting the configuration of Mach II's listeners out to config beans in Model-Glue meant that I could cut the number of listener declarations from 25 to just 6 controllers. Then instead of notifying one of 25 listeners to call a method, I was able to send a parameterized message to one of just 6 controllers - the parameter specifying which config bean the controller needs to use. Since the config beans are singletons, they can maintain the state I was previously maintaining in all my separate listeners. This pretty much turned my previous architecture on its head because the configuration is now a dynamic attribute of each controller invocation rather than a static attribute of each listener declaration. Since I don't actually have to preserve the URL structure, I can make further simplifications to the application structure now - but for now the benefits of moving the configuration out of the main line are enough.

One stumbling block I hit was where I was running some business logic, generating a view and then using the rendered view in some more business logic. I was emailing the intermediate view results to interested parties. In Mach II, because you can mix notify and view-page tags, it's pretty easy to perform business logic on the result of a view rendering. While the mixture of business and presentation logic leaves a bad taste in my mouth, there appears to be no easy way to deal with this in Model-Glue and it still feels like there should be... My workaround was to duplicate the view into a cfsavecontent within a controller since it was such a simple view (fortunately). I'm not very happy with that either.

Coming back to the event object issue, Model-Glue's consistency means that every controller method gets passed the event object and is expected to return it - result values are added to the event object rather than being returned from controller methods. The downside is that controller methods tend to conclude with:

<cfset arguments.event.setValue("result",result) />
<cfreturn arguments.event />
instead of just:
<cfreturn result />
The event object is the data bus in Model-Glue and it becomes the view state (for rendering views). Contrast this with Mach II where the data bus is really the request scope but because listeners operate on the event object, you need to shuffle request scope data into the event object if it is needed inside a listener. You trade off a bit of inconvenience for a lot of consistency and better encapsulation.

There's no doubt that Model-Glue has benefitted from the experiences of both Mach II and Fusebox but it has also added its own unique elements. Consistency and simplicity are key drivers for Model-Glue which means you sacrifice some power and expressiveness. As always, it's all about tradeoffs and you need to make the choice based on the needs of your project (and, to some extent, your own personal preferences).


June 2, 2005
I bet that grabbed your attention?

As you probably know by now, I'm working on our next generation order management system. The current, live system relies on a lot of batch processes, powered by ColdFusion, shuffling, processing and generating a lot of XML files. The previous system was also batch processed but used proprietary file formats (mostly CSV - comma-separated value - formats) and was not powered by ColdFusion.

The next generation system relies very heavily on CFMX 7's event gateway system to provide near real-time data transfer between all the various IT systems. So it's mostly CFCs, all running quietly in the background.

However, even this new system will still deal with some batch jobs and, like its predecessor, it has a simple HTML user interface for certain manual tasks, mostly related to debugging and monitoring.

Since Mach II is a Macromedia Web Team standard, that's what I used to build the current administrative interface. A handful of listeners that drive the underlying order management CFCs and a handful of views that display the debugging and monitoring options and results. All of the batch jobs use Mach II URLs too and, since the batch jobs interact with a lot of servers, there are actually 25 listener declarations, even though there are only five distinct CFCs used as listeners. The mach-ii.xml file described all of the various FTP and directory structures across development, QA and production - each listener declaration represented one of the basic five listeners configured for a particular scenario. During system maintenance, the IT Operations folks would sometimes need to modify the mach-ii.xml file (changing a directory path or a password or...).

That should ring some alarm bells. Application structure / control flow should be separate from configuration data.

At first, it had been OK to manage things this way but as the number of different configurations grew, I had begun to realize that the time would come when I would need to restructure the application - in a fairly radical way, most likely.

I decided that all the configuration should be separate from the main control file and that I needed a way for the configuration to be automatically mapped to objects, for easy manipulation within the main application code.

Sounds like... a managed container... perhaps "Inversion of Control"...

Since that sort of restructuring was likely to involve touching all of the Mach II code (all the listener configuration would need to move elsewhere, as well as some basic configuration data that was currently stored as Mach II property tags), I figured that maybe changing to another framework would not be that much more work. A framework that provided a similar MVC structure but with automatically managed configuration objects. Model-Glue, to be precise.

I started the conversion Tuesday morning (May 31st) but spent most of the day planning out the design of the configuration beans that I would need, looking at how I could improve the maintainability of the configuration as well as simplify the code that used the data. I'd created the outline of one bean by close of business.

Wednesday was very productive with the bulk of mach-ii.xml rewritten as ModelGlue.xml and most of the original Mach II listeners rewritten as Model-Glue controllers. The main administrative menu page appeared and a few of the options actually worked.

Today saw the completion of the rewrite, including the tedious task of writing over a dozen very similar FTP connection configuration files! I did some unit testing and then checked everything into CVS and pushed it to the shared development server for folks to use.

mach-ii.xml file: 522 lines, 23K of fairly dense XML, 25 listener declarations.

ModelGlue.xml file: 427 lines, 11K of fairly well-spaced XML, 6 controller declarations, 5 config bean CFCs, 22 bean configuration files (710 lines, 16K of XML).

In a future entry, I'll talk about some of the issues, benefits and mindshifts I encountered during the conversion of this application.


May 5, 2005
Trond has posted a useful high-level summary of various application frameworks on his (beautifully designed) Waterswing blog.

I've already added a comment in response to several other comments there but I want to highlight a couple of observations he makes.

He draws a clear distinction between the primary application frameworks (Fusebox, Mach II, Model-Glue) and the "supporting" frameworks (Tartan, CFHibernate, ColdSpring). This is important to understand: you can use the supporting frameworks on their own, i.e., with your own ad hoc code, but they really work well when used with the primary application frameworks. Indeed, Tartan includes a Mach II listener and Model-Glue includes a Tartan proxy.

He also notes that Mach II gives the appearance of a framework that is not evolving very fast and compares it to Model-Glue, saying the latter "might very well take over". It will definitely be an area to watch closely.

More on this topic when I speak at SacCFUG, BACFUG, CFUNITED and PDXCFUG over the next few months. After CFUNITED, I'll make seven variants of a sample application available - each variant shows a different framework or a different style within a single framework.


April 8, 2005
Much to my surprise, I got a notice this morning that after many, many months of silence, Mach II for PHP finally entered public beta and is available for download. The documentation is very good, with sections on installation and setup as well as a complete walkthrough of the XML configuration file. A nice bit of work from Alan Richmond!


March 22, 2005
I blogged this a few days ago when it turned up on Jeff's site but now it's turned up on Hal's site as well so I want to add some more commentary.
Original: Jeff and Hal talk about domain models and how you can use fully OO models with Fusebox - "doing OO" doesn't mean you have to use Mach II. The conversation is a nice gentle introduction to the idea of domain models as well as as some thoughts on why you might choose Fusebox or Mach II for the controller in your application.
Update: The discussion is the latest in Hal's series of occasional newsletters and having re-read it a couple of times I wanted to comment on a couple of pieces.

On the choice of frameworks, Hal says:

"So, if I were working on a team with Ben Edwards and Sean Corfield, both OO guys, I imagine we'd use Mach-II. If I was working on a team with other programmers (who may be as good or better than Ben or Sean, but simply don't do OO), I think I'd choose Fusebox."
I'm an OO guy but I'm a real fan of Fusebox 4.1 as well. I might even try to persuade Ben to use Fusebox if he was working with me. As Hal shows in in the newsletter, the domain model is where all the real OO-ness is - and you can use that with either framework.

Then Jeff asks why Mach II requires OO-aware programmers and Hal gives this very good answer:

"Mach-II exposes more of its internal architecture than does Fusebox. As I said earlier, you could change Fusebox's architecture from procedural to OO and no one would notice. If you went from OO to procedural with Mach-II, everyone's code would break. The controller components Mach-II programmers create extend the Mach-II framework components."


February 14, 2005
Ben's opening post is a response to Joe Rinehart's comments that Mach II doesn't seem very implicit in some places. Brian Kotek has already posted a comment asking if this new blog means Ben is going to be a bit more open and vocal about Mach II and where it is going so rush on over and add your voice!


February 11, 2005
Joe Rinehart has a very thought-provoking post about whether Mach II really implements "implicit" invocation. In order to keep the flow of discussion going, I suggest you post comments on his blog about this, not mine. That's where I'll be posting my comments (although, to save you the trouble of reading through all the comments, I'll just say that I basically agree with him - Mach II is not as implicit as it would like to make out).


January 1, 2005
Wow, I spend so much of my time telling people "Don't worry, OO design is hard and eventually you'll get it!"... I never realized I'd spent so much time in the OO world that I can no longer think in a procedural way...

I'm designing a new website using Adalon so I'm going through the whole wireframe, XFA, fuseactions, fuses design process and it's hard. This is just not what I'm used to.

The site ought to be pretty simple: it's a basic task manager with elementary user identification. I know how to design it from a model point of view, using an OO model design. But trying to follow FLiP to drill down from the user experience into the mechanics is killing me!

I'm trying really hard to follow the process. I keep walking through the use cases, with input and output variables being passed between fuses but it's so painful for me.

I hadn't realized how differently I think about problems - but it definitely highlights why FLiP doesn't 'click' for me.

So why am I putting myself through this pain? I'm writing a presentation that compares Fusebox and Mach II. I know how I'd design the Mach II version and I'd use a very similar approach for an OO MVC Fusebox 4.1 design. But to really get a good comparison of the frameworks, I really want to start with a 'traditional' procedural Fusebox application.

I'd be interested to hear your stories of paradigm shifts...


December 25, 2004
I've completed an update of the Mach II Development Guide. Again, see the Revision History for the full list of changes - the guide now covers the 1.0.10 framework release and includes a number of clarifications on points that people had asked about.


December 16, 2004
After a discussion on cfaussie, I've decided to publish what I remember of the evolution of Mach II so that people can get a better perspective on the framework's roots and some of its quirks.


December 14, 2004
Scott Barnes blog continues to be excellent reading. This time he explains his approach to Mach II application design. He has some good advice, such as making sure that your business model is kept separate from the framework.


November 24, 2004
Scott Barnes highlights a common misconception many developers have about Mach II and their business model - namely that Mach II listeners are a good place to put your "manager" logic. You can do it that way but as Scott point out, that will tie your business model to the framework - and your business model shouldn't know anything about any framework code! It's a good read!


I'm stunned by how much heat my decision to convert corfield.org from Mach II to Fusebox 4.1 has generated!

Read about the conversion process and the reasons why I went through yet another conversion exercise. Don't expect this to be the last word on frameworks!


November 11, 2004
Even tho' I was mostly responsible for the 1.0.10 release of Mach II, I missed the obvious answer to a thread on the Mach II forum. Someone asked about accessing function libraries in a view. I suggested simply cfincludeing the function library page into the view as needed. Someone else suggested a much cleaner solution: putting the function library into a CFC and instantiating it into the Mach II property space. I hadn't suggested this because the syntax to access properties in views is (or rather "was") pretty ugly.

Phil Cruz pointed out that 1.0.10 added get/setProperty() to ViewContext and hence you can simply say getProperty("fnlib") in a view to get your function library back.

Very elegant!


November 10, 2004
After about a hundred responses, I figured I'd tally the results. It seems that only a quarter of my visitors are not using any sort of framework which is a very encouraging result. I think frameworks are very valuable in providing a standard structure for applications and removing the more tedious coding involved in building a web application. I allowed multiple answers - to reflect the fact that many people are working with more than one framework - so it's difficult to figure out the overlaps but of those folks using at least one framework, about half were using Mach II and about a quarter were using each of Fusebox 3, Fusebox 4 and Fusebox 4.1. About a third of framework users work with something other than Mach II or Fusebox (either home-grown or BatFink, onTap, MyOpenBox etc). I expect there's quite a bit of overlap between the Fusebox 4 and Fusebox 4.1 users (since Fusebox 4.1 is still in beta) but it's probably not a stretch to assert that about half of framework users work with some version of Fusebox.

Of course, this poll is pretty heavily skewed because it represents a segment of my blog readership rather than the CF community as a whole (anecdotal evidence suggests about 6-10% of CF developers at large use Fusebox whereas my poll shows about 30-35%). Still the numbers are interesting and I'm very pleased to see so many people are using some sort of framework.

There was a discussion about which framework was best suited to which type of developer. Some folks clearly think Fusebox is easier to learn and therefore more approachable for novice developers - and I'd agree. I definitely got the impression that folks are migrating from Fusebox 3 to either Fusebox 4 / 4.1 or to Mach II, basing their choice on the skill sets of the teams they are working with.


November 9, 2004
Phil Cruz has created a plugin for Eclipse that adds Mach II API docs to the help system (and also for CF Studio / HomeSite+). Thanx Phil!


November 7, 2004
Now you might not know much about Inversion of Control and you might not care about the pros and cons of HiveMind, PicoContainer and Spring, but Mike Spille's Pyrasun blog can be very thought-provoking because he speaks - often bluntly - from personal experience with all this stuff.

What I want to draw attention to here is a key point in the conclusion of his Inversion of Control Containers review:

"In particular, I salute Howard for resisting attempts to twist HiveMind into something it's not - a rare quality, particularly in open source. HiveMind does (mostly :-) ) one thing and does it well."

Mike comments that PicoContainer looks like it followed the XP YAGNI (You Ain't Gonna Need It) principle and each new release seems to have haphazardly added those features which - guess what? - you did need them after all. He also comments that "Spring's just a bit took kitchen-sinky for me."

My point? Frameworks work best when they are cohesive, focused. That usually means tightly-controlled rather than being open source free-for-alls and it also usually means that the creator(s) started with a coherent vision of the whole.

So, when you're asking for Fusebox or Mach II to be opened up so y'all can contribute code, think about Mike's comments on why some frameworks work better than others.


November 5, 2004
By popular demand, I have updated my Mach II bugs / bug fixes page.


October 29, 2004
Phil Cruz has set up Spike's CFC Documenter pointing at his local Mach II files so you can see auto-generated documentation for the Mach II core files.


October 25, 2004
I've been submitting papers to a few conferences recently and one of my planned talks is comparing these two frameworks using a simple example application built on both frameworks and looking at the implementation differences side-by-side.

As I plan out the talk, I'd like some feedback from you on what level of background information you'd like to see in such a talk about the frameworks themselves. I don't think I can assume knowledge of both frameworks but I suspect that any audience for that talk is going to be familiar with one or those frameworks.

Comments?


October 11, 2004
A recruiter contacted me asking for recommendations for Mach II / CFMX developers near Irvine, California. Since I don't really know your locations, I figured I'd post a message here - if you're interested, contact Tony Rotundo directly (tonyr (at) pts1 (dot) com).


October 10, 2004
Ben Edwards just posted Mach II 1.0.10 for download. It's a point release so just a few bug fixes and enhancements. I'll be updating my Mach II pages shortly to reflect this update.


October 6, 2004
Just came across Martin Laine's blog about CF and Mach II and he has some Mach II stuff you can download. Nice to see another Mach II developer blogging and making plugins available. We really need to get all these Mach II plugins and filters centralized - OpenXCF could be a good location for that as it already hosts some Mach II plugins and filters.


October 1, 2004
TeraTech and Hal Helms are running one-day Fusebox and Mach II training classes around Macromedia's MAX in New Orleans at the beginning of November: FB103 Introduction to Fusebox 4.1 and FLiP class runs before MAX and MT101 - Mach-II Full Day Class runs after MAX. Both classes run 10am - 5pm and cost $349 each which is excellent value for a full day's training on these application frameworks.


September 25, 2004
Ben Edwards and I have finalized the features for the 1.0.10 release of Mach II. Since this is a 'point' release, we're focusing on bug fixes and a few minor enhancements and we plan to make a more extensive release early next year.

You can see the final list on my Mach II bugs & enhancements page.

We've gotten a lot of good feedback about what folks would like to see in the framework and we'll be taking that into account for the next major release. Some of the suggestions are very good but require a lot of careful design and probably quite a lot of prototyping before we can settle on exactly how to incorporate these suggestions.

I'll be making the final tweaks to the core files this week and handing the changes off to Ben who will run through the final integration process and build the release, along with any documentation changes we need to make (there will be a couple).


September 23, 2004
Thanx for the feedback so far - keep it coming!

Check out my Mach II bugs and enhancements page for status of various items.

Some comments on the feedback so far...

Yes, Matt Liotta provided a patch to allow calls to config() to be deferred until the very first call of a listener method which can help if your configuration is expensive. I might look into that again if folks really think it's worth adding.

For security of the XML file, you can simply store it outside the webroot - see the Mach II Development Guide for discussion of that. You can actually put all your components and views outside the webroot too.

Interesting idea about including the XML to allow dynamic generation but that would make it very hard to run the framework in 'production' - how would you know whether to reload the application? Dynamic mode tests the timestamp on the XML file, production mode never tests and never reloads. Development mode never tests but always reloads.

Event queue and cflocation - the entire event queue is processed for each request, even if one of the events causes a cflocation to be generated, the other events in the queue will still be processed.

Ability to append contentKey - Fusebox allows this so I can see a similar mechanism for Mach II being reasonable.

Properties - I agree that the current syntax is ugly but it should not be made available as a global 'scope' since that breaks all encapsulation. How about if getProperty() and setProperty() methods were directly available in a listener?


September 22, 2004
Ben Edwards and I have been discussing what should go into the next release of Mach II. He's made a bunch of small bug fixes and has a few suggestions. I've also got a few enhancements I'd like to see incorporated into the core files.

Some of the ideas being bounced around include:

  • Allowing the event object to be used as a target for <view-page contentKey=> and <notify resultKey=> and as a source for <event-arg variable=> somehow. Feedback suggests that new invokers, perhaps EventInvoker and EventArgsInvoker, be provided to address the notify issue (and perhaps deprecate the current invokers?). What about the view-page and event-arg issues? How should we solve those?
  • Attaching the event context to an event so that any method that is passed an event can actually get access to the event context as well, e.g., a listener could call arguments.event.getEventContext() and manipulate the event queue
  • Introducing a BaseComponent class and refactoring common code out of Listener, EventFilter and Plugin into this new class - the net effect would be less duplication of code and EventFilter would gain an announceEvent() method
  • Providing a new component that provides an event-level way to 'call' the framework, intended for use by Flash Remoting, Web Services and the ne Blackstone event gateway
  • Change plugin execution order from "random" to "as declared" (and improve performance)
I'm not in favor of all of these but I'm interested to hear what you think about them. I'm also interested to hear what else you would like to see added to / changed in the framework.
Good feedback so far. Seems like the "big" mach-ii.xml is the number one concern for a lot of folks.


September 21, 2004
Rob Brooks-Bilson commented on my write-up of the Fusebox 2004 conference - and I think it deserves highlighting as something worth a blog entry and its own discussion here:
We're very interested in (and into)Mach II here at Amkor, but didn't send anyone to the conference since it was mainly a Fusebox centric gig. Had there been more Mach II on the schedule, we would love to have sent someone. I'm hoping those guys put together a Mach II specific conference at some point.

I know Fuseox seems to have a bigger following right now, but I really think Mach II is a solid framework for OO development in CF. It's made a believer out of us.

Yes, the Fusebox 2004 conference was pretty much purely a Fusebox gig. Ben Edwards ran a Mach II Birds of a Feather but there were very few Mach II users present and perhaps an Intro to Mach II would have been more appropriate. I made sure my presentation was very focused on Fusebox 4 and didn't even mention Mach II.

Last year's Fusebox conference was one day (and one track) of Fusebox stuff and a half day overview of Mach II - really as part of its launch. I went as an attendee last year because of that half day session (but found plenty of value in the Fusebox sessions too).

I hope to be able to go to Fusebox 2005 (even if it has no Mach II content) but I'd certainly be interested in seeing a Mach II conference of some sort.

Opening this up for comments, who would like to see a Mach II specific conference? Or do you have other suggestions - perhaps a Mach II track at Fusebox 2005?


September 7, 2004
Macromedia - Breeze : Purchase Options - you can now buy Breeze Live in monthly and pay-per-use versions as well as the previous annual and software licensed versions.
It's another Mach II ColdFusion application on the front end and sales information is also processed by ColdFusion on the back end as part of the integration with the Oracle ERP system. The front end and the back end communicate using JMS - yes, the back end uses my JMS event gateway and runs on Blackstone. So I'm very pleased to see this new product offering go live!


September 4, 2004
Well, all of the original Mach II for PHP stuff is now converted to Mach II for ColdFusion including the bookstore. The links in the blog have (mostly) been changed. The root
index.php
now redirects you to the root
index.cfm
to catch any last remaining bad links.
I've got too much invested in Movable Type to switch to a CF-based blog. There's a few little old PHP sections floating around that weren't part of the Mach II code and those haven't been touched. If I need to edit them, I may well convert them.
No more asking why I don't use CF on my own site!


August 16, 2004
As mentioned, I'll be in Portland Thursday evening to talk about Mach II at the CFUG. Logistics being what they are, it would be great if someone could give me a ride to / from the CFUG meeting. I'll be staying at the Holiday Inn Portland Airport, 8439 NE Columbia Blvd which is about 9 miles from ISITE, the location of the CFUG. I might be able to get my wife to drop me off but since she'll be busy with cat show stuff it will be hard to pick me up afterwards. If that journey is on your route, I'd be glad of the ride...


August 15, 2004
This Thursday I shall be speaking at the Portland, Oregon ColdFusion Users Group about Mach II at Macromedia. My wife & I and our friend Dagny will be driving up Wednesday evening / Thursday morning for a cat show and arriving early enough for me to speak at the CFUG meeting on Thursday!
See you there?


June 30, 2004
Stephen Collins reports on his Acid: First BIG Mach-II site up. Go Stephen!
Launched some time back but I never got around to blogging it, Macromedia's new Events application is powered by Mach II as well.


June 27, 2004
Sunday lunchtime saw a new Birds Of a Feather session added, for IDE and tool support for frameworks, led by Matt Liotta. He demo'd some of He3's support for Mach II (table-based editing of the XML file). I showed a utility that renders Mach II's event handlers as hyperlinked pages (so you can click on filter, listener, view and event names and jump to their definitions - I haven't made this public yet!). Jeff Peters showed a couple of tools relating to Fusebox (MindMapper and FuseMinder) and then Steve Nelson showed his test harness generation tools. The aim was to raise awareness and to get feedback about what sort of tools people wanted. One thing that wasn't demo'd but seemed to generate interest was Dave Ross's tool for converting XMI (the XML output from several UML modeling tools) to CFCs.
Next up was Ben Forta's keynote on Blackstone! He raced through some of the things he's been showing at CFUG presentations (Flash forms, PDF generation, report generation, sourceless deployment and EAR / WAR file packaging) and then gave a CFUN exclusive sneak peak: the event gateway!
This is probably the most exciting and radical addition ever to ColdFusion: by writing a small amount of Java, it allows you to connect pretty much anything to ColdFusion and have external, asynchronous events trigger method calls on a CFC.
The example Ben showed was a agent that watched a folder for new, changed or deleted files and automatically called the appropriate method on a CFC to populate / update a database based on the contents of the file. Whilst this generated a lot of "ooohs" from the audience, I suspect that the real impact of this feature will take a while to sink in - it opens up a whole new field of use for ColdFusion since this lets it process requests which are not web-based...
I'll be writing a lot more on this feature in the future...


I had planned to attend two accessibility talks first thing but lack of sleep got the better of me and I had to skip them, catching another two hours of much needed sleep so that I could function during the rest of the day. Apologies to John Hamman and Larry Hull for missing their talks.
Before my talk, I met with Daniel Dougherty who'd been picked to interview me for five minutes and he had some great questions - I believe the various attendee / speaker interviews will get posted by TeraTech later so I'll keep y'all in suspense!
Then it was time for my Mach II talk. A good percentage of folks in the audience were on CFMX 6.1 and were already using either Fusebox or Mach II so that was quite a change from some of my gigs. The presentation seemed to go over well and there were some good questions from the floor - thanx to everyone who attended (and special thanx to those folks who gave me a good evaluation so I got a bottle of wine at the wrap-up session for tying as 'best speaker' with Charlie Arehart from New Atlanta! I'm honored!)
I'll blog more later but right now I'm going to meet some folks in the bar before everyone heads off home!


June 3, 2004
A new blog, by Stephen Collins, starts out with a teaser post about combining Spectra and Mach II. I think this will be an interesting blog to watch - I think Stephen will be posting some great, 'real world' experiences for us all to learn from!


May 8, 2004
My wife & I had a great time in San Diego last week - the drive down was very smooth (just over seven hours door-to-door), great food in Old Town San Diego (both Cafe Coyote and Zocalo are highly recommended), San Diego Zoo (always good!), the Natural History Museum (great exhibit on feathered dinosaurs from China) and, of course, the San Diego ColdFusion User Group meeting. It was a good crowd, RoboDemo and RoboHelp both went down very well (thanx to Silke and Mike from Macromedia San Diego!) and I got a lot of good questions after my Mach II presentation. Afterwards, some of us went to Joe's Crab Shack (never let Cameron give you directions! :) to continue the discussions and eat and drink. A very enjoyable evening!
The drive back? Slow traffic out of San Diego, had to stop to get fresh tires on the Mustang due to a nasty bulge in the wall of the Bridgestones it was wearing before (tread separation perhaps?) and then an accident on the Grapevine held us up for an age (seems to happen almost every time I drive back that way).


April 7, 2004
As part of the preparation for CFUN-04, Michael Smith conducts interviews with all the speakers. His interview with me is now online along with sixteen others.


April 1, 2004
I just received confirmation from Lisa Wilson about the time and location for the April Sacramento CFUG meeting. She wrote:
We have confirmed the location for our April 13th SacCFUG meeting.
New Horizons is hosting the meeting. They are located at 1215 Howe Avenue in Sacramento next to TGI Fridays. The nearest major cross street is Arden Avenue.
We expect the meeting to run from 6:30pm to 8:30pm. We would like you to be available to speak and answer questions about Mach II from 7:00pm to 7:50pm, if that is comfortable for you. I would expect a lot of questions as there is interest in Fusebox and Mach II here and there have been no other speakers on the topic since Hal was out here a couple of years ago.
Gordon Clarke, manager of Sierra MMUG in Auburn will be announcing your talk at his meeting next week, so we expect folks from his group to show up.
I'm looking forward to speaking up in Sacramento and fielding all manner of questions! :)


March 31, 2004
Eric Jansson (of ACS Technology Center) has written a great introductory article about Mach II on DevX. Really good to see coverage like this, especially with comments like "The Mach-II framework has only been around a short time, but it is shaping up to be the most important Web architecture around that supports ColdFusion".
My only (very minor) criticism would be recommending the use of the CFCInvoker_EventArgs style listener invocation (passing all the event arguments as separate ColdFusion arguments) instead of the CFCInvoker_Event style (passing a single event object argument) which has become the de facto preferred way because it provides more control, more flexibility and better maintainability.


March 29, 2004
I keep getting asked about this so I figured I'd spell it out: you cannot download Mach II for PHP yet! It is still in development and will be available for public beta shortly. Keep an eye on the Mach II website for an announcement.


March 26, 2004
In an attempt to reduce some of the confusion over DAO / Gateway and the Memento design patterns, I've updated the "Designing Models" section of the Mach II Development Guide and (temporarily) removed the code examples. People were following the examples too literally even tho' the guide said a more realistic example would use a bean to transfer data between the business object and the data access object (assuming the business object didn't expose all of its state through public getters anyway). The application from which the example code was drawn is no longer in use so it may be a while before I have a suitable 'real' example to put back up as part of the dev guide - most of the Mach II applications on macromedia.com are far too complex to use as examples. I've also removed the comments that applied to the (now non-existent) code examples.


March 17, 2004
That online tool I mentioned has been recreated as a set of VTMs for ColdFusion Studio / HomeSite+ and an extension for Dreamweaver MX. You can read the thread about this on the Mach II forum. The extensions are still being finalized but they are extremely useful already!


March 14, 2004
Writing beans is tiresome - all those getters and setters... just so much repetition! Here's a handy online tool to automate writing beans for the Mach II framework. In fact, the beans themselves aren't tied to the framework really so this could be useful even if you don't use Mach II! Kudos to Jon Block for this!


March 8, 2004
Quite a few folks have commented that accessing request scope in a view seems clumsy, in particular accessing request.event to get at the current event and its data. I've never really thought about it too closely. request.event seemed just fine to me.

Then Paul Kenney made an innocent observation on the Mach II forums and the lightbulb went on: views are executed as the body of a ViewContext object and so they have access to the arguments of the displayView() method! Duh! That means that we don't need to use request scope inside a view to access the event object - and we probably shouldn't (coupling of code to scopes etc) - we can use arguments.event instead. Or just simply event although I prefer the explicit scoping myself.
It also means that a view can find out its name (arguments.viewName) which may or may not be useful (for example if you define two views with different names but the same physical view file). You can also tell whether a view will render straight to the screen or whether it is going to be saved in a variable - by testing arguments.contentKey (which will be "" if no contentKey= attribute was specified in the <view-page> command).


February 25, 2004
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!


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!).


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!


More articles...



Hosting provided by