<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>CFInsider</title>
			<link>http://www.cfinsider.com/index.cfm</link>
			<description>The Blog of Jason Delmore</description>
			<language>en-us</language>
			<pubDate>Thu, 02 Sep 2010 22:42:44 -0400</pubDate>
			<lastBuildDate>Fri, 16 Jul 2010 11:50:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>jason@delmore.info</managingEditor>
			<webMaster>jason@delmore.info</webMaster>
			
			
			
			
			
			<item>
				<title>What Open Source License Should I Choose?</title>
				<link>http://www.cfinsider.com/index.cfm/2010/7/16/What-Open-Source-License-Should-I-Choose</link>
				<description>
				
				Do you have a project you&apos;re working on and want to share with the world, but just aren&apos;t sure about all of this &quot;licensing legal mumbo jumbo&quot;?  Take a look at &lt;a href=&quot;http://4cff.org/default/index.cfm/blog/&quot;&gt;the latest post from the guys over at the For ColdFusion Foundation&lt;/a&gt;.

They have posted &lt;a href=&quot;http://4cff.org/default/index.cfm?LinkServID=C502415F-0288-0063-B060110EE1599F24&amp;showMeta=0&quot; target=&quot;_blank&quot;&gt;a document with great information about open source licensing&lt;/a&gt;.

It&apos;s a quick read with lots of valuable information!

Cheers, :)
Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 16 Jul 2010 11:50:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2010/7/16/What-Open-Source-License-Should-I-Choose</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Serializing / Deserializing in ColdFusion 9</title>
				<link>http://www.cfinsider.com/index.cfm/2010/5/4/Serializing--Deserializing-in-ColdFusion-9</link>
				<description>
				
				Today I was asked a question about serializing a CFC.  Someone wanted to serialize the CFC for later use outside the current process.

Prior to ColdFusion 9, serializing a complex object in a way that could be deserialized back to a usable object within the runtime could be done by diving a bit down into the underlying java.  This could only be done with CFCs as of CF8 as the serializable interface was added at that time.  For those of you not on CF9, the code below can be used to serialize/deserialize objects in ColdFusion.

&lt;code&gt;
&lt;cfscript&gt;
function serialize(myObject) {
	  // Create the underlying ByteArrayOutputStream
	  byteOut = CreateObject(&quot;Java&quot;, &quot;java.io.ByteArrayOutputStream&quot;);
	  byteOut.init();
		
	  // Create the ObjectOutputStream to which the object will be written
	  objOut = CreateObject(&quot;Java&quot;, &quot;java.io.ObjectOutputStream&quot;);
	  objOut.init(byteOut);
	  
	  // Write the object to and close the stream
	  objOut.writeObject(arguments.myObject);
	  objOut.close();
	  
	  return toBase64(byteOut.toByteArray());
	}

 	function deserialize(mySerializedObject) {
	  // Create the underlying ByteArrayInputStream
	  byteIn = CreateObject(&quot;Java&quot;, &quot;java.io.ByteArrayInputStream&quot;);
	  byteIn.init(binaryDecode(arguments.mySerializedObject,&apos;base64&apos;));
		
	  // Create the ObjectInputStream to which the object will be read in from
	  objIn = CreateObject(&quot;Java&quot;, &quot;java.io.ObjectInputStream&quot;);
	  objIn.init(byteIn);
	  
	  return objIn.readObject();
	}
&lt;/cfscript&gt;
&lt;/code&gt;

With ColdFusion 9, this is much simpler, but unless you&apos;ve already looked at the other 200 new functions for CF9 you probably haven&apos;t seen this.  With the new ObjectLoad() and ObjectSave() methods, now all you need is the following:

&lt;code&gt;
&lt;cfscript&gt;
	function serialize(myObject) { 
	  return toBase64(objectsave(myObject));
	}

 	function deserialize(mySerializedObject) {
	  return objectload(tobinary(mySerializedObject));
	}
&lt;/cfscript&gt;
&lt;/code&gt;

Heck, you don&apos;t really need the UDF&apos;s if you can remember to use two functions for this. :)

Now you can easily serialize an array, CFC, query, java object, structure... pretty much any object in ColdFusion.

Why would you want to do this?  How about caching objects to your database to be retrieved later?  Or maybe you want to store a CFC as a string in a form field...  Those might be crazy, or you may have the need for something that crazy right now.  You decide what cool things you want to do with this power. :)

Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Tue, 04 May 2010 16:45:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2010/5/4/Serializing--Deserializing-in-ColdFusion-9</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>What&apos;s going on with 4CFF?</title>
				<link>http://www.cfinsider.com/index.cfm/2010/3/29/Whats-going-on-with-4CFF</link>
				<description>
				
				Many of you may have heard of &lt;a href=&quot;http://www.4cff.org/&quot;&gt;4CFF (The For ColdFusion Foundation)&lt;/a&gt; when we announced it at CFUnited last year, but haven&apos;t heard much about it since.  Why?

First, if you haven&apos;t heard of 4CFF.  Check out our site at &lt;a href=&quot;http://www.4cff.org/&quot;&gt;4cff.org&lt;/a&gt;.  The short description is that many of us believe there needs to be a neutral, non-profit, entity that can foster, sponsor, and &quot;own&quot; important projects to the ColdFusion Community, to ensure that those projects are always for the benefit of the CF Community.  In a sense, we are shooting for an National Endowment for the Arts model... or in the software world, perhaps the Apache Software Foundation model.

