<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

			<channel>
			<title>Ben Forta's Blog</title>
			<link>http://forta.com/blog/index.cfm</link>
			<description>ColdFusion, Flex, Java, Mobile and Wireless, and whatever else tickles my fancy.</description>
			<language>en-us</language>
			<pubDate>Sat, 04 Jul 2009 06:56:45 -0400</pubDate>
			<lastBuildDate>Thu, 02 Jul 2009 21:16:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>ben@forta.com</managingEditor>
			<webMaster>ben@forta.com</webMaster>
			<itunes:subtitle />
			<itunes:summary />
			<itunes:category text="Technology" />
			<itunes:category text="Technology">
				<itunes:category text="Podcasting" />
			</itunes:category>
			<itunes:category text="Technology">
				<itunes:category text="Tech News" />
			</itunes:category>
			<itunes:keywords />
			<itunes:author />
			<itunes:owner>
				<itunes:email>ben@forta.com</itunes:email>
				<itunes:name />
			</itunes:owner>
			<itunes:image href="" />
			<image>
				<url />
				<title>Ben Forta's Blog</title>
				<link>http://forta.com/blog/index.cfm</link>
			</image>
			<itunes:explicit>no</itunes:explicit>
			
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/BenForta" type="application/rss+xml" /><feedburner:emailServiceId>BenForta</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
				<title>First Bangalore ColdFusion Usergroup</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/s4bzxOm-Xic/First-Bangalore-ColdFusion-Usergroup</link>
				<description>The inaugural meeting of the newly formed Bangalore ColdFusion Usergroup will take place July 09, 2009, at the Adobe Bangalore office. ColdFusion engineering team members will present ColdFusion Centaur and Bolt. &lt;a href="http://bangalorecfug.eventbrite.com/"&gt;Details posted online&lt;/a&gt;.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/s4bzxOm-Xic" height="1" width="1"/&gt;</description>
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 02 Jul 2009 21:16:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/7/2/First-Bangalore-ColdFusion-Usergroup</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/7/2/First-Bangalore-ColdFusion-Usergroup</feedburner:origLink></item>
			
			<item>
				<title>ColdFusion Positions In Iraq, KS, and MA</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/QjD1gsmLrQY/ColdFusion-Positions-In-Iraq-KS-and-MA</link>
				<description>Three ColdFusion positions this week, including one in Iraq:
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.vykincorp.com/"&gt;Vykin Corporation&lt;/a&gt; (company based in Florida, but position is in Iraq) is looking for a ColdFusion and Flex developer with secret security clearances for the US Department of Defense in Iraq. Requirements include ColdFusion and/or Flex certification. &lt;a href="http://www.clearancejobs.com/index.php?action=view_job&amp;jobID=1188278"&gt;Details posted online&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Unnamed client (KS) is looking for a ColdFusion developer for a contract to permanent position. ColdFusion 8 experience required, as is experience with Flash. Contact &lt;a href="mailto:melissa@paigetech.com"&gt;Melissa Kelly-Foxhoven&lt;/a&gt; at recruiter PAiGE Technologies, LLC.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.nxstage.com/"&gt;NxStage Medical, Inc.&lt;/a&gt; (Lawrence, MA) is looking for a ColdFusion developer. Requirements include knowledge of HTML, CSS, JavaScript, XML, and SQL, and a solid understanding of procedural and object-oriented code. Familiarity with framework-driven development environments, and Flash development, a plus. Contact &lt;a href="mailto:itjobs@nxstage.com"&gt;Duane Dumont&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/QjD1gsmLrQY" height="1" width="1"/&gt;</description>
				
				<category>Jobs</category>				
				
				<pubDate>Fri, 26 Jun 2009 13:30:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/26/ColdFusion-Positions-In-Iraq-KS-and-MA</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/26/ColdFusion-Positions-In-Iraq-KS-and-MA</feedburner:origLink></item>
			
			<item>
				<title>Toronto Wraps My Usergroup Presentations</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/1dwk9aOcg2I/Toronto-Wraps-My-Usergroup-Presentations</link>
				<description>Last night I presented ColdFusion, Flex, and more to a joint meeting of the local Flex and ColdFusion groups. The group took a little while to warm up, but then really got going. The session ran over 2 hours and was highly interactive.

