Viewing Category:   [clear category selection]

(displaying entries 1 - 10)

Mach-II Roadmap Redux


Today was I going through some old Google documents that contained some plans/discussions by Team Mach-II on features to be released in future releases of Mach-II.  This specific document was last editted on January 7th, 2007 which is over 16 months ago as of the date of this blog post.  I'm happy to say that 95% of the ideas in the document have been implemented in either Mach-II 1.5 or Mach-II 1.6.

Here's a brief list of ideas that were in the document that we've already implement in recent version of Mach-II:

  1.  "Per event caching"
    That was the whole note in the document.  It was voted on and passed.  I'm glad to say that this feature turned into the new caching package that is in Mach-II 1.6.  Based on my memories of our discussions, the caching package that was designed is much more robust and feature complete than the one we originally discussed.
  2. "Dynamically build URLs in a framework aware format (including SES)"
    The document included some crude syntax on how it would work.  This statement ultimately made it into Mach-II 1.5 which was released as a stable in the Fall of 2007.  I'm glad to see that Model-Glue is following suite with similar functionality [LinkTo()] in the up and coming version 3 of the framework.
  3. " Ability to split XML config file and/or include XML chunks in main config file"
    This turned into the <include> and <module> features that we added in Mach-II 1.5.  Personally, <include> is a sleeper hit of Mach-II 1.5.  It's a powerful feature that is easy to miss and <module> has become the life-saver of my current applications.
  4. " Persist complex args across redirects"
    Before Mach-II 1.5, you could not use the <redirect> command to persist complex datatypes across a redirect.  So if you needed a CFC, struct or array on the other side of the <cflocation> you were just out of luck.  With 1.5 and beyond, you don't have to worry about that since you can use the persist="true" attribute of the redirect command and your complex arguments will be on the other side of the redirect.
  5. "Allow for complex datatypes defined within Mach-II XML"
    I was against this idea when Matt Woodward orginially introduced this idea.  I'm glad Matt was right and my fears about this was wrong about adding top-level support for arrays, structs and CFCs.  The introduction of MachII.framework.Property.cfc allowed us to create both a simple and high-level configuration for both the caching and logging packages we added to Mach-II 1.6.  I'm very happy in the way you can add either caching or logging packages to your Mach-II application.
  6. " Inline execution of events"
    This one idea turned into the subroutines feature that was added in Mach-II 1.5.  The Google doc shows a bunch of syntax ideas including on that called subroutines <block name="something"> which you indicate in your event-handler by using the a "do" command <do block="something"/>.  I'm glad we didn't go with this syntax, but the concepts behind "blocks" is essentially the same as subroutines.

All in all, we stayed very true to the ideas listed in this particular Google doc and what was ultimately implemented in Mach-II 1.5 and 1.6.

0 Comments  |  0 Trackbacks  |  Announcements  |  Send
Posted 5/5/08 @ 10:00 AM by Peter J. Farrell

Ohloh codebae history and well documented code factoid


Ohloh is a project aggregator that provides more visibility to a project by watching rss (like Trac) and SVN/CVS.  They have some factoids on the Mach-II framework profile

They do not have CF as a language category.  Since we close out our tags (<cfset something = 1 />) in the Mach-II, they categorize us as an xml project.  The source has been rated as "extremely well documented code" with 12.6% of the source of Mach-II 1.6 being comments.

Our codebase history page shows that since the project was added to Ohloh, we've added over 100,000 lines of code to the Mach-II 1.6 codebase since November 2007!

 

0 Comments  |  0 Trackbacks  |  Announcements  |  Send
Posted 4/8/08 @ 10:15 AM by Peter J. Farrell

Mach-II 1.6 Progress with Beta Coming Soon