Anyhow, back to the question, what is going on with 4CFF?  Well, many things actually, but not enough.  First, we have been spending time figuring out what we really want the foundation to do.  We are all busy people, so just adding more work to the work we all already have was not very feasible.  So, we have decided on how we can support projects in a way that is easy to manage.  We have been talking about which projects to support, and we have a few that are interested in becoming part of 4CFF and we are interested in them becoming a 4CFF project...  but then something seems to get in the way:
&lt;ul&gt;&lt;li&gt;what is the true value of being a 4CFF project?&lt;/li&gt;&lt;li&gt;what do we do about copyright ownership?&lt;/li&gt;
&lt;li&gt;or in one case How much money are you going to give me for my project to be owned by 4CFF?&lt;/li&gt;
&lt;/ul&gt;

These have been somewhat tough questions to answer, and in my opinion it comes down to one simple answer: &lt;b&gt;money&lt;/b&gt;.

I don&apos;t mean that in a negative sense, the truth is that the world we live in operates on money.  So, we have switched our focus temporarily to getting our 501(c)3 status.  What is that?  That is the thing that says the IRS agrees that what we are doing is for the benefit of a community of people and not just for our own benefit.  By recognizing that, it allows donations to be tax deductible, which means your money is even more meaningfully applied.  The Foundation gets more money, you get a tax break, it is a win-win.

Recently, we have been working with lawyers to apply for 501(c)3 status.  My hope is that if we can get the organization to be officialy recognized as a tax exempt non-profit, then people and corporations are more likely to open up their checkbooks.  Corporations and individuals that use these projects will have a vested interest in donating, to ensure that they will have even better software in the future.  And once we have some money, we&apos;ll be able to make useful grants to projects, and once we have projects we will have more people interested in volunteering and something useful for them to volunteer to... then we keep repeating so that we have spectacular software that is for the CF community, and owned and supported by the community.  It is a feedback loop and we just need to figure out how to get it started.

I want to be clear, everyone participating in 4CFF is doing it in a strictly volunteer basis.  The ColdFusion world has already changed my life, I want to give back and I want to help make our community stronger.  I know the other volunteers to 4CFF feel the same way.  Those people are (in alphabetical order): Ray Camden, Sean Corfield, Sam Farmer, Rachel Lehman, Doug Morrison, Jared Rypka-Hauer, Chris Scott, Dan Wilson, and John Zhu.  Thank you guys for volunteering your time.

So, what are we doing?  Still trying to get through the early stages of starting a new venture.  Should we be further along?  Yep.  Why aren&apos;t we further along?  A good number of reasons, but lack of dedication isn&apos;t one of them.

Can we get to the next level?  I hope so.  Am I a dreamer?  You tell me. :)

We&apos;ll keep pushing for the dream and hope it comes true,&lt;br/&gt;
Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Mon, 29 Mar 2010 09:45:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2010/3/29/Whats-going-on-with-4CFF</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>ColdFISH 3.0 Alpha Released</title>
				<link>http://www.cfinsider.com/index.cfm/2009/12/30/ColdFISH-30-Alpha-Released</link>
				<description>
				
				You may not know what ColdFISH is, but if you are running BlogCFC then you are using it, and chances are at the minimum that you&apos;ve read a blog that does use it.  Well, I&apos;ve been doing some work on ColdFish due to several requests.  This latest version includes:
&lt;ul&gt;
&lt;li&gt;XML based configuration - no need to get into the code to change a color or add a keyword&lt;/li&gt;
&lt;li&gt;Keyword formatting for CFML, CFSCRIPT, ActionScript, and SQL!!!&lt;/li&gt;
&lt;li&gt;The ability to tell the parser you are just looking for just SQL, CFScript, or ActionScript (it can&apos;t guess script based languages... it does figure out tag-based on its own)&lt;/li&gt;
&lt;li&gt;Caching of formatted code blocks (once it&apos;s been parsed it will stay in memory until it hits the cache limit, cache size is configurable)&lt;/li&gt;
&lt;li&gt;A toolbar that allows for viewing the code as plain text, copying it straight to the clipboard, or even sending just the block straight to a printer&lt;/li&gt;
&lt;li&gt;A cleaner default look and feel&lt;/li&gt;
&lt;/ul&gt;

&lt;img src=&quot;http://www.cfinsider.com/images/coldfish.png&quot; width=440 height=337&gt;

If you&apos;re interested in testing the alpha out you can check it out of the subversion repository at &lt;a href=&quot;http://svn.riaforge.org/coldfish/&quot;&gt;http://svn.riaforge.org/coldfish/&lt;/a&gt;.  Feedback is very welcome!

If you just want to learn more about ColdFish, check out the project at &lt;a href=&quot;http://coldfish.riaforge.org/&quot;&gt;http://coldfish.riaforge.org/&lt;/a&gt;

Have a great New Years!
Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 30 Dec 2009 19:09:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2009/12/30/ColdFISH-30-Alpha-Released</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>10 Things ColdFusion 10 Really NEEDS</title>
				<link>http://www.cfinsider.com/index.cfm/2009/12/11/10-Things-ColdFusion-10-Really-NEEDS</link>
				<description>
				
				I was reading a &lt;a href=&quot;http://www.codfusion.com/blog/post.cfm/coldfusion-10-wish-list&quot;&gt;ColdFusion 10 Wish List&lt;/a&gt; today (I am behind on my blog reading) and it is largely filled with minor tweaks that are a bit too myopic for me.  I think Server-side Actionscript is interesting, particularly to Flex developers looking for a back-end, but almost everything else on the list struck me as missing a broader view.

From the general list there are things like incorporating Omniture (a web analytics tool), adding message queuing (I assume this is essentially incorporating JMS directly into the language.  By the way, you can do this today with the JMS Gateway), calling a CFC from Java(CFCProxy already exists too), queryparam for LDAP, multiple datasources for ORM, and NTLM support.

Really???  This is what we want for ColdFusion 10!?!