Big winners were spreadsheet integration, ORM, Bolt extensions, and the data connectivity in Flash Builder 4. We also got into a lively and heated tangent conversation about the AS3 server proof-of-concept shown during the MAX sneaks last year (the crowd was lobbying heavily to turn this into a product).

Last night wrapped my scheduled usergroups presentations, for now.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/1dwk9aOcg2I" height="1" width="1"/&gt;</description>
				
				<category>Flex</category>				
				
				<category>Flash</category>				
				
				<category>ColdFusion</category>				
				
				<category>Appearances</category>				
				
				<pubDate>Fri, 26 Jun 2009 10:22:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/26/Toronto-Wraps-My-Usergroup-Presentations</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/26/Toronto-Wraps-My-Usergroup-Presentations</feedburner:origLink></item>
			
			<item>
				<title>Presenting At Usergroup In Toronto Tonight</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/9btIIY1Fqxc/Presenting-At-Usergroup-In-Toronto-Tonight</link>
				<description>I am on my way to Toronto for tonight's usergroup presentation on ColdFusion and Flex. &lt;a href="http://www.torontoflex.org/torontoflex/index.html"&gt;Details posted online&lt;/a&gt;.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/9btIIY1Fqxc" height="1" width="1"/&gt;</description>
				
				<category>Flex</category>				
				
				<category>Flash</category>				
				
				<category>ColdFusion</category>				
				
				<category>Appearances</category>				
				
				<pubDate>Thu, 25 Jun 2009 10:42:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/25/Presenting-At-Usergroup-In-Toronto-Tonight</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/25/Presenting-At-Usergroup-In-Toronto-Tonight</feedburner:origLink></item>
			
			<item>
				<title>Check Out tBlurb.com</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/phVDaY6SBgM/Check-Out-tBlurbcom</link>
				<description>Fellow Adobe Platform Evangelist (and recent ColdFusion devotee) &lt;a href="http://gregsramblings.com/"&gt;Greg Wilson&lt;/a&gt; has created &lt;a href="http://tblurb.com/"&gt;tBlurb.com&lt;/a&gt;, an app that lets you enter code and get a short URL to it for sharing (you can choose your own or let it pick it for you). The app features a rich text editor, and supports ActionScript, C++, C#, ColdFusion, CSS, Delphi, Java, JavaScript, PHP, Python, Ruby, SQL, VB.NET and XML/HTML. And Greg built it all in ColdFusion!&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/phVDaY6SBgM" height="1" width="1"/&gt;</description>
				
				<category>ColdFusion</category>				
				
				<pubDate>Tue, 23 Jun 2009 18:02:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/23/Check-Out-tBlurbcom</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/23/Check-Out-tBlurbcom</feedburner:origLink></item>
			
			<item>
				<title>Presenting Tonight At Usergroup In San Francisco</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/_3C_x3-lsmc/Presenting-Tonight-At-Usergroup-In-San-Francisco</link>
				<description>I am in San Francisco for a few days of meetings, video shoots, and more (almost all &lt;a href="http://max.adobe.com/"&gt;MAX 2009&lt;/a&gt; related). But tonight I'll get to do what I really enjoy doing, presenting to our usergroups. I'll be presenting ColdFusion and Flash Builder futures to the BACFUG group this evening at 6:30pm in the Adobe San Francisco office (601 Townsend). &lt;a href="http://groups.adobe.com/posts/1792afd95c"&gt;Details posted online&lt;/a&gt;.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/_3C_x3-lsmc" height="1" width="1"/&gt;</description>
				
				<category>Flex</category>				
				
				<category>Flash</category>				
				
				<category>ColdFusion</category>				
				
				<category>Appearances</category>				
				
				<pubDate>Tue, 23 Jun 2009 10:19:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/23/Presenting-Tonight-At-Usergroup-In-San-Francisco</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/23/Presenting-Tonight-At-Usergroup-In-San-Francisco</feedburner:origLink></item>
			
			<item>
				<title>More On ColdFusion And Spreadsheets</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/j4oQbnVunC8/More-On-ColdFusion-And-Spreadsheets</link>
				<description>Last week I &lt;a href="http://forta.com/blog/index.cfm/2009/6/18/Working-With-Spreadsheets-In-ColdFusion"&gt;posted an entry&lt;/a&gt; on the spreadsheet support planned for &lt;a href="http://labs.adobe.com/wiki/index.php/Centaur"&gt;ColdFusion Centaur&lt;/a&gt;. That post (unsurprisingly) generated lots of questions and comments, and so I thought it worthwhile to post a bigger and more sophisticated example, this time building a new spreadsheet from scratch.