It's been a while since Team Mach-II briefed users on the progress of Mach-II 1.6 -- probably too long.  Before I get into the details, I want to personally mention that I'm extremely excited about this release for many reasons.  I'd like to thank Kurt Wiersma (our resident geek) for all his hard work on 1.6 and playing devil's advocate with me when it came to features, architecture and final implementation.  Coding with constant input creates better code than solo coding.  I look forward to working on Mach-II 2.0 (we've got great things in store).

We've added many major features:

  • Mach-II caching appears to be the flashy new feature.  We're offering a very flexible implementation that allows you to either use basic caching strategies (time span or LRU) or the ability to write your own caching strategy.  The possibilities for developer extended caching is pretty much limitless as the architecture allows you to go as far as hooking into open-source Java project EhCache or a distributed memory caching system like MemCache (which is used at sites like Slashdot and LiveJournal).  The caching feature offers controller-level caching which was hard accomplish before 1.6, however it does not replace the need to add caching at other layers of your application such as in the model layer or at the database.
  • Mach-II logging is a feature that has been requested for a long time as it allows developers new ways of debugging a Mach-II application by using the one of the bundled loggers or creating their own.  We wanted to get this feature into the Mach-II 1.5 release, but due to time limitations it was pushed into the 1.6 release.  However, it is probably a good thing as 1.5 introduced new property datatypes (structs, arrays, Property.cfc).  The new Property.cfc was so new at the time that we never envisioned using a Property.cfc as a way for setup and configuration a Mach-II specific feature.  The logging feature is configured by declaring the MachII.logging.LoggingProperty as a property in your xml configuration file.  This approach allows us to offer greater flexibility to develoeprs for configuring and extending the logging system.  We also went in the same direction for caching and use the MachII.caching.CachingProperty for setup and configuration of the caching features.
  • The publish-subscriber listener invoking (broadcasting messages) is a new feature that has gotten some people very excited.  Broadcast style listeners decouple listeners from the event handlers whereas using the <notify> command couples listeners to event handlers.  The "broadcast" layer of abstraction would allow you to register an audit / logging layer by merely adding it as a subscriber to the broadcasted message instead of adding a notify to every event handler.  Also, message broadcasting lets you easily swap listeners by changing the messages it subscribes to and saves you from editing event handlers (and possibly introducing new errors). As a few people have pointed out in past discussions, these two reasons are a bigger maintenance issue than most developer realize.

Some of these major features have resulted in few neat byproducts or smaller features:

  • Mach-II 1.6 ships with a threading adapter that allow us to pass arbitrary bits of code (basically a CFC, method name and arguments) to be executed in a thread (cfthread).  One of problems is that the threading implementations between CFML engines varies somewhat.  The variation causes problems as we would like to support all CFML engines that offer threading capabilities.  The thread adapter allow us to abstract the different threading implementations and create a common API for calling code to use.  Currently, threading is only available on Adobe ColdFusion 8 as the BlueDragon 7 currently has some limitations in the context of Mach-II's implementation (these limitations are supposed to be changed in a future release).  Support for cfthread in Railo is coming in a future version of Railo as well.  As the CFML engines evolve, we'll be able to support threading with the Mach-II core with the threading adapter (both the caching and publish/subscribe features utilize the threading if available on the deployed CFML engine and atuomatically downgrade to serial processing if not available on that specific engine).
  • Simplify your Application.cfc. We have added support for onSessionStart and onSessionEnd as new plugin points in Mach-II plugins.  Of course, this is only available when using Application.cf (via mach-ii.cfc).  This addition allows you to move onSessionStart/End logic into the Mach-II arena and resuse logic that exists in your model layer.  This leaves your Application.cfc devoid of complicated logic within your Application.cfc and allows for easier module intergration (no need to copy onSessionStart code from a third-party module like MachBlog into you application). We have also added basic onApplicationStart and onRequestStart methods in the mach-ii.cfc which allows you to ommit these methods in your Application.cfc unless you need to add special functionality in your Application.cfc that is not offered by the basic methods.

At the moment, all the features described above have been implemented and comitted to the repository.  Check out a nightly and download a zip the lastest nightly build of 1.6. All in all this is a very exciting release and we have plenty of new things in the queue for Mach-II 2.0.  Look for a Beta of Mach-II 1.6 in early April.

3 Comments  |  0 Trackbacks  |  Announcements, Mach-II 1.6  |  Send
Posted 3/30/08 @ 11:00 AM by Peter J. Farrell

Early Bird Deadline Extended to 1/20 for Mach-II Workshops at cf.Objective()


The early bird deadline has been extended to match the extended deadline for cf.Objective 2008!

If you register by January 20, you'll get the following "Early Bird Special" discounts:

  • 2-Day Workshop (April 30 - May 1)  --  $760 (15% discount; save $135 over regular price of $895)
  • 1-Day Workshop (May 1)  --  $445 (10% discount; save $50 over regular price of $495)

Organizations who register five or more employees will receive a 15% discount for the 2-Day Workshop and a 5% discount for the 1-Day Workshop.  Please contact cathy@bestmeetings.com for the discount code.

Go to http://cfobjective.com/precon.cfm now to learn more about the workshops.

Announcements  |  Send
Posted 1/15/08 @ 12:00 AM by Peter J. Farrell

Early Bird Ends 1/15 for Mach-II Workshops at cf.Objective()


Don't forget about the following cf.Objective () 2008 Pre-Conference Workshops:

  • April 30 Workshop  --  Object-Oriented Programming with Mach-II
  • May 1 Workshop  --  Building Enterprise-Level Applications with Mach-II

These workshops, which are NOT an introduction to ColdFusion, were designed for developers who are able to build complete procedural applications in ColdFusion. Basic knowledge of CFCs is helpful, but not required, for these workshops.

If you register by January 15, you'll get the following "Early Bird Special" discounts:

  • 2-Day Workshop (April 30 - May 1)  --  $760 (15% discount; save $135 over regular price of $895)
  • 1-Day Workshop (May 1)  --  $445 (10% discount; save $50 over regular price of $495)

Organizations who register five or more employees will receive a 15% discount for the 2-Day Workshop and a 5% discount for the 1-Day Workshop.  Please contact cathy@bestmeetings.com for the discount code.

Go to http://cfobjective.com/precon.cfm now to learn more about the workshops.

Announcements  |  Send
Posted 1/14/08 @ 12:00 AM by Peter J. Farrell

Team Mach-II needs your help!


We are looking for Mach-II developers that are willing to contribute writing of content to help build out the official wiki for the Mach-II project.  We have two general needs:

  • FAQ - Do you have some tidbits of helpful info that would help enrich the FAQ?  Consider this your green light to go out there and go nuts... well, maybe not entirely nuts.  We will be keeping an eye on you.  :) Obviously there is the potential for abuse here, so we will keep this open as long as it appears we are seeing positive progress with it, but we would like to encourage community participation.  Head to the wiki to participate.
  • Documentation - If you have written or wish to create detailed write-ups targeted to specific features of Mach-II, now is your chance to get them out there.  If you are interested in submitting a feature write-up, contact Dave Shuck.

 