Well I want more from Adobe than that.  I know we are all still catching up to ColdFusion 9 (maybe even 8,) but there are 10 serious changes that ColdFusion NEEDS.

&lt;ol&gt;
&lt;li&gt;Replace JRun&lt;/li&gt;

I&apos;m sorry, but if it&apos;s dead bury it.  Get the engine to the 21st century.  There are several viable options out there including replacing it with GlassFish, Geronimo, or a commercial application server.

&lt;li&gt;Overhaul Reporting&lt;/li&gt;

ColdFusion ReportBuilder is a crusty outdated application built for windows only and very few people use it because of that.  ColdFusion Builder deserves an Eclipse-based report building tool that understands CFML.  Either update Jasper Reports or implement BIRT.  If this is done right, Adobe sells more ColdFusion Builder and more ColdFusion... we get better report building tools out of the box.

&lt;li&gt;Overhaul CFDocument&lt;/li&gt;

It&apos;s common knowledge that the underlying HTML renderer in ColdFusion is ICEBrowser.  ICEBrowser did a decent job with earlier versions of the HTML spec, but found it commercially unreasonable to try to keep up with that.  Its End-of-Service Life is next year.  &lt;a href=&quot;http://www.icesoft.com/products/icebrowser.html&quot;&gt;http://www.icesoft.com/products/icebrowser.html&lt;/a&gt;

It&apos;s time to implement WebKit under the covers.  WebKit is also the rendering engine used in Adobe AIR, so maybe there could be extra benefits to using this.  If WebKit won&apos;t do the trick, hopefully Cobra can, or perhaps they go to just supporting XHTML with Flying Saucer.  Whatever the answer is, it is probably not to stay on an unsupported OEM.

A lot of people use this to generate PDF, it needs to be solid and it needs to work with later revs of the HTML and CSS specs.

&lt;li&gt;Fix Server Monitoring&lt;/li&gt;

Server Monitoring was a terrific feature in ColdFusion 8 that just didn&apos;t make it all the way there.  Either spend the time to get it there, or FusionReactor has their act together, partner with them to create an OEM&apos;d version.  They get an upsell opportunity for those in need of Enterprise Monitoring and the rest of us get a better Server Monitor.

&lt;li&gt;Re-think Flash Forms&lt;/li&gt;

Flash Forms were a great idea when they came out with ColdFusion 7, they are an even better idea today.  They probably need to be re-envisioned.  But let the server-developers create code within their CFML that creates a rich UI!  ColdFusion developers that don&apos;t want to go out and learn an entire new development language and paradigm should still be able to leverage the Flash Platform.

&lt;li&gt;Fix Application Deployment&lt;/li&gt;

Sourceless deployment is simply not easy enough.  CARs are not a bad idea, there just hasn&apos;t been enough time spent on making using them easy.  Add a deployment wizard to ColdFusion Builder that then brings up my Server Manager so I can point &gt; click &gt; deploy.

&lt;li&gt;Make a Free Edition&lt;/li&gt;

Yes, I said it.  ColdFusion needs a Free Edition!  This was tried once before and failed miserably and so those with corporate memory at Adobe sometimes bring that up (although really the only person left from that time is Ben Forta.)  Here&apos;s the deal, like everyone else in the world one of these days I will get around to moving my blogs over to some free third party provider (blogger, posterous, tumblr, etc.)   Why?  Because I&apos;m not going to pay $1299 to run a blog on CFML.  All I really want is to stay with my warm and fuzzy CFML while staying with the platform I am familiar with.  Give me an edition that just has the nuts and bolts:
&lt;ul&gt;
&lt;li&gt;CFML and CFSCRIPT&lt;/li&gt;
&lt;li&gt;AJAX and Flash Forms&lt;/li&gt;
&lt;li&gt;File Handling&lt;/li&gt;
&lt;li&gt;XML Parsing&lt;/li&gt;
&lt;li&gt;CFQuery (but I don&apos;t need the DataDirect drivers... all the databases provide their own)&lt;/li&gt;
&lt;li&gt;CFMail&lt;/li&gt;
&lt;li&gt;CFFTP&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;li&gt;BlazeDS (Hey it&apos;s free in supports the Flash Platform initiatives, so toss that in too)&lt;/li&gt;
&lt;/ul&gt;

Keep the rest to yourselves.  I just want to be able to run a blog and a wiki without paying for a commercial application server for my home computer, and without learning PHP.  If you did that, maybe you&apos;d win back some of the PHP market and even create a vendor market around ColdFusion again.  Just give me something that has no more features than the free platforms.  Worst case scenario, you make a better investment in expanding use of the Flash Platform.

&lt;li&gt;Add real support for Instant Messaging&lt;/li&gt;

IM gateways were a cool idea, but supporting XMPP and Sametime is meaningless.  Get the other gateways in there.  While you&apos;re at it, make them part of the default language or easier to administrate.  Maybe there is a way to make Gateways more approachable in general.

&lt;li&gt;Update the Web Services Engine&lt;/li&gt;

The underlying web services engine is still good old Apache Axis 1.  While that is great for backwards compatibility, Apache Axis2 is considerably faster (4-5 times faster) and supports many new features.  Axis2 was first introduced in 2004... I would say it&apos;s mature at this point.  Hot deployment and Asynchronous calls would be hot!

&lt;li&gt;Add a Workflow Engine&lt;/li&gt;

Business Process Management is extraordinarily important these days.  ColdFusion is often used to build custom business processes.  Wouldn&apos;t it be awesome to drag-n-drop your way to a new application workflow?

Take the work that has been put into LiveCycle Workflow or maybe jBPM.  The Business Process engine should tail into ColdFusion Components nicely.  Implement either LiveCycle Workflow Designer or jBPM Process Designer with some ColdFusion awareness into ColdFusion Builder and you have a winner.