We'll start with a simple Application.cfc to define the datasource needed for this app:

&lt;code&gt;&lt;cfcomponent&gt;
	&lt;cfset this.datasource="cfartgallery"&gt;
&lt;/cfcomponent&gt;&lt;/code&gt;

Now to create a spreadsheet using a database query:

&lt;code&gt;&lt;!--- Get data ---&gt;
&lt;cfquery name="ArtOrders"&gt;
SELECT orderid, customerfirstname, customerlastname, total
FROM orders
ORDER BY orderid
&lt;/cfquery&gt;

&lt;!--- Save it ---&gt;
&lt;cfspreadsheet action="write"
	query="ArtOrders"
	filename="Orders.xls"
	overwrite="true"&gt;&lt;/code&gt;

That's all it takes. &amp;lt;cfspreadsheet&amp;gt; creates a spreadsheet populated with the retrieved data, using the query column names as column headers in the first spreadsheet row, and the data starting in the second row. Nice, huh?

But what if you want more control? What if you want to explicitly control data placement? What if you needed to provide row or column or cell level formatting? And what if you needed a total cell containing a formula to SUM the total column?

Here's a complete example:

&lt;code&gt;&lt;!--- Get data ---&gt;
&lt;cfquery name="ArtOrders"&gt;
SELECT orderid, customerfirstname, customerlastname, total
FROM orders
ORDER BY orderid
&lt;/cfquery&gt;

&lt;!--- Create new spreadsheet ---&gt;
&lt;cfset sObj=SpreadsheetNew()&gt;

&lt;!--- Create header row ---&gt;
&lt;cfset SpreadsheetAddRow(sObj, "Order,First Name,Last Name,Amount")&gt;
&lt;cfset SpreadsheetFormatRow(sObj, {bold=TRUE, alignment="center"}, 1)&gt;

&lt;!--- Add orders from query ---&gt;
&lt;cfset SpreadsheetAddRows(sObj, ArtOrders)&gt;

&lt;!--- Figure out row for formula, 2 after data ---&gt;
&lt;cfset rowDataStart=2&gt;
&lt;cfset rowDataEnd=ArtOrders.recordCount+1&gt;
&lt;cfset rowTotal=rowDataEnd+2&gt;
&lt;cfset totalFormula="SUM(D#rowDataStart#:D#rowDataEnd#)"&gt;

&lt;!--- Add total formula ---&gt;
&lt;cfset SpreadsheetSetCellValue(sObj, "TOTAL:", rowTotal, 3)&gt;
&lt;cfset spreadsheetSetCellFormula(sObj, totalFormula, rowTotal, 4)&gt;

&lt;!--- Format amount column as currency ---&gt;	
&lt;cfset SpreadsheetFormatColumn(sObj, {dataformat="$00000.00"}, 4)&gt;

&lt;!--- Save it ---&gt;
&lt;cfspreadsheet action="write"
	name="sObj"
	filename="Orders.xls"
	overwrite="true"&gt;&lt;/code&gt;

Once again, we start with a database query. Then, SpreadsheetNew() is used to create a new spreadsheet object.

The code then creates the header row. SpreadsheetAddRow() is used to add a specific row, the column headers (as no row number was specified, SpreadsheetAddRow() adds the row to the next free row, the first). SpreadsheetFormatObject() is then used to format row 1, this function accepts a structure (which here is implicitly created inline).

