<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simon Whatley &#187; Fusebox</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/fusebox/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simonwhatley.co.uk</link>
	<description>The opposite of every great idea is another great idea</description>
	<lastBuildDate>Wed, 02 Nov 2011 09:28:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Enabling Search Engine Safe URLs with Apache and htaccess</title>
		<link>http://www.simonwhatley.co.uk/enabling-search-engine-safe-urls-with-apache-and-htaccess</link>
		<comments>http://www.simonwhatley.co.uk/enabling-search-engine-safe-urls-with-apache-and-htaccess#comments</comments>
		<pubDate>Mon, 08 Dec 2008 15:57:15 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[All]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[ColdBox]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Fusebox]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[httpd.conf]]></category>
		<category><![CDATA[ISAPI]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[New Brunswick]]></category>
		<category><![CDATA[None]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[search engine optimisation]]></category>
		<category><![CDATA[search engine robots]]></category>
		<category><![CDATA[search engine safe]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[URL rewriting]]></category>
		<category><![CDATA[USD]]></category>
		<category><![CDATA[web applications]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1635</guid>
		<description><![CDATA[An increasingly popular technique among websites and in particular, blogs, is the idea of making URLs search engine friendly, or safe, on the premise that doing so will help search engine optimisation. By removing the obscure query string element of a URL and replacing it with keyword rich alternatives, not only makes it more readable for a human being, but also the venerable robots that allow our page content to be found in the first place.]]></description>
			<content:encoded><![CDATA[<p>An increasingly popular technique among websites and in particular, blogs, is the idea of making <abbr title="Universal Resource Locator">URL</abbr>s search engine friendly, or safe, on the premise that doing so will help search engine optimisation. By removing the obscure query string element of a <abbr title="Universal Resource Locator">URL</abbr> and replacing it with keyword rich alternatives, not only makes it more readable for a human being, but also the venerable robots that allow our page content to be found in the first place.</p>
<p>For example, the following is WordPress&#8217; default URL configuration for a post:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://www.domain.com/?p=1635</pre></div></div>

<p>However, buy using a URL-rewriting available in the Apache webserver, we can achieve a far better result, such as the following:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://www.domain.com/search-engine-safe-urls</pre></div></div>

<p>NB. It is also possible to achieve a similar result with an <abbr title="Internet Server Application Programming Interface">ISAPI</abbr> rewrite for Microsoft&#8217;s <abbr title="Internet Information Server">IIS</abbr> webserver, but this topic will not be included in this post.</p>
<p>To get your website working with <abbr title="search engine safe">SES</abbr> <abbr title="Universal Resource Locator">URL</abbr>s you need to enable both the <code>mod_rewite</code> module and <code>AllowOverride</code> directive in the Apache configuration file.</p>
<p>Uncomment (remove #) from the following to enable the re-write rule:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">LoadModule rewrite_module modules/mod_rewrite.so</pre></div></div>

<p>Change the <code>AllowOverride</code> directive from none to all</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">&lt;directory /&gt;
    Options FollowSymLinks
    AllowOverride all
    Order deny,allow
    Deny from all
&lt;/directory&gt;
&nbsp;
&lt;directory &quot;C:/WebRoot&quot;&gt;
    # Possible values for the Options directive are &quot;None&quot;, &quot;All&quot;,
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that &quot;MultiViews&quot; must be named *explicitly* --- &quot;Options All&quot;
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks
&nbsp;
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be &quot;All&quot;, &quot;None&quot;, or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All
&nbsp;
    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all
&lt;/directory&gt;</pre></div></div>

<p>On Apache webservers, <code>.htaccess</code> (hypertext access) is the default name of directory-level configuration files. An <code>.htaccess</code> file is placed in a particular directory, and the directives in the <code>.htaccess</code> file apply to that directory, and all its subdirectories. It provides the ability to customize configuration for requests to the particular directory. In our case, enabling search engine safe (<abbr title="search engine safe">SES</abbr>) <abbr title="Universal Resource Locator">URL</abbr>s.</p>
<p>By setting the <code>AllowOverride</code> directive to <q>All</q> in effect defers configuration settings to the <code>.htaccess</code> file.</p>
<p>An example <code>.htaccess</code> file could include the following code to rewrite the URLs:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]</pre></div></div>

<p>Search engine friendly <abbr title="Universal Resource Locator">URL</abbr>s are implemented with Rewrite engines. The rewrite engine modifies the <abbr title="Universal Resource Locator">URL</abbr> based upon a number of rewrite conditions and rules.</p>
<p>The <code>RewriteBase</code> directive explicitly sets the base <abbr title="Universal Resource Locator">URL</abbr> for per-directory rewrites. The <code>RewriteCond</code> directive defines a rule condition, so in this case handling missing files or directories. Finally, the <code>RewriteRule</code> directive is the real rewriting workhorse. In this example, we&#8217;re getting everything in the <abbr title="Uniform Resource Identifier">URI</abbr> &#8212; i.e. not including the protocol (HTTP/S) and domain name &#8212; based upon a regular expression. This is then appended to the default file reference &#8212; index.php &#8212; as a <a href="http://www.regular-expressions.info/brackets.html" title="Regular Expression: back references" target="_blank" rel="nofollow">back reference</a>. The <code>[L,QSA]</code> refers to the rule being the last rule and append any query string parameters to the default file. It is important to note that this is all done on the server side, the user will never see the website address changing in the browser&#8217;s address bar. Furthermore, simply transposing the index.php filename with your default file name &#8212; e.g. index.cfm, default.aspx &#8212; will have the same result. Indeed, the above rewrite rules are becoming a de-facto standard for web applications.</p>
<p>To fully understand <code>mod_rewrite</code> rules above, look at the <a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html" title="Apache mod_rewrite documentation" target="_blank" rel="nofollow">Apache mod_rewrite documentation</a>.</p>
<p>Once you have your <abbr title="Search Engine Safe">SES</abbr> functionality in place on the webserver, it is then the responsibility of your application framework to understand the <abbr title="Universal Resource Locator">URL</abbr> construction and handle it accordingly. Fortunately, frameworks such as <a href="http://www.coldboxframework.com" title="ColdBox Framework" target="_blank" rel="nofollow">ColdBox</a> and <a href="http://www.fusebox.org" title="Fusebox Framework" target="_blank" rel="nofollow" >Fusebox</a> for ColdFusion, <a href="http://framework.zend.com" title="Zend PHP framework" target="_blank" rel="nofollow">Zend</a> and <a href="http://www.symfony-project.com" title="Symfony PHP fraemwork" target="_blank" rel="nofollow">Symfony</a> for <abbr title="PHP Hypertext Precursor">PHP</abbr>, all contain functionality to do this, but that is the subject of an entirely different post.</p>
<p>Users of web applications prefer short, neat <abbr title="Universal Resource Locator">URL</abbr>s to raw query string parameters. A concise <abbr title="Universal Resource Locator">URL</abbr> is easy to remember, and less time-consuming to type in. If the <abbr title="Universal Resource Locator">URL</abbr> can be made to relate clearly to the content of the page, then errors are not only less likely to happen, but our good friends the search engine robots are able to draw a stronger assumption of the pages&#8217; relevance and content.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/enabling-search-engine-safe-urls-with-apache-and-htaccess/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ColdFusion Is Hotting Up in the UK</title>
		<link>http://www.simonwhatley.co.uk/coldfusion-is-hotting-up-in-the-uk</link>
		<comments>http://www.simonwhatley.co.uk/coldfusion-is-hotting-up-in-the-uk#comments</comments>
		<pubDate>Fri, 27 Jun 2008 11:56:10 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[Adobe MAX]]></category>
		<category><![CDATA[Aral Balkan]]></category>
		<category><![CDATA[BlueDragon]]></category>
		<category><![CDATA[Brighton]]></category>
		<category><![CDATA[cf.Objective]]></category>
		<category><![CDATA[CFUnited]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Coldspring]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[Edinburgh]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Fusebox]]></category>
		<category><![CDATA[Hal Helms]]></category>
		<category><![CDATA[London]]></category>
		<category><![CDATA[Mach-II]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Model-Glue]]></category>
		<category><![CDATA[Peter Bell]]></category>
		<category><![CDATA[Peter Elst]]></category>
		<category><![CDATA[Railo]]></category>
		<category><![CDATA[Scotch on the Rocks]]></category>
		<category><![CDATA[Sean Corfield]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Simon Bailey]]></category>
		<category><![CDATA[Spry]]></category>
		<category><![CDATA[technology-agnostic topics]]></category>
		<category><![CDATA[united kingdom]]></category>
		<category><![CDATA[United States]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=588</guid>
		<description><![CDATA[In the past, the US has held a near monopoly not only in ColdFusion-based user groups, but also conferences, with CFUnited, cf.Objective() and the more general Adobe MAX leading the way.]]></description>
			<content:encoded><![CDATA[<p>In the past, the <abbr title="United States">US</abbr> has held a near monopoly not only in ColdFusion-based user groups, but also conferences, with <a href="http://cfunited.com/" title="CFUnited" rel="nofollow">CFUnited</a>, <a href="http://www.cfobjective.com/" title="cf.Objective()" rel="nofollow">cf.Objective()</a> and the more general <a href="http://max.adobe.com/" title="Adobe MAX">Adobe MAX</a> leading the way.</p>
<p>But the landscape is changing and the <abbr title="United Kingdom">UK</abbr> is challenging for its share of the scene. 2008 is seeing a renaissance in the ColdFusion world following on from the buzz created around the release of ColdFusion 8 in 2007 and the eagerly anticipated future release of ColdFusion, codenamed Centaur. This buzz has resulted in not one but three conferences for 2008: <a href="http://europe.cfunited.com/" title="CFUnited Europe" rel="nofollow">CFUnited Europe</a> was held in London in March, <a href="http://www.scotch-on-the-rocks.co.uk/" title="Scotch-on-the-Rocks" rel="nofollow">Scotch-on-the-Rocks</a> was held in Edinburgh in June and soon we will see the return of <a href="http://www.cfdevcon.com/" title="CFDevCon" rel="nofollow">CFDevCon</a>.</p>
<p>The inaugural CFDevCon one-day-conference was held back in 2006, in Croydon, but in September 2008 it is heading down to what is arguably one of the creative capitals in the south of England, <a href="http://maps.google.co.uk/maps?f=q&#038;hl=en&#038;geocode=&#038;q=Brighton,+UK&#038;ie=UTF8&#038;ll=50.9342,0.054932&#038;spn=2.271057,4.812012&#038;z=8" title="Google Maps - Brighton" rel="nofollow">Brighton</a>. The conference has not only become a two-day conference, but its scope has moved beyond simply Adobe-based products, with the introduction of Microsoft-based technologies, specifically <abbr title="Internet Information Server">IIS</abbr>7.0, Silverlight and <abbr="Structured Query Language">SQL</abbr> Server 2008 and technology-agnostic topics such as Regular Expressions, Search Engine Optimisation (<abbr title="Search Engine Optimisation">SEO</abbr>) and Accessibility.</p>
<p>As with all <a href="http://www.scotch-on-the-rocks.co.uk/" title="Scotch-on-the-Rocks" rel="nofollow">great conferences</a>, CFDevCon has a great line-up of speakers with the likes of Sean Corfield, Hal Helms, Peter Elst, Peter Bell, Aral Balkan and Simon Bailey, to name a few, all presenting sessions.</p>
<p>So, lets get excited people, support the conferences and <a href="http://www.adobe.com/cfusion/usergroups/search_results.cfm?findType=2&#038;loc=en_us&#038;country_id=9259BCE3-668D-4A21-BB8751DC0E2A45B3" title="UK Adobe User Groups" rel="nofollow">user groups</a> and evangelise ColdFusion.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/coldfusion-is-hotting-up-in-the-uk/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fusebox 5 Custom Dump and Abort Verbs</title>
		<link>http://www.simonwhatley.co.uk/fusebox-5-custom-dump-and-abort-verbs</link>
		<comments>http://www.simonwhatley.co.uk/fusebox-5-custom-dump-and-abort-verbs#comments</comments>
		<pubDate>Mon, 09 Jul 2007 12:59:53 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[abort]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[custom verbs]]></category>
		<category><![CDATA[dump]]></category>
		<category><![CDATA[Fusebox]]></category>
		<category><![CDATA[Iain Turbitt]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=307</guid>
		<description><![CDATA[I have been developing with Fusebox with ColdFusion for a long time now and recently I moved to version 5 (when I say recently, on closer reflection I started using 5 shortly after it was released in July 2006...wow its been that long!). A common feature that was found to be lacking was the dump and abort features, so useful in debugging applications.]]></description>
			<content:encoded><![CDATA[<p>I have been developing with <a href="http://www.fusebox.org" title="Fusebox Homepage" target="_blank" rel="nofollow">Fusebox</a> with <a href="http://www.adobe.com/products/coldfusion/" title="Adobe ColdFusion" target="_blank" rel="nofollow">ColdFusion</a> for a long time now and recently I moved to version 5 (when I say recently, on closer reflection I started using 5 shortly after it was released in July 2006&#8230;wow its been that long!). A common feature that was found to be lacking was the dump and abort features, so useful in debugging applications.</p>
<p>Fortunately for me, a colleague, Iain Turbitt, decided to spend an evening after work developing two custom verbs to implement these two ColdFusion tags within the Fusebox framework.  You can grab the two files by clicking on the following link:</p>
<p><a href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2007/07/dump_abort.zip" title="Fusebox 5 Custom Dump and Abort Verbs">Download Fusebox 5 Custom Dump and Abort Verbs</a></p>
<p>The Dump verb behaviour is similar to the &lt;cfdump&gt; tag: &lt;dump var =&#8221;"/&gt; but includes an optional abort attribute e.g.:</p>
<p>&lt;dump var=&#8221;" abort =&#8221;true|false&#8221;/&gt;.</p>
<p>The Abort verb behaves as per the &lt;cfabort&gt; tag, i.e. &lt;abort/&gt;.</p>
<p style="text-align: center"><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/fusebox-5-custom-dump-and-abort-verbs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion Frameworks</title>
		<link>http://www.simonwhatley.co.uk/coldfusion-frameworks</link>
		<comments>http://www.simonwhatley.co.uk/coldfusion-frameworks#comments</comments>
		<pubDate>Wed, 22 Feb 2006 11:15:42 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Ben Edwards]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion application server]]></category>
		<category><![CDATA[Coldspring]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Fusebox]]></category>
		<category><![CDATA[Hal Helms]]></category>
		<category><![CDATA[Mach-II]]></category>
		<category><![CDATA[Model-Glue]]></category>
		<category><![CDATA[model-view-controller]]></category>
		<category><![CDATA[New Brunswick]]></category>
		<category><![CDATA[onTap]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[public services]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Tartan]]></category>
		<category><![CDATA[TheHUB]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[web-application framework]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=27</guid>
		<description><![CDATA[With the introduction of ColdFusion MX, the ColdFusion community is maturing. Most CF developers have moved beyond spaghetti code and the mixing of business logic with presentation code. But it can be difficult and wasteful to "re-invent the wheel" for every application you write. Frameworks can help promote good development practices, standards, and a sound foundation for creating an application.]]></description>
			<content:encoded><![CDATA[<p>With the introduction of ColdFusion MX, the ColdFusion community is maturing. Most <abbr title="ColdFusion">CF</abbr> developers have moved beyond spaghetti code and the mixing of business logic with presentation code. But it can be difficult and wasteful to &#8220;re-invent the wheel&#8221; for every application you write.</p>
<p>Frameworks can help promote good development practices, standards, and a sound foundation for creating an application.</p>
<p>In this article I list a number of these frameworks, but I will leave you to compare them, and decide which you may want to adopt.</p>
<h3>Fusebox</h3>
<p><em>An Historically Strong Framework</em></p>
<p>Fusebox is a popular framework for building ColdFusion and PHP web applications. &#8220;Fuseboxers&#8221; find that the framework releases them from much of the drudgery of writing applications and enables them to focus their efforts on creating great, customer-focused software.</p>
<p>Fusebox provides a small set of &#8216;core&#8217; files and large amount of structure which is helpful to developers. It emphasizes separation of presentation from logic and uses a readily understandable vocabulary for modeling websites, namely circuits, fuses and switches.</p>
<p><a title="Fusebox Application Framework" href="http://www.fusebox.org" target="_blank" rel="nofollow">http://www.fusebox.org</a></p>
<h3>Mach-II</h3>
<p>Mach II is a web-application framework developed by <a title="Hal Helm's personal site" href="http://www.halhelms.com">Hal Helms</a> and Ben Edwards that evolved out of a desire to create a framework that specifically addressed maintenance issues using an <abbr title="Object Orientated">OO</abbr> style. Mach II is based on an Implicit Invocation Architecture and directly supports the <abbr title="Model-View-Controller">MVC</abbr> design pattern.</p>
<p><a title="Mach-II Application Framework" href="http://www.mach-ii.com" target="_blank" rel="nofollow">http://www.mach-ii.com</a></p>
<h3>Model-Glue</h3>
<p>Model-Glue helps you build Object-Oriented ColdFusion applications based on the Model View Controller pattern. It&#8217;s designed to be easy to use and play well with others, like <a title="Tartan Framework" href="http://www.tartanframework.org">Tartan</a>.</p>
<p><a title="Model-Glue Framework" href="http://www.model-glue.com" target="_blank" rel="nofollow">http://www.model-glue.com</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>onTap</h3>
<p>The onTap framework is an Open Source Framework for quickly developing powerful web applications using Adobe&#8217;s <a title="Adobe (Macromedia) ColdFusion" href="http://www.macromedia.com/software/coldfusion/">ColdFusion application server</a>. The framework itself bears a marked resemblance to the recently buzzy <a title="Ruby on Rails - open source web framework" href="http://www.rubyonrails.org/">Ruby on Rails</a>.</p>
<p><a title="onTap Framework" href="http://www.fusiontap.com/" target="_blank" rel="nofollow">http://www.fusiontap.com</a></p>
<h3>TheHUB</h3>
<p>TheHUB, like other application development frameworks, utilizes the notion of a central hub template that all requests for the application pass through. That cental hub is the point or place within the application that the processing of all code hinges upon. The code simply checks for a query string and then reads the parameters passed to handle template loading and screen rendering.</p>
<p><a title="TheHub Framework" href="http://www.codesweeper.com" target="_blank" rel="nofollow">http://www.codesweeper.com</a></p>
<h3>Tartan</h3>
<p>Tartan is a command-driven service framework for ColdFusion. It was built to help produce the service layer within a larger application architecture which relies on strict separation or layering of functionality.</p>
<p>All access to the underlying business logic is controlled by public services which are available locally as <abbr title="ColdFusion Components">CFCs</abbr> and remotly via Flash Remoting and <abbr title="Simple Object Access Protocol">SOAP</abbr> web services. A service can be composed of any number of commands, each of which implements a discreet operation within the application. These contain the core logic for the application. Commands can communicate with databases via <abbr title="Data Access Objects">DAOs</abbr>, manipulate values received from the client, execute other commands and even communicate with services available on other remote servers.</p>
<p>At the center of Tartan are 6 Core classes : LocalServiceProxy, LocalService, Command, <abbr title="Data Access Object">DAO</abbr>, ValueObject and ExceptionHandler. They provide most of the functionality of the framework, and must be extended by the application developer.</p>
<p><a title="Tartan Framework" href="http://www.tartanframework.org" target="_blank" rel="nofollow">http://www.tartanframework.org</a></p>
<h3>ColdSpring</h3>
<p>ColdSpring is a framework for <abbr title="ColdFusion Components">CFCs</abbr> (ColdFusion Components).</p>
<p>ColdSpring&#8217;s core focus is to make the configuration and dependencies of your <abbr title="ColdFusion Components">CFCs</abbr> easier to manage. ColdSpring uses the &#8220;inversion-of-control&#8221; pattern to &#8220;wire&#8221; your <abbr title="ColdFusion Components">CFCs</abbr> together. Inversion-of-control provides many advantages over traditional approaches to assembling your application&#8217;s model. Also part of ColdSpring is the first Aspect-Oriented-Programming (AOP) framework for <abbr title="ColdFusion Components">CFCs</abbr>.</p>
<p><a title="ColdSpring Application Framework" href="http://www.coldspringframework.org" target="_blank" rel="nofollow">http://www.coldspringframework.org</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><em><strong>UPDATE:</strong> Since creating this blog post many years ago, two more frameworks have been released that require an honourable mention.</em></p>
<h3>ColdBox</h3>
<p><em>My New Framework of Choice</em></p>
<p>ColdBox is an event-driven conventions based ColdFusion Framework. It provides you with a set of reusable code and tools that you can use to increase your productivity, and it provides you with a development standard when working in a team environment. It makes use of an <abbr title="Model View Controller">MVC</abbr> (Model View Controller) design pattern and an extensive array of patterns for its operations such as Factories, Helpers, Workers, etc. And since it is based on <abbr title="ColdFusion Components">CFCs</abbr> it does not rely on an <abbr title="eXtensible Markup Language">XML</abbr> dialect.</p>
<p>NB. ColdBox also takes advantage of ColdSpring or Lightwire.</p>
<p><a href="http://www.coldboxframework.com" title="The ColdBox Framework" target="_blank" rel="nofollow">http://www.coldboxframework.com</a></p>
<h3>Lightwire</h3>
<p>Lightwire is a very lightweight Direct Injection (<abbr title="Direct Injection">DI</abbr>)/Inversion of Control (<abbr title="Inversion of Control">IoC</abbr>) engine for directly injecting dependencies into singletons and transient business object. The framework is optimised to create transient objects as well as singletons and allows for programmatic as well as <abbr title="eXtensible Markup Language">XML</abbr> configuration. It is the lightweight framework for people who&#8217;d like to put more logic in their beans and less in their service layer.</p>
<p><a href="http://lightwire.riaforge.org" title="Lightwire" target="_blank" rel="nofollow">http://lightwire.riaforge.org</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/coldfusion-frameworks/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fusedocs</title>
		<link>http://www.simonwhatley.co.uk/fusedocs</link>
		<comments>http://www.simonwhatley.co.uk/fusedocs#comments</comments>
		<pubDate>Sat, 19 Nov 2005 15:08:35 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Fusebox]]></category>
		<category><![CDATA[Fusedocs]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[web team]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=12</guid>
		<description><![CDATA[The Fusedoc is a standardized way of documenting our code so that all members of the web team can more quickly and efficiently create and maintain ColdFusion templates.]]></description>
			<content:encoded><![CDATA[<p>The <a rel="nofollow" href="http://www.fusedoc.org">Fusedoc</a> is a standardized way of documenting our code so that all members of the web team can more quickly and efficiently create and maintain ColdFusion templates. To see some examples of how it can be used and tools used to parse the information go to <a rel="nofollow" title="GrokFuseBox" href="http://www.grokfusebox.com">GrokFuseBox</a>.</p>
<p>This <a id="p151" title="Fusedocs" href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2006/11/fusedocs.zip">Fusedocs</a> file contains the Fusedoc <acronym title="Document Type Definition">DTD</acronym>, an example ColdFusion page and documentation on the Fusedoc methodology.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/fusedocs/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fusebox and Fusedoc Toolsets</title>
		<link>http://www.simonwhatley.co.uk/fusebox-and-fusedoc-toolsets</link>
		<comments>http://www.simonwhatley.co.uk/fusebox-and-fusedoc-toolsets#comments</comments>
		<pubDate>Thu, 20 Oct 2005 17:24:40 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Fusebox]]></category>
		<category><![CDATA[Fusedocs]]></category>
		<category><![CDATA[HomeSite+/ColdFusion Studio]]></category>
		<category><![CDATA[Sandra Clark]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=14</guid>
		<description><![CDATA[Sandra Clark has developed toolsets for both Fusebox 4 and Fusedocs.]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow" href="http://www.shayna.com/">Sandra Clark</a> has developed toolsets for both <a rel="nofollow" href="http://www.fusebox.org/">Fusebox</a> 4 and <a rel="nofollow" href="http://www.fusedoc.org/">Fusedocs</a>. The licensing model follows that of Fusebox. Both toolsets are available for HomeSite+/ColdFusion Studio 5 and for Dreamweaver MX.</p>
<p>Check out her website at <a rel="nofollow" href="http://www.shayna.com/">http://www.shayna.com</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/fusebox-and-fusedoc-toolsets/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fusedoc DTD</title>
		<link>http://www.simonwhatley.co.uk/fusedoc-dtd</link>
		<comments>http://www.simonwhatley.co.uk/fusedoc-dtd#comments</comments>
		<pubDate>Wed, 19 Oct 2005 15:24:46 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[DTD]]></category>
		<category><![CDATA[Fusebox]]></category>
		<category><![CDATA[Fusedocs]]></category>
		<category><![CDATA[Hal Helms]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=15</guid>
		<description><![CDATA[Hal Helms has provided a copy of the Fusedoc DTD.]]></description>
			<content:encoded><![CDATA[<p>Hal Helms has provided a copy of the Fusedoc <acronym title="Document Type Definition">DTD</acronym>. It can be downloaded at the following location:</p>
<p><a rel="nofollow" href="http://www.halhelms.com/code/resources/Fusedoc.zip">http://www.halhelms.com/code/resources/Fusedoc.zip</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/fusedoc-dtd/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fusebox &#8211; Web Application Framework</title>
		<link>http://www.simonwhatley.co.uk/fusebox-web-application-framework</link>
		<comments>http://www.simonwhatley.co.uk/fusebox-web-application-framework#comments</comments>
		<pubDate>Wed, 19 Oct 2005 14:59:53 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Fusebox]]></category>
		<category><![CDATA[Fusebox application architect]]></category>
		<category><![CDATA[Fusebox architect]]></category>
		<category><![CDATA[good manager]]></category>
		<category><![CDATA[machinery]]></category>
		<category><![CDATA[Magicbox (FLIP) Twin 1-Line Cordless Phone]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sean Corfield]]></category>
		<category><![CDATA[Server Side]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[web framework]]></category>
		<category><![CDATA[web-based application frameworks]]></category>
		<category><![CDATA[Web-based applications]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=7</guid>
		<description><![CDATA[Application developers face a daunting task: they must translate the often fuzzily-defined requirements for a new application into the rigid language of computers.]]></description>
			<content:encoded><![CDATA[<p>Application developers face a daunting task: they must translate the often fuzzily-defined requirements for a new application into the rigid language of computers. While the Fusebox Lifecycle Process (<acronym title="Fusebox Lifecycle Process">FLiP</acronym>) offers help in managing the project management aspects of creating a new application, what help is there available to developers approaching the technical challenges of creating and maintaining applications?</p>
<p>Application frameworks answer this question, offering pre-built (and pre-tested) code &#8212; a collection of services that can provide the architectural underpinnings for a particular type of application. Web-based applications are increasingly the choice for new application development in which the browser becomes the &#8220;universal client&#8221;. As web development matures, web-based application frameworks allow the developer to concentrate more on meeting the business needs of the application and less on the &#8220;plumbing&#8221; needed to make that application work.</p>
<p>Fusebox is, by far, the most popular and mature web framework available for ColdFusion and PHP developers. The architecture of a Fusebox application is divided into various sections (&#8220;circuits&#8221; in Fusebox parlance), each of which has a particular focus. For example, the responsiblity for ensuring that only authorized users have access to all or part of the application might fall under a Security circuit.</p>
<p>The Fusebox application architect defines these circuits, as well as the individual actions (&#8220;fuseactions&#8221;) that may be requested of it. When a fuseaction request is made of the application, the Fusebox machinery (the &#8220;Fusebox&#8221;) routes the request to the appropriate circuit, where the fuseaction is processed. This idea of encapsulation of responsibilities makes it easy for different functional circuits to be &#8220;plugged&#8221; into an application, making it possible to reuse code.</p>
<p>Within the individual circuit responsible for carrying out the requested fuseaction, the Fusebox architect specifies the individual files (&#8220;fuses&#8221;) needed to fulfill the fuseaction request. Thus, the Fusebox acts like a good manager, delegating tasks to appropriate departments where it is decomposed into individual tasks, each of which can be assigned to individuals to carry out.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/fusebox-web-application-framework/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