&lt;/ol&gt;
While I appreciate that there are specific needs we all have for our projects, I think the 10 items I have outlined could dramatically change the direction of the product for the better.  ColdFusion has recently seen a return to being respected and watched by analysts and media, a resurgence of customers upgrading after several years of waiting to see which way the wind would turn, and an increase in the number of developers using ColdFusion overall.  Now is not the time to tweak.  It is time to show that not only is ColdFusion surviving, but it is done with just getting back to its former strength on a new platform and instead is now ready to go back and re-invent itself while respecting its original vision, and take on the next set of challenges.

Push for greatness, go ColdFusion.

Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 11 Dec 2009 13:46:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2009/12/11/10-Things-ColdFusion-10-Really-NEEDS</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Complex Charting in ColdFusion with WebCharts</title>
				<link>http://www.cfinsider.com/index.cfm/2009/11/25/Complex-Charting-in-ColdFusion-with-WebCharts</link>
				<description>
				
				I did a session a couple of weeks back at RIAUnleashed in Boston and one of the topics I covered was about leveraging more of the WebCharts3D charting capabilities using Java.  The point of it was to illustrate how easy it can be to reach down one level into the underlying technologies used in ColdFusion, all you need to know is where they are.

WebCharts3D is the underlying charting engine built into ColdFusion.  The GreenPoint site has more information about the technology &lt;a href=&quot;http://www.gpoint.com/website/WebCharts50/products/serverside.jsp&quot;&gt;here&lt;/a&gt;.

You may not know this, but ColdFusion comes with a client application for designing WebCharts3d Projects.  All you need to do is go to run C:\ColdFusion\charting\webcharts.bat (change as appropriate for your operating system).  They have also made a &lt;a href=&quot;http://www.gpoint.com/website/WebCharts50/products/eclipse.jsp&quot;&gt;WebCharts Eclipse Plug-in&lt;/a&gt; freely available if you are interested in that.

Running these will give you a chart type chooser that will look something like this:

&lt;img src=&quot;http://www.cfinsider.com/images/webcharts_chooser2.png&quot; width=367 height=240&gt;

Select your type and you will get a great utility to help you design your chart that will look a bit like this:

&lt;img src=&quot;http://www.cfinsider.com/images/webcharts_designer.png&quot; height=256 width=480&gt;

Once you have your chart designed, this utility has tabs for getting back the format of the XML needed &quot;style&quot; the chart, the XML needed to populate the chart, and even the java code needed to make it work for a jsp and even how to make it work in an applet, Swing, or SWT app. The jsp code needs a couple tweaks to make it work for CF.

The Style file that was generated for you will look like:
&lt;code&gt;
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;frameChart&gt;
          &lt;yAxis scaleMin=&quot;0&quot;/&gt;
          &lt;legend isVisible=&quot;false&quot;/&gt;
          &lt;elements&gt;
               &lt;series index=&quot;1&quot; shape=&quot;Area&quot;&gt;
                    &lt;morph morph=&quot;Grow&quot;/&gt;
               &lt;/series&gt;
          &lt;/elements&gt;
          &lt;decoration style=&quot;FrameClock&quot; foreColor=&quot;#0080FF&quot;/&gt;
          &lt;paint isVertical=&quot;true&quot;/&gt;
          &lt;insets left=&quot;5&quot; top=&quot;10&quot; right=&quot;10&quot; bottom=&quot;5&quot;/&gt;
&lt;/frameChart&gt;
&lt;/code&gt;

The data file will look like:
&lt;code&gt;
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;XML type=&quot;default&quot;&gt;
&lt;COL&gt;2009&lt;/COL&gt;
&lt;COL&gt;2010&lt;/COL&gt;
&lt;COL&gt;2011&lt;/COL&gt;
&lt;COL&gt;2012&lt;/COL&gt;
&lt;COL&gt;2013&lt;/COL&gt;
&lt;ROW col0=&quot;100.0&quot; col1=&quot;200.0&quot; col2=&quot;100.0&quot; col3=&quot;180.0&quot; col4=&quot;200.0&quot;/&gt;
&lt;ROW col0=&quot;150.0&quot; col1=&quot;300.0&quot; col2=&quot;250.0&quot; col3=&quot;230.0&quot; col4=&quot;250.0&quot;/&gt;
&lt;/XML&gt;
&lt;/code&gt;

And then the code to execute this in ColdFusion will look like:
&lt;code&gt;
&lt;!--- may need this for lazy initialization of charting engine---&gt;
&lt;cfchart chartwidth=&quot;1&quot; chartheight=&quot;1&quot;/&gt;

&lt;cfscript&gt;
webCharts3DServer = createObject(&quot;java&quot;,&quot;com.gp.api.jsp.MxServerComponent&quot;).getDefaultInstance(GetPageContext().getServletContext());
myChart = webCharts3DServer.newImageSpec();
myChart.width = 320  ;
myChart.height= 300 ;
myChart.type = &quot;PNG&quot;  ;
myChart.loadStyles(expandpath(&apos;./webchartStyle.xml&apos;));
myChart.model= fileread(expandpath(&apos;./webchartModel.xml&apos;)); 
writeoutput(webCharts3DServer.getImageTag(myChart,&quot;/CFIDE/GraphData.cfm?graphCache=wc50&amp;graphID=&quot;));
&lt;/cfscript&gt;
&lt;/code&gt;

Do that and you get a sexy new chart!  Stock full of rollover states and all the polish you care to put on it. :)

&lt;img src=&quot;http://www.cfinsider.com/images/webcharts_output.png&quot; height=251 width=238&gt;