Next comes the data. SpreadsheetAddRows() adds the entire query to the spreadsheet (again, as no row was specified the data gets added to the next free row).

Now for the formula which will total all orders. So as to not hard code the row, a few &amp;lt;cfset&amp;gt; statements are used to calculate the first and last data row, and the row for the total (2nd row after the end of the data, so leaving one empty row in between data and total). The formula too can't be hard coded, so instead of SUM(D2:D24), the row variables are used to build the formula string dynamically. SpreadsheetSetCellValue() is used to add a title, and SpreadsheetSetCellFormula() inserts the formula.

Next, the entire fourth column, containing the order amounts and the calculated total, is formatted to display as currency using SpreadsheetFormatColumn().

All that is left to do then is to save the file using &amp;lt;cfspreadsheet&amp;gt;.

&amp;lt;cfspreadsheet&amp;gt; and its 30+ supporting functions can do lots more, but this should give you a taste of just what's possible using this innovative new feature.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/j4oQbnVunC8" height="1" width="1"/&gt;</description>
				
				<category>ColdFusion</category>				
				
				<pubDate>Mon, 22 Jun 2009 17:09:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/22/More-On-ColdFusion-And-Spreadsheets</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/22/More-On-ColdFusion-And-Spreadsheets</feedburner:origLink></item>
			
			<item>
				<title>For Now, Avoid Kindle Version of My RegEx Book</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/wLMV7wpWfQY/For-Now-Avoid-Kindle-Version-of-My-RegEx-Book</link>
				<description>My &lt;a href="http://www.forta.com/books/0672325667/"&gt;Sams Teach Yourself Regular Expressions in 10 Minutes&lt;/a&gt; has proven to be a very popular book, and tens of thousands of developers have used it to get started with Regular Expressions. The book teaches RegEx incrementally, and for each example a block of text is used, and matching text is shaded to clearly demonstrate what the Regular Expression is doing.

&lt;a href="http://www.forta.com/books/0672325667/"&gt;Sams Teach Yourself Regular Expressions in 10 Minutes&lt;/a&gt; has apparently now been released for the &lt;a href="http://www.amazon.com/gp/product/B0015TCML0?ie=UTF8&amp;tag=benfortascoldfus&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B0015TCML0"&gt;Amazon Kindle&lt;/a&gt;. I've not seen the Kindle version yet (as I don't have a Kindle yet), but readers are reporting to me that the Kindle version is missing the shading, making all of the examples rather useless!

I've contacted the publisher about this problem, and hope they'll correct it quickly. But for now, I suggest you avoid the Kindle version of the book, and stick with the print version.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/wLMV7wpWfQY" height="1" width="1"/&gt;</description>
				
				<category>Books</category>				
				
				<category>Regular Expressions</category>				
				
				<pubDate>Mon, 22 Jun 2009 07:12:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/22/For-Now-Avoid-Kindle-Version-of-My-RegEx-Book</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/22/For-Now-Avoid-Kindle-Version-of-My-RegEx-Book</feedburner:origLink></item>
			
			<item>
				<title>Executing Code On Server Startup</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/8scvtuxldZY/Executing-Code-On-Server-Startup</link>
				<description>ColdFusion can execute code when an application starts and ends, when a session starts and ends, when a request starts and ends, and more. But what if you need to execute code when a server starts up? Granted, this is not a common use case, but when needed, we've had to use onApplicationStart for this, probably doing something like:
&lt;code&gt;&lt;cfif not IsDefined("SERVER.myVar")&gt;
...
&lt;/cfif&gt;&lt;/code&gt;

&lt;a href="http://labs.adobe.com/wiki/index.php/Centaur"&gt;ColdFusion Centaur&lt;/a&gt; adds the ability to define code to be executed onServerStart.