0 Comments  |  Announcements  |  Send
Posted 12/12/07 @ 12:08 AM by Dave Shuck

Mach-II 1.6 Spec: Application.cfc Bootstrapper Enhancements


Team Mach-II is proud to release a specification for a proposed new feature for Mach-II 1.6 and we need your comments / thoughts / reactions.  Please read the entire specification and if you have questions or comments please comment on our new Trac install on Ticket #5.

Summary

Integrating third-party (such as MachBlog) that use sessions require you to copy and paste onSessionStart / onSessionEnd specific code into your Application.cfc/cfm.  While this may be simple to do, it becomes a tedious and error prone process when you want to upgrade your module to a new version.  This would also apply if another team of developers maintain the code to the module you integrate with your application.  Module integrating should be as easy as drag 'n drop by adding the module configuration file to your base Mach-II XML configuration file.  Currently, this is not possible when integrating modules.

Another problem is that Mach-II applications require users to manually call methods in the mach-ii.cfc boostrappers when using Applications.  These could easily be streamlined for standard Mach-II applications, allowing developers to override default options by overriding the method in their Application.cfc

Read the entire specification

http://docs.google.com/Doc?id=dhjcwfn4_44crp8tx

Mach-II - We're Community Driven!

1 Comment  |  0 Trackbacks  |  Announcements, Mach-II 1.6  |  Send
Posted 11/7/07 @ 7:40 AM by Peter J. Farrell