This probably looks more complicated than it is.  From a developer perspective, use a tool to design any chart type you want from the WebCharts charting set (and there are many!), and then figure out how to populate some XML.  Add 7 lines of CF code (with only one of them actually creating a java object), and you&apos;re done!!!

Now you can create Bubble, Ring, Scatter, Gantt, Gauge, Radar, Polar, Star, Stock, Histogram, Regression, and Doughnut Charts, and you can create Maps and even Heatmaps.  The charting world is your oyster!

Easy peasy.

Happy charting!

Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 25 Nov 2009 13:14:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2009/11/25/Complex-Charting-in-ColdFusion-with-WebCharts</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>RIAUnleashed Slides Posted for CF - Java Relationship</title>
				<link>http://www.cfinsider.com/index.cfm/2009/11/13/RIAUnleashed-Slides-Posted-for-CF--Java-Relationship</link>
				<description>
				
				I gave a talk today at RIAUnleashed on how to take advantage of the underlying JEE infrastructure in ColdFusion.  The room was very packed, hopefully people found the topic interesting. :)

&lt;object height=&quot;425&quot; width=&quot;550&quot;&gt;
	&lt;param name=&quot;movie&quot; value=&quot;http://slidesix.com/viewer/SlideSixViewer.swf?alias=The-ColdFusion--Java-Relationship-p3GWa&quot;/&gt;
	&lt;param name=&quot;menu&quot; value=&quot;false&quot;/&gt;
	&lt;param name=&quot;scale&quot; value=&quot;noScale&quot;/&gt;
	&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;
	&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;
	&lt;embed src=&quot;http://slidesix.com/viewer/SlideSixViewer.swf?alias=The-ColdFusion--Java-Relationship-p3GWa&quot; allowscriptaccess=&quot;always&quot; allowFullScreen=&quot;true&quot; height=&quot;425&quot; width=&quot;550&quot; type=&quot;application/x-shockwave-flash&quot; /&gt;
&lt;/object&gt;

These slides are hosted on &lt;a href=&quot;http://slidesix.com&quot;&gt;SlideSix.com&lt;/a&gt;, a very cool tool for posting presentations online.

I have given a session on this topic a few times now, but I decided to update this session to be a bit more applicable to the issues we run into when developing applications today.

Sorry for text size issues, CFXL, ColdFiSH, and JavaLoader which I refer to in the presentaion are posted on &lt;a href=&quot;http://riaforge.org&quot;&gt;RIAForge&lt;/a&gt;.

I hope you find it interesting!

Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 13 Nov 2009 16:37:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2009/11/13/RIAUnleashed-Slides-Posted-for-CF--Java-Relationship</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>High Performance String Concatenation in ColdFusion</title>
				<link>http://www.cfinsider.com/index.cfm/2009/10/23/High-Performance-String-Concatenation-in-ColdFusion</link>
				<description>
				
				I was spending a bit of time last night preparing for the CF - Java Session I am giving at Bentley in a couple weeks and I decided to do an actual test on the difference between using a ColdFusion String and using a Java StringBuilder for concatenation.  The results were even more striking than I had originally thought, so I decided to pass it on (sorry for the spoiler if you&apos;re going to attend my session at Bentley, I will have more than just this to talk about :).)  If you want to learn more about leveraging Java with ColdFusion or a number of other topics, check out &lt;a href=&quot;http://www.riaunleashed.com/&quot;&gt;RIAUnleashed at Bentley College Waltham, MA November 13th&lt;/a&gt;.

So, back to my story, I took a string:
&lt;code&gt;
appendstring = &quot;There&apos;s an old saying in Tennessee -- I know it&apos;s in Texas, probably in Tennessee -- that says, fool me once, shame on -- shame on you. Fool me -- you can&apos;t get fooled again&quot;;
&lt;/code&gt;
God bless the wisdom of GWB.

And I appended it in a loop using ColdFusion Strings:
&lt;code&gt;
for (i=1;i&lt;=iterations;i++) {
	string = string &amp; appendstring;
}
&lt;/code&gt;
And I also appended it in a loop using a Java StringBuilder:
&lt;code&gt;
stringbldr = createObject(&quot;java&quot;, &quot;java.lang.StringBuilder&quot;).init();
for (i=1;i&lt;=iterations;i++) {
	stringbldr.append(appendstring);
}
&lt;/code&gt;

The results...
With Strings I could append this sentence together 20,000 in 90 seconds... not bad right?

As it turns out String concatenation is actually exponential not linear (perhaps its cubic and not exponential... but it deteriorates quickly.)  Take a look at the chart below:

&lt;img src=&quot;/enclosures/AppendingStrings.png&quot; width=704 height=306/&gt;

Now a closer look at the same data, but extending to a scale meaningful to the StringBuilder:

&lt;img src=&quot;/enclosures/AppendingStringBuilder.png&quot; width=704 height=306/&gt;

With a StringBuilder, I could append the same string 1 MILLION times in 5 seconds!!!  I actually had the system running out of memory in about 7 seconds (so be aware of that I suppose.)  Trying to get to 1 Million iterations with Strings would take roughly &quot;until the end of time&quot;... okay, maybe not that long, but long enough that you would think a process hung on your server last Saturday.  

Am I saying ColdFusion sucks at concatenation?  No, not at all.  The fact is you will have the same results concatenating strings in Java.  In fact, a ColdFusion String IS A Java String.  The difference is simple, ColdFusion does not have a keyword or object that does high performance string concatenation.  There are hacks like appending an array and then using arraytolist(), but how awkward is that?

Next time you need to make a big string, just use a StringBuilder, its really no big deal. :)  Remember, ColdFusion just makes your Java development faster, because the app you write using ColdFusion actually executes as Java.

Best of luck on whatever project you are working on today, :)