By default this is a method named onServerStart in server.cfc. But, actually, it can be in any ColdFusion Component, including an Application.cfc. In ColdFusion Administrator you can point to the CFC and method to be invoked, and ColdFusion will execute the code on server start-up before processing any requests.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/8scvtuxldZY" height="1" width="1"/&gt;</description>
				
				<category>ColdFusion</category>				
				
				<pubDate>Mon, 22 Jun 2009 06:31:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/22/Executing-Code-On-Server-Startup</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/22/Executing-Code-On-Server-Startup</feedburner:origLink></item>
			
			<item>
				<title>The New ColdFusion LOCAL Scope</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/XIyE6JTZ968/The-New-ColdFusion-LOCAL-Scope</link>
				<description>ColdFusion developers have long known to ensure that local variables remain local by using the &amp;quot;var&amp;quot; keyword to define them. Here's an example:
&lt;code&gt;&lt;cffunction name="myFunction"&gt;
	&lt;cfset var mySafeVariable = 1&gt;
	&lt;cfset myUnsafeVariable = 1&gt;
&lt;/cffunction&gt;&lt;/code&gt;

In the above snippet, two variables are created. The first variable uses the var keyword to ensure that the variable is local to the function, and if the same variable name existed elsewhere it won't be overwritten. The second variable does not use var, and as such is not local, and variable conflicts can indeed occur. And so, when creating user defined functions or ColdFusion Component methods, the rule has always been to always prefix local variables with &amp;quot;var&amp;quot;.

But what exactly is a var variable? What scope is it in? And how is it accessed using explicit scope notation? The answers to these questions are somewhat unclear, partially because the local var scope is not used like any other ColdFusion scope which is always designated by using a scope prefix (VARIABLES.myVariable, FORM.myVariable, SESSION.mayVariable, etc.).

&lt;a href="http://labs.adobe.com/wiki/index.php/Centaur"&gt;ColdFusion Centaur&lt;/a&gt; simplifies the use of local scopes (without breaking existing code) by explicitly defining a local scope that it intuitively named LOCAL. Here is the same local variable set above, but using the LOCAL scope instead of var:
&lt;code&gt;&lt;cfset LOCAL.mySafeVariable = 1&gt;&lt;/code&gt;

But what if you do indeed use var? Well, it'll just work. Look at the following two &amp;lt;CFSET&amp;gt; statements:
&lt;code&gt;&lt;cfset local.myVar1=1&gt;
&lt;cfset var myVar1=1&gt;&lt;/code&gt;

Both of these code snippets do the exact same thing. Variables with the var prefix are now automatically defined in the LOCAL scope. So a variable defined as:
&lt;code&gt;&lt;cfset var mySafeVariable = 1&gt;&lt;/code&gt;

can be safely accessed as:

&lt;code&gt;&lt;cfoutput&gt;#LOCAL.mySafeVariable#&lt;/cfoutput&gt;&lt;/code&gt;

It's clean, it's simple, it's intuitive, and it's fully backwards compatible. And yes, if you have a variable named &amp;quot;local&amp;quot; it'll still work, the variable will just become LOCAL.local, and as the LOCAL scope is in the default evaluation chain it'll just work.

Oh, one other change. The &amp;quot;var&amp;quot; keyword used to only be supported at the top of functions and methods, so all local variables had to be defined upfront. This limitation has been removed in ColdFusion Centaur (and I actually have mixed feelings about this, but so be it).&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/XIyE6JTZ968" height="1" width="1"/&gt;</description>
				
				<category>ColdFusion</category>				
				
				<pubDate>Sun, 21 Jun 2009 20:44:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/21/The-New-ColdFusion-LOCAL-Scope</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/21/The-New-ColdFusion-LOCAL-Scope</feedburner:origLink></item>
			
			<item>
				<title>Look, No Datasource</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/P84OXgNt5rs/Look-No-Datasource</link>
				<description>Look at this code snippet. Notice anything odd about it?
&lt;code&gt;&lt;cfquery name="Art"&gt;
SELECT *
FROM art
ORDER BY ArtName
&lt;/cfquery&gt;&lt;/code&gt;

Yep, the &amp;lt;CFQUERY&amp;gt; tag in the above snippet is missing the DATASOURCE attribute. And yet, this code works. Why? Take a look at this Application.cfc file:
&lt;code&gt;&lt;cfcomponent&gt;
	&lt;cfset this.datasource="cfartgallery"&gt;
&lt;/cfcomponent&gt;&lt;/code&gt;