Mach-II 1.6 Spec: Broadcast Style Listeners


Team Mach-II is proud to release a specification for a proposed new feature for Mach-II 1.6 and we need your comments / thoughts / reactions.  Please read the entire specification and if you have questions or comments please comment on our new Trac install on Ticket #4.

Summary

There has been discussions in the past that Mach-II does not allow for multiple listener notifications via a single "broadcast" command.  Model-Glue's entire listener (aka controllers in Model-Glue) works on a broadcast system versus Mach-II somewhat more direct approach with the <notify> command.  Any listeners have has a registered interest in a particular broadcasted message will receive the message for use.  This allows you to invoke multiple listener methods by broadcasting a single message.

Read the entire specification

http://docs.google.com/View?docid=dhjcwfn4_38gnmpfc

Mach-II - We're Community Driven!

7 Comments  |  0 Trackbacks  |  Announcements, Mach-II 1.6  |  Send
Posted 11/4/07 @ 4:56 PM by Peter J. Farrell

We've Added a Bug Tracker and Have a New SVN URL


Exciting times around here as we have improved our infrastructure for the project.  The newest addition to our infrastructure is that our Subversion repository has moved to a managed host - CVSDude.  This has allowed us to integrate a Trac installation for Mach-II and give us a roadmap, wiki and bug tracking capabilities.  From now on, our bug tracker is publicly available.

Although not all of us on Team Mach-II think the best things about wikis, we have enabled a wiki for Mach-II on our Trac installation.  Currently, there are some FAQs that I imported from the somewhat out of date FAQs PDF.  So if you want to help us, please feel free to help with documenation on the wiki.

Visit our Mach-II Project Bug Tracker and Wiki

The new SVN url is http://greatbiztoolsllc-svn.cvsdude.com/mach-ii/

Special thanks to GreatBizTools, LLC - the principal commercial entity supporting Mach-II - for providing us with our SVN and Trac infrastructure.

1 Comment  |  0 Trackbacks  |  Announcements  |  Send
Posted 11/4/07 @ 12:58 PM by Peter J. Farrell

Mach-II 1.6 Development Started & Small Updates


Just wanted to let everybody know that we've started a new directory in our Subversion repository for development of Mach-II 1.6.  Point your favorite SVN client if you wish to use the BER here:

http://greatbiztoolsllc-svn.cvsdude.com/mach-ii/framework/1-6-0/trunk/

Also, a friendly reminder that nightly zips of the BER are available.  Ok, they are not so nightly at this point, but when significant features or enhancements are checked in we'll (manually) generate a nightly build.  The build, zip and ftp is already handled by our ANT build file, I just haven't found the time to add a cron task.  Nightlies are available as a ZIP from our nightly build directory:

http://www.mach-ii.com/nightly/

Also, I'm working on a new application skeleton for Mach-II 1.5. Not a lot has changed except for the addition of a few xml commands in the configuration file and a couple new "suggested" directories.  I hope to release a new version in the near future as I've gotten a few emails about this already.  FYI, the 1.1.1 skeleton works just fine with Mach-II 1.5.

Lastly, we're working on more documentation for Mach-II.  Just wanted to thank Brian Meloche who recently contacted me about writing some documentation for the framework.  He even included a sample technical writing sample for review.  Brian is a big user of Mach-II and promotes it heavily at the company he works at. We'll update the resources page as new documentation is updated or created and I'll be sure to leave a note on this blog as notification.

3 Comments  |  0 Trackbacks  |  Announcements, Mach-II 1.6  |  Send
Posted 10/19/07 @ 8:16 PM by Peter J. Farrell
 

next >