Jason

Update: 2:04PM October 23, 2009
With some of the interesting comments around other high performance concatenation methods I decided to give a couple a try under my test.  The chart below includes String Concatenation, Appending a StringBuilder, Appending an Array and then Flattening it, and using CFSaveContent.  Take a look at the chart below:

&lt;img src=&quot;/enclosures/Concatenation.png&quot; width=704 height=306/&gt;

I think the results were a bit surprising at first, but after some discussion I think I actually get it.  First, we know string concatenation is no good, easy.  Next, we know StringBuilder&apos;s are linear, and they did what we previously expected.

Next up, an Array, you can see from the chart that an array is wicked fast and then the last iteration is costly because it converts to a string there.  This made sense to me... the difference here is the array is only consumable as a string after everything is together.  I moved the ArrayToList call inside my loop to make that part equivalent and while still on the same order of magnitude as a StringBuilder, it was several times slower.  I guess if you have something that you can completely construct as an array and then just convert it when you need to consume it as a String, this is a viable option.

Lastly, CFSaveContent... this one perplexed me so I dropped a line to an old co-worker at Adobe.  His insight was interesting, he said that CFSaveContent is essentially grabbing everything you are outputting to the ColdFusion output buffer which is already incredibly efficient and there waiting for strings (html output) to be thrown at it and then grabbing the content and sticking it in a variable.  That does make me wonder what would happen if there were contention for the output buffer... but either way, in a single request environment this is incredibly efficient.

Well, very interesting stuff.  I guess I would still prefer to use a StringBuilder, it just makes more sense to me to use something designed to manage strings.  I can deal with an extra second and a half over 300,000 iterations.  It&apos;s the hours it would take using a String that I take issue with. :)

That of course is a coding preference, and I encourage you to do whatever is appropriate for your situation.

Cheers again, :)
Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 23 Oct 2009 11:00:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2009/10/23/High-Performance-String-Concatenation-in-ColdFusion</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>ColdFusion Non-profit Announced at CFUnited</title>
				<link>http://www.cfinsider.com/index.cfm/2009/8/12/ColdFusion-Nonprofit-Announced-at-CFUnited</link>
				<description>
				
				They just announced a ColdFusion Non-profit that is dedicated to the ColdFusion Community.  I think this is awesome!

Ok, I&apos;m cheating a bit as I am one of the co-founders and President of the &lt;a href=&quot;http://4cff.org/&quot;&gt;4 ColdFusion Foundation&lt;/a&gt;.  Several of us have been spending our spare time trying to pull a real non-profit corporation together for the benefit of the ColdFusion Community.  You should find out more information on the &lt;a href=&quot;http://4cff.org/&quot;&gt;4 ColdFusion Site at 4CFF.org&lt;/a&gt;.

Special thanks from me to the board members that have been working so diligently at this.  They are:
&lt;ul&gt;
 &lt;li&gt;Sam Farmer&lt;/li&gt;
 &lt;li&gt;John Zhu&lt;/li&gt;
 &lt;li&gt;Doug Morrison&lt;/li&gt;
 &lt;li&gt;Dan Wilson&lt;/li&gt;
 &lt;li&gt;Ray Camden&lt;/li&gt;
 &lt;li&gt;Sean Corfield&lt;/li&gt;
 &lt;li&gt;Jared Rypka-Hauer&lt;/li&gt;
 &lt;li&gt;Liz Frederick&lt;/li&gt;
 &lt;li&gt;Andy Allan&lt;/li&gt;
 &lt;li&gt;and many more&lt;/li&gt;
&lt;/ul&gt;
I&apos;m looking forward to having a non-profit for the community and hope you are to. :)

Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 12 Aug 2009 09:15:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2009/8/12/ColdFusion-Nonprofit-Announced-at-CFUnited</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>ColdFish 2.0 Beta on RIAForge</title>
				<link>http://www.cfinsider.com/index.cfm/2009/7/23/ColdFish-20-Beta-on-RIAForge</link>
				<description>
				
				I recently added ActionScript and MXML syntax highlighting support to ColdFish, as well as line number support. ColdFish is on RIAForge here. I have not had a chance to test it out that much as I do not spend a lot of time with AS3 or MXML so I am looking for some people to give me feedback. I did not update the ZIP since that is the stable release.

If you are interested in AS3 and MXML support for ColdFish, please checkout the SVN tree at http://svn.riaforge.org/coldfish/.

Please send me your comments or fill out the issue tracker on RIAForge!

Thanks!
Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 23 Jul 2009 23:53:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2009/7/23/ColdFish-20-Beta-on-RIAForge</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Jason&apos;s New Gig!!!</title>
				<link>http://www.cfinsider.com/index.cfm/2009/6/3/Jasons-New-Gig</link>
				<description>
				
				If you are interested in what&apos;s been going on my past few months please read on, if not, well, now is your opportunity to stop reading. :)

Since leaving Adobe in December, until this week I had been working full-time as a consultant.  I have not had any downtime, even on my vacations I have been working on various projects, client work, my own open source projects (I updated CFXL to use POI, I added MXML and ActionScript support to ColdFiSH... I&apos;ll post that another time), and I have also been working with many talented folks on another project that I can&apos;t wait to talk about publically (but will wait for the right time :).)

While doing that, I managed to talk to a few companies about full-time work.  As of this past Monday, I am now the Director of Technology for &lt;a href=&quot;http://www.firstcomp.com/&quot;&gt;FirstComp Insurance&lt;/a&gt;.  The team here is a phenomenally talented group composed of genuinely friendly people.  I don&apos;t want to get into too many details about the company, but I can honestly say that I would not have thought insurance could be so interesting.  They use a lot of ColdFusion, so if you&apos;re a CF or Flex developer that is a guru or want to become one, live in Rhode Island, and are willing to work for a crazy coding fool, feel free to contact me. :)