In &lt;a href="http://labs.adobe.com/wiki/index.php/Centaur"&gt;ColdFusion Centaur&lt;/a&gt; you can now specify an application wide default datasource by setting this.datasource in Application.cfc. The specified datasource becomes the default for all &amp;lt;CFQUERY&amp;gt;, &amp;lt;CFSTOREDPROC&amp;gt;, and other tags that expect a datasource to be specified. Of course, datasource can still be specified manually if needed, and a specified datasource will override the application default one.

This is one of those duh! enhancements that just makes sense. And, as I'll explain in an upcoming post, it also has another important purpose.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/P84OXgNt5rs" height="1" width="1"/&gt;</description>
				
				<category>ColdFusion</category>				
				
				<pubDate>Sat, 20 Jun 2009 22:47:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/20/Look-No-Datasource</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/20/Look-No-Datasource</feedburner:origLink></item>
			
			<item>
				<title>ColdFusion Powered Proxyclick Feeds Locals (Including Microsoft Employees) And Wins Awards</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/_Vido26FBeo/ColdFusion-Powered-Proxyclick-Feeds-Locals</link>
				<description>Belgian software company &lt;a href="http://www.proxyclick.be/"&gt;Proxyclick&lt;/a&gt; positions itself as a &amp;quot;life improvement platform&amp;quot;. Their primary application is ColdFusion powered Click'n Lunch and is used by employees at lots of local companies (including Microsoft Belgium) to order lunch and more. And the app just won the &lt;a href="http://www.proxyclick.eu/doc/press/B2B_BeCommerceAward_en.pdf"&gt;B2B BeCommerce Award 2009&lt;/a&gt;.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/_Vido26FBeo" height="1" width="1"/&gt;</description>
				
				<category>Using CF</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 19 Jun 2009 11:23:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/19/ColdFusion-Powered-Proxyclick-Feeds-Locals</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/19/ColdFusion-Powered-Proxyclick-Feeds-Locals</feedburner:origLink></item>
			
			<item>
				<title>ColdFusion Functionality Exposed As Services</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/dDikLWQ32m4/ColdFusion-Functionality-Exposed-As-Services</link>
				<description>Have you ever stopped to think about just how much functionality is baked into ColdFusion? We use &amp;lt;CFQUERY&amp;gt; to work with databases, allowing for highly flexible and dynamic SQL as well as query caching and more, and this is powered by a sophisticated internal engine. We use tags like &amp;lt;CFCHART&amp;gt; and expect charts to be generated and displayed, without every really paying attention to the fact that an entire Java based charting engine is built in and actually doing the heavy lifting. The same is true for &amp;lt;CFPDF&amp;gt;, &amp;lt;CFIMAGE&amp;gt;, &amp;lt;CFSEARCH&amp;gt;, support for SOAP and Web Services, XMPP and JMS integration, and so much more. While most of us focus on CFML the language, the truth is that the bulk of ColdFusion, the majority of what gets installed, is not the language but the extensive array of integrated services, services that are exposed to ColdFusion via CFML tags and functions.

But what if these services could be accessed outside of ColdFusion? If a PHP developer in the next cube over needed to merge PDF files, why couldn't he invoke ColdFusion's PDF manipulation services? If a .NET developer needed to access Microsoft Exchange, why couldn't she use ColdFusion's brilliant Exchange tags (rather than having to write lots and lots of .NET code, and I do mean lots and lots)? What about the Java developer who needs to easily manipulate spreadsheet files without tinkering with low level libraries?

And while we're at it, what about the Flex developer who needs to generate an e-mail message? Flex (well, Flash) has no built in SMTP libraries, and so Flex developers who need to programmatically generate e-mail messages do so by writing code on the server. For ColdFusion developers this means creating a ColdFusion Component which accepts data from a Flex application (likely via an AMF call) and then passes that same data to a &amp;lt;CFMAIL&amp;gt; tag. In other words, code is being written on the server just to be able to pass data from Flex on the client to the &amp;lt;CFMAIL&amp;gt; tag. So why couldn't a Flex developer just invoke &amp;lt;CFMAIL&amp;gt; directly, passing it name=value pairs so it can generate an e-mail?