The past several months have just been so refreshing to me.   My hours have dropped from &quot;working whenever awake&quot; to &quot;normalesque&quot; hours.  I&apos;ve been able to spend time with my family and friends, to code out of pure enjoyment for coding, to travel for fun rather than work, and I have been able to fully enjoy the time and discussions I have had with fellow developers (when you represent a large company, you can&apos;t always share your true opinion.) 

Things have just been spectacular and it just seems to keep getting better.  In case you were wondering, I&apos;m alive and well, and am happy to still call myself a CFer!

I wish all of the success in the world to each and every one of you.

Jason
				
				</description>
						
				
				<category>Random</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 03 Jun 2009 14:04:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2009/6/3/Jasons-New-Gig</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Working with ColdFusion Dates in Javascript</title>
				<link>http://www.cfinsider.com/index.cfm/2009/4/1/Working-with-ColdFusion-Dates-in-Javascript</link>
				<description>
				
				I did not see much information out there on this subject so I thought I would post it.  Here is the scenario, you want to return a date from the server and use it in Javascript to dynamically populate something (an input field, some text... you decide.)

When you send a date back from the server using AJAXPROXY, or manually using SerializeJSON(), ColdFusion is extremely helpful and sends the date back in this format.

&lt;i&gt;MonthName, DayNumber Year Hours:Minutes:Seconds&lt;/i&gt;

Now... what can you do with that format on the Javascript side?  More than you may have realized.

All you need to do is put that date in the constructor of the Javascript Date object.  Now you automagically have a &lt;a href=&quot;http://www.w3schools.com/jsref/jsref_obj_date.asp&quot;&gt;Javascript Date object&lt;/a&gt; and can use all the methods for that (&lt;a href=&quot;http://www.w3schools.com/jsref/jsref_obj_date.asp&quot;&gt;Check out the documentation on Javascript Date Objects&lt;/a&gt;.)  Here is some code that you can run to see what I mean.

&lt;code&gt;
&lt;cfajaxproxy cfc=&quot;myCfc&quot; jsclassname=&quot;myCfc&quot;  /&gt;
&lt;script&gt;
var myCfc = new myCfc();
var myDate = new Date(myCfc.getMyDate());

document.write(myDate.getMonth()+1 + &apos;/&apos; + myDate.getDate() + &apos;/&apos; + myDate.getFullYear());
&lt;/script&gt;
&lt;/code&gt;

The output will look like this.

01/01/2010

I know you&apos;re probably asking... why do you have to add 1 to the month.  getMonth() returns the number of the month (0-11) starting at 0.  Most of the methods start at 0, just add 1 when you need to.  The exception to that rule is getDate() which returns the number of the day starting at 1.  Also, getDay(), actually returns the day of the week.  I find that a bit odd myself, but am sure that there were reasons to do it that way.

Don&apos;t forget, you have the time in the object as well.  So you can use getHours(), getMinutes(), and getSeconds() to output the time... or you can use myDate.toLocaleTimeString() and javascript will output the time in the appropriate format for the users locale.

Hopefully that will save you a bit of extra time trying to figure out how to return a date from the server and format your date in Javascript.

Cheers!
Jason

&lt;i&gt;P.S.  This is not an April fools joke. :)&lt;/i&gt;
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 01 Apr 2009 09:41:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2009/4/1/Working-with-ColdFusion-Dates-in-Javascript</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Object Relational Mapping Session at CF.Objective</title>
				<link>http://www.cfinsider.com/index.cfm/2009/3/5/Object-Relational-Mapping-Session-at-CFObjective</link>
				<description>
				
				My favorite conference every year has to be &lt;a href=&quot;http://www.cfobjective.com/&quot;&gt;CF.Objective&lt;/a&gt;.  It&apos;s relatively small, but if you ever want to sit down and have a discussion with the thought leaders in the ColdFusion world, it is definitely the place to be.

This year, I will be doing a session on Object Relational Mapping.  I know a lot of ColdFusion developers aren&apos;t familiar with this development technique and that&apos;s largely because the libraries available to developers are still a bit nascent although very powerful.

The point of this session is to talk about what is available today and what will be coming in the future.  I truly believe that very soon, ORM will go from being an advanced technique that only a few people use, to a technique that everyone will use because it will be simpler and more powerful than writing direct queries.

&lt;a href=&quot;http://www.cfobjective.com/&quot;&gt;Please join me at CF.Objective!

&lt;img border=&quot;0&quot; height=&quot;125&quot; src=&quot;http://www.cfobjective.com/images/CFObjective09_speaker_125x125.gif&quot; width=&quot;125&quot;/&gt;
&lt;/a&gt;

Best Wishes,
Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 05 Mar 2009 17:10:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2009/3/5/Object-Relational-Mapping-Session-at-CFObjective</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>CFXL 2.0 Released</title>
				<link>http://www.cfinsider.com/index.cfm/2009/2/27/CFXL-20-Released</link>
				<description>
				
				For those of you that aren&apos;t familiar with my CFXL project.  It started many years ago as a very basic API to modify an existing spreadsheet.  Well, I&apos;ve been working on CFXL for a while now.  I recently came to the realization that I needed to change the underlying API I was using from JExcel API to Apache POI if CFXL was ever going to be truly powerful.  Well, now CFXL has been updated under the covers to work just the way so many people wanted it to. :)

First, parsing is now built in and really trivial.  Here is some example code that will read every cell in a spreadsheet and output it.

&lt;code&gt;
&lt;cfscript&gt;
	cfxl = createObject(&quot;component&quot;,&quot;com.jasondelmore.cfxl.cfxl&quot;).init(&quot;#GetDirectoryFromPath(GetCurrentTemplatePath())#/svbn.xls&quot;);
	cfxl.setSheet(0);
	
	writeoutput(&quot;&lt;table&gt;&quot;);
	for (i=1;i&lt;=cfxl.getSheet().getLastRowNum();i++) {
		writeoutput(&quot;&lt;tr&gt;&quot;);
		for (j=1;j&lt;=cfxl.getRow().getLastCellNum();j++) {
			writeoutput(&quot;&lt;td&gt;&quot;);
			writeOutput(cfxl.getCellValue(j,i));
			writeoutput(&quot;&lt;/td&gt;&quot;);
		}
		writeoutput(&quot;&lt;/tr&gt;&quot;);
	}
	writeoutput(&quot;&lt;/table&gt;&quot;);
	
	cfxl.closeWorkbook();
&lt;/cfscript&gt;
&lt;/code&gt;

Or... how about some code for creating a new spreadsheet from scratch using tag syntax.
&lt;code&gt;
&lt;cf_xl action=&quot;view&quot;&gt;
	&lt;cf_xlparam column=&quot;A&quot; row=&quot;13&quot; value=&quot;My Example Excel File&quot;/&gt;
	&lt;cf_xlparam column=&quot;A&quot; row=&quot;14&quot; value=&quot;100.5&quot;/&gt;
	&lt;cf_xlparam column=&quot;A&quot; row=&quot;15&quot; value=&quot;200.4&quot;/&gt;
	&lt;cf_xlparam column=&quot;A&quot; row=&quot;16&quot; value=&quot;300.3&quot;/&gt;
	&lt;cf_xlparam column=&quot;A&quot; row=&quot;17&quot; value=&quot;400.2&quot;/&gt;
	&lt;cf_xlparam column=&quot;A&quot; row=&quot;18&quot; value=&quot;500.1&quot;/&gt;
&lt;/cf_xl&gt;
&lt;/code&gt;

Or... how about doing the same, but this time calling the CFXL API directly, and using some of the functions that are in the POI API directly as well...
&lt;code&gt;
&lt;cfscript&gt;
	cfxl = createObject(&quot;component&quot;,&quot;com.jasondelmore.cfxl.cfxl&quot;).init(&quot;#GetDirectoryFromPath(GetCurrentTemplatePath())#/demo.xls&quot;);
	cfxl.setSheet(&quot;CFInsider Demo&quot;);
	//cfxl.setSheet(1);
	cfxl.setCell(&quot;A&quot;,13,&quot;My Example Excel File&quot;);
	cfxl.setCell(&quot;A&quot;,14,100);
	cfxl.setCell(&quot;A&quot;,15,100);
	cfxl.setCell(&quot;A&quot;,16,200);
	cfxl.setCell(&quot;A&quot;,17,500);
	cfxl.setCell(&quot;A&quot;,18,1000);
	cfxl.setCell(&quot;B&quot;,36,now());
	cfxl.setCell(&quot;B&quot;,37,True);
	
	cfxl.setCell(&quot;A&quot;,38,cfxl.getCellValue(&quot;A&quot;,16));
	// Note, you can go right in and grab the current sheet and use all of the cfxl APIs directly... same goes for cells and workbooks.
	cfxl.getSheet().setZoom(4, 1); 
	cfxl.viewWorkbook();
&lt;/cfscript&gt;
&lt;/code&gt;

CFXL is now extraordinarily powerful and flexible.  Please give it a try, tell me what you like and what you don&apos;t like!

CFXL is on RIAForge at &lt;a href=&quot;http://cfxl.riaforge.org/&quot;&gt;http://cfxl.riaforge.org/&lt;/a&gt; :)

Best,
Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 27 Feb 2009 14:17:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2009/2/27/CFXL-20-Released</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>My Update (Me being Jason Delmore) :)</title>
				<link>http://www.cfinsider.com/index.cfm/2008/12/30/My-Update-Me-being-Jason-Delmore-</link>
				<description>
				
				A few people have asked what I have been up to and I thought there may be others wondering what I am up to at the moment and what I plan on doing next.  If you don&apos;t care, feel free to stop reading. :)

As many of you may know, I was among the 600 folks recently laid off with &lt;a href=&quot;http://www.sfgate.com/cgi-bin/article.cgi?f=/c/a/2008/12/03/BUE114DS4L.DTL&amp;tsp=1&quot;&gt;the mass layoff at Adobe&lt;/a&gt;.  My last official day as an Adobe employee was December 15th.

My first day on-site of a new client as an independent contractor... was December 16th. :)

I absolutely loved my old job.  It always felt like I was making some contribution to thousands of ColdFusion projects out there.  (Whether or not that&apos;s true, it always felt that way.)  However, now that I am out of that role, I can tell you I feel relieved, refreshed, and ready to take on whatever comes next.  I can also say that I missed getting my hands dirty and just coding.  Writing code can be a lot of fun.

Anyhow, I just wanted to let everyone know that I am back at it and will hopefully be posting some more projects and interesting information on my blog.  It might even be easier to post things now that I don&apos;t have to worry about my comments being construed as coming from Adobe.  And, since I am actually coding full-time, I can spend some more time working on open source projects.

Back to my coding for now.

Best wishes and have a Happy New Year!&lt;br/&gt;
Jason
				
				</description>
						
				
				<category>ColdFusion</category>				
				
				<pubDate>Tue, 30 Dec 2008 11:48:00 -0400</pubDate>
				<guid>http://www.cfinsider.com/index.cfm/2008/12/30/My-Update-Me-being-Jason-Delmore-</guid>
				
			</item>
			
		 	
			</channel></rss>