Well, with the upcoming &lt;a href="http://labs.adobe.com/wiki/index.php/Centaur"&gt;ColdFusion Centaur&lt;/a&gt;, the answer to all of these questions is yes, these are all doable! In ColdFusion Centaur we're exposing lots of those integrated ColdFusion services via AMF (Flash Remoting) and SOAP (Web Services). The PHP, .NET, and Java developers can invoke ColdFusion built-in Web Services, pass in data, and get back results. And the Flex developer can include a ColdFusion SWC file exposing ActionScript classes and MXML tags via simple abstracted AMF calls. Simply include the SWC in your Flash Builder project, define the ColdFusion name space like this:

&lt;code&gt;&lt;mx:Application xmlns:cf="coldfusion.service.mxml.*"&gt;&lt;/code&gt;

and you'll have access to CFML tags within your Flex project. For example, to send an e-mail you could use the following:
&lt;code&gt;&lt;cf:Mail id="cfMail"
	to="{to.text}"
	from="{from.text}"
	subject="{subject.text}"
	content="{body.text}"
	type="html"	/&gt;&lt;/code&gt;

The above code creates an instance of the Mail object and names it &amp;quot;cfMail&amp;quot;, and sets to, from, subject, etc., with the values of other Flex objects. To actually send the mail all you'd need is to invoke the following (possibly when a Send button is clicked):
&lt;code&gt;cfMail.execute();&lt;/code&gt;

There is much more to this &amp;quot;ColdFusion as a Service&amp;quot; functionality, including lots more services exposed, and a sophisticated security model.

But the bottom line is that ColdFusion is now poised to become even more valuable to Flex and AIR developers, and now even of value to developers using other platforms and languages.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/dDikLWQ32m4" height="1" width="1"/&gt;</description>
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 19 Jun 2009 06:58:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/19/ColdFusion-Functionality-Exposed-As-Services</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/19/ColdFusion-Functionality-Exposed-As-Services</feedburner:origLink></item>
			
			<item>
				<title>Rethinking MAX BOFs</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/7SRnrNJVr2Q/Rethinking-MAX-BOFs</link>
				<description>I just posted some &lt;a href="http://max.adobe.com/blog/2009/06/rethinking-max-bofs.html"&gt;thoughts on MAX BOFs&lt;/a&gt; over on the Adobe MAX blog.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/7SRnrNJVr2Q" height="1" width="1"/&gt;</description>
				
				<category>AdobeMAX09</category>				
				
				<category>MAX</category>				
				
				<pubDate>Thu, 18 Jun 2009 22:30:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/18/Rethinking-MAX-BOFs</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/18/Rethinking-MAX-BOFs</feedburner:origLink></item>
			
			<item>
				<title>LiveCycle Data Services3 Now On Labs</title>
				<link>http://feedproxy.google.com/~r/BenForta/~3/92HGC0Ik98o/LiveCycle-Data-Services3-Now-On-Labs</link>
				<description>&lt;a href="http://labs.adobe.com/technologies/livecycle_dataservices3/"&gt;LiveCycle Data Services 3&lt;/a&gt; is now in beta and available for download on Labs. Product Manager Anil Channappa has posted details on &lt;a href="http://www.adobe.com/devnet/livecycle/articles/lcdses3_whatsnew.html"&gt;what's new in LCDS 3&lt;/a&gt;.&lt;img src="http://feeds.feedburner.com/~r/BenForta/~4/92HGC0Ik98o" height="1" width="1"/&gt;</description>
				
				<category>Labs</category>				
				
				<category>LiveCycle</category>				
				
				<pubDate>Thu, 18 Jun 2009 20:33:00 -0400</pubDate>
				<guid isPermaLink="false">http://forta.com/blog/index.cfm/2009/6/18/LiveCycle-Data-Services3-Now-On-Labs</guid>
				
				
			<feedburner:origLink>http://forta.com/blog/index.cfm/2009/6/18/LiveCycle-Data-Services3-Now-On-Labs</feedburner:origLink></item>
			</channel></rss>
