<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>madfellas - ColdFusion</title>
			<link>http://www.madfellas.com/blog/index.cfm</link>
			<description></description>
			<language>en-us</language>
			<pubDate>Wed, 08 Sep 2010 18:39:12 -0700</pubDate>
			<lastBuildDate>Sun, 16 May 2010 17:50:00 -0700</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>justin.w.carter@gmail.com</managingEditor>
			<webMaster>justin.w.carter@gmail.com</webMaster>
			
			<item>
				<title>CFML proposal: XML and CFML tag literals for cfscript (C4X)</title>
				<link>http://www.madfellas.com/blog/index.cfm/2010/5/16/CFML-proposal-XML-and-CFML-tag-literals-for-cfscript-C4X</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;&lt;em style=&quot;font-size: 95%;&quot;&gt;&lt;font color=&quot;#777&quot;&gt;This is a feature proposal for the CFML standard and for ColdFusion 10. It&apos;s reasonably long  so you might want to grab a coffee or a cold drink before settling in for the ride. You can&apos;t say I didn&apos;t warn you :)&lt;br&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Almost a year ago &lt;a href=&quot;http://corfield.org/&quot;&gt;Sean Corfield&lt;/a&gt; called for comments to &lt;a href=&quot;http://corfield.org/blog/post.cfm/Help_the_CFML_Advisory_Committee&quot;&gt;help the CFML Advisory Committee&lt;/a&gt; decide on how some parts of cfscript should be implemented in future versions of ColdFusion. Full script based components were mostly under control, the only real sticking point was how to handle the script equivalent of nested CFML tags that also include body text - such as cfmail, cfquery and custom tags - which I&apos;ll call the &quot;problem tags&quot;. A month later, after reviewing the 145 replies in the discussion, Sean made his &lt;a href=&quot;http://corfield.org/entry/Help_the_Committee__Summary&quot;&gt;recommendation to the committee&lt;/a&gt; to introduce a set of objects for the &quot;problem tags&quot;. The use of objects was a logical, straight forward solution which would not introduce any new syntax and would therefore have no direct impact on the learning curve of the language or on the compiler(s). It was definitely the right step for bringing the capabilities of cfscript into line with the capabilities of CFML tags.&lt;/p&gt; &lt;p&gt;ColdFusion 9 was released in October 2009 and brought with it the much desired enhancements to cfscript, including full script based components, implicit getters and setters, many of the missing functions that developers have typically created UDF wrappers for, script equivalents of newly introduced tags, and the new &quot;problem tag&quot; objects which Adobe called &lt;a href=&quot;http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSe9cbe5cf462523a0693d5dae123bcd28f6d-8000.html&quot;&gt;script functions implemented as CFCs&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;The CFML Advisory Committee and Adobe have finally brought cfscript up to the point where, in most cases, there is no need to chop and change between script and tag based approaches because the majority of code can now be written successfully either way. Which brings us to today...&lt;br&gt;&lt;/p&gt; &lt;h3&gt;Can cfscript be further improved?&lt;/h3&gt; &lt;p&gt;At the moment cfscript is in good shape but I think most developers would agree that there are still things that could be done to improve our productivity and help with code readability and maintenance.&lt;/p&gt; &lt;p&gt;There are some CFML tags that still do not have script equivalents such as &lt;a href=&quot;http://www.clearcrystalmedia.com/pm/full-cfscript-cfcs-not-where-they-need-to-be/&quot;&gt;cffeed and cfldap&lt;/a&gt; (as noted by &lt;a href=&quot;http://www.clearcrystalmedia.com/pm/&quot;&gt;Chris Peters&lt;/a&gt; in his post on &lt;a href=&quot;http://www.clearcrystalmedia.com/pm/full-cfscript-cfcs-not-where-they-need-to-be/&quot;&gt;Full script CFCs aren&apos;t yet where they need to be&lt;/a&gt;), cfcontent, cfheader, cfschedule and &lt;a href=&quot;http://www.mail-archive.com/cf-talk@houseoffusion.com/msg343977.html&quot;&gt;cfsetting&lt;/a&gt;. We could continue to write UDF and CFC wrappers for these tags but of course it would be nicer if the language specification and vendors had clear rules about providing a consistent implementation for all tags and their equivalent functions or objects. Consistency and coverage are important.&lt;/p&gt; &lt;p&gt;There are also some things about the script functions implemented as CFCs which are not quite optimal. For tags like cfmail and cfquery the script equivalent tends to be slightly more verbose than the tag based approach - which in itself isn&apos;t a problem, more like a potential target for optimisation. &lt;a href=&quot;http://www.bennadel.com/blog/&quot;&gt;Ben Nadel&lt;/a&gt; has also found a couple of issues* with the Query.cfc implementation, one of which is a bug in the &lt;a href=&quot;http://www.bennadel.com/blog/1678-Learning-ColdFusion-9-Using-CFQuery-And-Other-Service-Tags-In-CFScript.htm&quot;&gt;parsing of named parameters&lt;/a&gt; and the other which can potentially expose a &lt;a href=&quot;http://www.bennadel.com/blog/1680-Learning-ColdFusion-9-Using-CFQuery-In-CFScript-Can-Enable-SQL-Injection-Attacks.htm&quot;&gt;SQL injection vulnerability&lt;/a&gt; that wouldn&apos;t exist when using the cfquery tag. Ben does note that this is only a problem &quot;when you are using horrible SQL to begin with&quot; but you could say that any code which exposes a vulnerability is horrible. Ben also concluded that some of the &lt;a href=&quot;http://www.bennadel.com/blog/1663-Learning-ColdFusion-9-CFScript-Updates-For-Tag-Operators.htm&quot;&gt;cfscript &quot;tag operators&quot; are inconsistent&lt;/a&gt; in the way they are implemented (with/without named arguments, with/without parenthesis, etc). So there may be some opportunities for improvement in this area. (*Please note: one or both of the above Query.cfc issues may have been addressed after the RC or Gold release of CF9 but I have so far been unable to confirm it).&lt;/p&gt; &lt;p&gt;Finally, cfscript doesn&apos;t yet attempt to tackle support for custom tags. The main reason for this, and any tags which use body text and nested tags, is that trying to morph the syntax into something that looks like script - and yet will actually work - is difficult. Sean was the first to admit this, and it became evident after many attempts that there isn&apos;t really a nice &quot;scripty looking&quot; way to do it. &lt;a href=&quot;http://blog.newatlanta.com/&quot;&gt;Vince Bonfanti&lt;/a&gt; says that we shouldn&apos;t even try to solve the problem, and that we should &lt;a href=&quot;http://blog.newatlanta.com/index.cfm/2009/7/10/Thoughts-on-CFML-tags-CFSCRIPT-Custom-Tags-and-the-CFML2009-specification&quot;&gt;ban the use of cfcomponent and cffunction tags&lt;/a&gt; and the writeOutput() function as soon as is feasible. Personally I couldn&apos;t disagree more. Banning tag based CFCs is pretty extreme, but there is also nothing wrong with allowing developers the flexibility to build something the way they want to build it - after all that is what we&apos;ve been fighting for in regards to cfscript! Let&apos;s leave the choice of syntactic optimisation up to the developers and not dictate it in the language. (As a side note, Railo supports &lt;a href=&quot;http://www.railo.ch/blog/index.cfm/2009/6/2/CFCbased-Custom-Tags-by-Example--Part-1&quot;&gt;component based custom tags&lt;/a&gt; which I think are also quite exciting for CFML and cfscript).&lt;/p&gt; &lt;p&gt;Overall these issues aren&apos;t show stoppers though and I&apos;m sure the tag to script coverage will push further towards 100% in future releases. &lt;/p&gt; &lt;p&gt;However, there is one more important issue to recognise with the balance of tags versus script. &lt;strong&gt;You can use cfscript anywhere you like within a tag based component or page, but you cannot use CFML tags within a script based component. &lt;/strong&gt;You might ask, &quot;Why would you want to do that anyway?&quot; Well, the answer, as I alluded to above, is simply: flexibility.&lt;/p&gt; &lt;h3&gt;What is cfscript for XML (C4X)?&lt;/h3&gt; &lt;p&gt;If you are not familiar with ECMAScript for XML have a quick read of the &lt;a href=&quot;http://en.wikipedia.org/wiki/ECMAScript_for_XML&quot;&gt;E4X entry on Wikipedia&lt;/a&gt;. There are a couple of ways that the addition of E4X-style syntax could benefit CFML so I want to describe them in incremental steps. I&apos;ll call this concept C4X meaning &quot;cfscript for XML&quot;.&lt;/p&gt; &lt;p&gt;The idea of having something like C4X in cfscript is not mine. I saw it first mentioned by &lt;a href=&quot;http://rickosborne.org/blog/&quot;&gt;Rick Osborne&lt;/a&gt; in Sean&apos;s call for comments where it received some good support by a number of people. Rick then went on to expand on his ideas in a blog entry titled &lt;a href=&quot;http://rickosborne.org/blog/index.php/2009/05/19/cf9-e4x-c4x/&quot;&gt;CF9 + E4X + C4X&lt;/a&gt;. Even more interesting is that 3 months prior he had &lt;a href=&quot;http://rickosborne.org/blog/index.php/2009/02/05/cfscript-v2-as-told-by-jeff-atwood/&quot;&gt;already suggested&lt;/a&gt; that cfscript should have E4X-like support (and commented that it was already too late to get it into CF9):&lt;/p&gt; &lt;blockquote style=&quot;padding: 5px 5px 5px 25px; font-weight: bold;&quot;&gt; &lt;p&gt;&lt;font color=&quot;#999&quot;&gt;&quot;There&apos;s no way we&apos;re going to see something E4X-like with XML fragments built into CF9. If we scream loud enough we &lt;em&gt;might&lt;/em&gt; see it in CF10. Maybe.&quot; -- Rick Osborne&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;This is my attempt to get the conversation going again, and if enough people are interested then we can all &quot;scream&quot; together. So, on to the actual examples...&lt;br&gt;&lt;/p&gt; &lt;h3&gt;XML literals&lt;/h3&gt; &lt;p&gt;The first and most obvious benefit of C4X is the ability to declare XML literals. When XML is treated as a primitive type it means you could assign a chunk of XML directly to a variable, i.e. there is no need to create a string and then use the xmlParse() function to parse it into an XML object. &lt;/p&gt; &lt;p style=&quot;font-weight: bold;&quot;&gt;Creating an XML object in cfscript &lt;em&gt;without&lt;/em&gt; C4X:&lt;/p&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;person = xmlParse(&quot;&amp;lt;person&amp;gt;
  &amp;lt;firstname&amp;gt;Ben&amp;lt;/firstname&amp;gt;
  &amp;lt;lastname&amp;gt;Forta&amp;lt;/lastname&amp;gt;
&amp;lt;/person&amp;gt;&quot;);&lt;/pre&gt;
&lt;p style=&quot;font-weight: bold;&quot;&gt;Creating an XML object in cfscript &lt;span style=&quot;text-decoration: underline;&quot;&gt;with C4X&lt;/span&gt;:&lt;/p&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;person = &amp;lt;person&amp;gt;
  &amp;lt;firstname&amp;gt;Ben&amp;lt;/firstname&amp;gt;
  &amp;lt;lastname&amp;gt;Forta&amp;lt;/lastname&amp;gt;
&amp;lt;/person&amp;gt;;&lt;/pre&gt;
&lt;p&gt;This is the most basic example and as you can see it saves a dozen keystrokes and makes the code slightly cleaner and easier to read. It&apos;s not ground breaking but it&apos;s an improvement. &lt;/p&gt;
&lt;p&gt;XML literals would also support variable / statement evaluation and could be useful for working with XML-compliant chunks of HTML. You could build fragments of HTML from a data set and then do further processing on them as XML (using the existing functions of the language) - something which would be difficult to do with strings - before finally using / rendering them.&lt;/p&gt;
&lt;p style=&quot;font-weight: bold;&quot;&gt;Creating an XML-compliant HTML fragment including variable evaluations &lt;span style=&quot;text-decoration: underline;&quot;&gt;with C4X&lt;/span&gt;:&lt;/p&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;article = &amp;lt;div class=&quot;article&quot;&amp;gt;
  &amp;lt;h2&amp;gt;#qArticle.title#&amp;lt;/h2&amp;gt;
  &amp;lt;p&amp;gt;#qArticle.teaser#&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;;&lt;/pre&gt;
&lt;p&gt;A full E4X-style implementation would also include filtering, manipulation via operators (e.g. using + for appending nodes) and a bunch of other stuff, but at this stage I am a little hesitant to suggest taking it that far (though this is up for debate). The main thing I wanted to do was explain XML literals and their benefits so that I could introduce the next C4X concept.&lt;/p&gt;
&lt;h3&gt;CFML tag literals&lt;/h3&gt;
&lt;p&gt;This is where we get to the meat of the proposal. C4X could overcome some of the issues raised above by allowing us to write declarative code where it makes the most sense: when dealing with nested CFML tags and tag body text. I&apos;m not sure that &quot;tag literals&quot; is the right term but I&apos;ll run with it.&lt;/p&gt;
&lt;p&gt;Since the cfquery and cfmail (and other) tags now have a script equivalent in CF9 we can begin to look at ways in which our cfscript code can be further enhanced. I&apos;ll demonstrate this by showing CF9&apos;s script version followed by the proposed C4X version.&lt;/p&gt;
&lt;p style=&quot;font-weight: bold;&quot;&gt;Executing a query in cfscript &lt;em&gt;without&lt;/em&gt; C4X:&lt;/p&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;qry = new Query(datasource=&quot;myDSN&quot;);
qry.setSql = &quot;SELECT * FROM users&quot;;
qUsers = qry.execute().getResult();&lt;/pre&gt;
&lt;p style=&quot;font-weight: bold;&quot;&gt;Executing a query in cfscript &lt;span style=&quot;text-decoration: underline;&quot;&gt;with C4X&lt;/span&gt;:&lt;/p&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;qUsers = &amp;lt;cfquery datasource=&quot;myDSN&quot;&amp;gt;
  SELECT * FROM users
&amp;lt;/cfquery&amp;gt;;&lt;/pre&gt;
&lt;p&gt;The first thing you&apos;ll notice is how tidy the C4X version is, at around 70% of the keystrokes of the script equivalent. The second thing is that the (usually required) name attribute is omitted from the cfquery tag because the assignment implies that the cfquery tag will assign the resultant query object directly to the qUsers variable. This implied attribute assignment could also work for all other tags that typically have a name or result attribute (note: since it&apos;s not quite consistent across all the built-in tags the actual attribute name will vary from tag to tag - I haven&apos;t done a full analysis but in most cases the implied attribute should be a single, obvious attribute).&lt;/p&gt;
&lt;p&gt;So those query examples were pretty trivial. Let&apos;s beef it up a little with some logic and a parameterised value.&lt;/p&gt;
&lt;p style=&quot;font-weight: bold;&quot;&gt;Executing a query in cfscript &lt;em&gt;without&lt;/em&gt; C4X:&lt;/p&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;function getUsers(userID=&quot;0&quot;) { 
  var qry = new Query(datasource=&quot;myDSN&quot;);
  var sql = &quot;SELECT * FROM users&quot;;
  if (arguments.userID neq 0) {
    sql += &quot; WHERE userID = :userID&quot;;
    qry.addParam(name=&quot;userID&quot;, value=arguments.userID, cfsqltype=&quot;cf_sql_integer&quot;);
  }
  qry.setSQL(sql);
  var qUsers = qry.execute().getResult();
  return qUsers;
}&lt;/pre&gt;
&lt;p style=&quot;font-weight: bold;&quot;&gt;Executing a query in cfscript &lt;span style=&quot;text-decoration: underline;&quot;&gt;with C4X&lt;/span&gt;:&lt;/p&gt;
&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;function getUsers(userID=&quot;0&quot;) { 
  var qUsers = &amp;lt;cfquery datasource=&quot;myDSN&quot;&amp;gt;
    SELECT * FROM users
    &amp;lt;cfif arguments.userID neq 0&amp;gt;
      WHERE userID = &amp;lt;cfqueryparam name=&quot;userID&quot; value=&quot;#arguments.userID#&quot; cfsqltype=&quot;cf_sql_integer&quot;&amp;gt;
    &amp;lt;/cfif&amp;gt;
  &amp;lt;/cfquery&amp;gt;;
  return qUsers;
}&lt;/pre&gt;
&lt;p&gt;With the slightly more complex query the C4X example is around 80% of the keystrokes of the script equivalent and a couple of lines of code shorter. I think at this point it&apos;s becoming clearer how workable this solution could be.&lt;/p&gt;
&lt;p&gt;So which tags could be used as a CFML tag literal? Pretty much any CFML tag except for flow control tags I think. If it&apos;s a tag that &quot;returns&quot; a value like cfquery then definitely. If it&apos;s a tag that just does some processing and doesn&apos;t return anything then there&apos;s no reason it couldn&apos;t return &quot;true&quot; if no exceptions were thrown. If it&apos;s a tag that outputs something to the response stream then the output could either be assigned to the variable or we could use the cfsavecontent tag as a wrapper to capture it (the latter would probably be better).&lt;/p&gt;
&lt;h3&gt;How does a compiler handle C4X?&lt;/h3&gt;
&lt;p&gt;I don&apos;t think C4X is a difficult thing for a compiler to deal with. If the root node is a CFML tag (or a custom tag) then it&apos;s clearly a block of CFML code. Otherwise, it&apos;s assumed that it&apos;s a chunk of XML that could contain some variables or statements that need to be evaluated, and invalid XML should throw a compile time error. And, obviously, for this to work the XML or CFML literal would have to have a single root node / tag.&lt;/p&gt;
&lt;p&gt;Internally, CFML engines may choose to treat XML literals as a subclass of their existing XML classes if that provides some benefit during compilation or for any future additions to C4X (such as full E4X-style filtering syntax and other operations, if they were deemed feasible; again, I&apos;m still on the fence). I don&apos;t know enough about how the engines work under the hood to make any further suggestions here though.&lt;/p&gt;
&lt;p&gt;One more consideration is how do IDE&apos;s handle C4X? Well, if an IDE can handle E4X&apos;s XML literals then C4X support should be somewhere in the same ball park, and so I&apos;d be hopeful that it&apos;s within the realm of possibility for the IDEs that we use today.&lt;/p&gt;
&lt;h3&gt;Final thoughts&lt;/h3&gt;
&lt;p&gt;Personally I think it only takes a glance to see that C4X could be quite nice to work with, and the beauty of it is that it&apos;s not the only way to write the code - if you want to use a purely object based scripting solution then you can, because it already exists. On top of that, this is just the same as existing code that we have always had to write in CFML, just used in a new way (with a variable name, assignment operator and a semi-colon - definitely not rocket science!). There is barely any learning curve at all.&lt;/p&gt;
&lt;p&gt;I&apos;d be very interested to hear the thoughts of the ColdFusion community, staff/members of the CFML Advisory Committee, Adobe, Railo and OpenBD, and especially from those who thought E4X-style syntax was a bad idea 12 months ago. Now that a pure, object based solution exists, is there room for an improvement like C4X, and if not is there a better reason than &quot;I just don&apos;t like tags inside script&quot;, even though in most cases the code could be considered cleaner and easier to read?&lt;/p&gt;
&lt;p&gt;I think C4X could be another step in the right direction for CFML. Let us know what you think!&lt;/p&gt;
&lt;style type=&quot;text/css&quot;&gt;
.body p a { font-weight: normal; }
&lt;/style&gt;&lt;/p&gt; 
				</description>
				
				<category>CFML</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sun, 16 May 2010 17:50:00 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2010/5/16/CFML-proposal-XML-and-CFML-tag-literals-for-cfscript-C4X</guid>
				
			</item>
			
			<item>
				<title>ColdExt RC 1 released!</title>
				<link>http://www.madfellas.com/blog/index.cfm/2009/3/7/ColdExt-RC-1-released</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;Now up on RIAForge is the &lt;a href=&quot;http://coldext.riaforge.org&quot;&gt;first Release Candidate of ColdExt&lt;/a&gt;. ColdExt is a ColdFusion tag library which makes it easier to build rich user interfaces using the amazing &lt;a href=&quot;http://extjs.com/&quot;&gt;Ext JS&lt;/a&gt; library. ColdExt supports multiple CFML engines including CFMX 7, CF8, Railo 3.0.1 and OpenBD 1.0.&lt;/p&gt; &lt;p&gt;This release provides support for ExtJS 2.2.1 plus 6 new demos and 2 new user extensions - fileUploadField and gridSearch.&lt;/p&gt; &lt;p&gt;The main enhancement in RC 1 is to allow the JS and CSS resources for User Extensions to be loaded up front on the calling page, meaning that UX components can now be used in remote pages loaded via Ajax. This can be configured on the onReady tag using the uxLoad attribute, by specifying a comma delimited list of the extensions to load (based on the folder name of the extension in the /ext/ux folder) or by specifying &quot;all&quot; to load the resources for all extensions. For e.g.&lt;/p&gt; &lt;p style=&quot;padding-left: 2em; font-family: consolas, monaco, courier new, courier; color: #aaa&quot;&gt;&amp;lt;ext:onReady loadingMask=&quot;true&quot; uxLoad=&quot;all&quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;Check out the &lt;a href=&quot;http://www.madfellas.com/docs/&quot;&gt;latest demos&lt;/a&gt; for a bit more of a taste of ColdExt, and be sure to view the source of each demo to see how easy ColdExt is to implement.&lt;/p&gt;
 &lt;p&gt;&lt;br&gt;&lt;a href=&quot;http://www.madfellas.com/docs/&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;coldext-rc-1&quot; border=&quot;0&quot; alt=&quot;coldext-rc-1&quot; src=&quot;http://www.madfellas.com/blog/enclosures/coldext-rc-1_3.jpg&quot; width=&quot;536&quot; height=&quot;376&quot;&gt;&lt;/a&gt; &lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;In other news, &lt;a href=&quot;http://www.objectiveaction.com/Kevin/index.cfm/Ext-JS&quot;&gt;Kevin Roche wrote a nice series of blog posts&lt;/a&gt; on ColdExt back in December documenting some of the issues he faced in implementing some components. ColdExt also got a mention in &lt;a href=&quot;http://cfhour.com/detail.cfm?entry=AE2A5605-9622-2978-8F1B2E3AECE12ABC&quot;&gt;Episode 2 of the CF Hour podcast&lt;/a&gt; by Dave Ferguson and and Michael Sean Becker &#xe2;¬&quot; cheers guys :)&lt;/p&gt; &lt;p&gt;Also be sure to mark your calendars for April 14-16 2009 as the first ever &lt;a href=&quot;http://extjs.com/conference/&quot;&gt;Ext Conference&lt;/a&gt; will see the release of Ext JS 3.0! Expect a ColdExt release to follow during April.&lt;/p&gt; &lt;p&gt;&lt;br&gt;If you have any feedback or feature requests for ColdExt please get in touch by leaving a comment here, using the contact form on the &lt;a href=&quot;http://coldext.riaforge.org&quot;&gt;ColdExt project page&lt;/a&gt; or emailing me directly (my email address is in the readme.txt file in the downloadable zip!) &lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>ColdExt</category>				
				
				<category>Ext</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sat, 07 Mar 2009 09:45:00 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2009/3/7/ColdExt-RC-1-released</guid>
				
			</item>
			
			<item>
				<title>Running CF7 and CF8 Services with a batch file menu</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/12/21/Running-CF7-and-CF8-Services-with-a-batch-file-menu</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;As a follow up to my previous post on &lt;a href=&quot;http://www.madfellas.com/blog/index.cfm/2008/12/21/Running-CF7-and-CF8-simultaneously-on-IIS7&quot;&gt;Running CF7 and CF8 simultaneously on IIS7&lt;/a&gt; I thought I would share the batch file I use to manage the starting and stopping of the ColdFusion services and some other tips. Note that this mostly Vista specific stuff, including the batch file itself (it uses the &apos;choice&apos; command which is different in Vista compared to previous versions of Windows).&lt;/p&gt; &lt;p&gt;When running both CF7 and CF8 on the same development machine I generally set all the services to Manual start-up and set only one of the ColdFusion Application Server services to Automatic (Delayed Start). Delayed Start is a new option in Vista that aims to keep your system snappier at boot up, so any services that are set to Delayed Start won&apos;t be started immediately during the boot process and will instead execute later when other services have had time to start and finish using time-critical resources.&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;img border=&quot;0&quot; alt=&quot;cf-services&quot; src=&quot;http://www.madfellas.com/blog/enclosures/cf-services_8d877761-a6d6-44a4-a97a-c46b6376e26f.png&quot; width=&quot;443&quot; height=&quot;175&quot;&gt; &lt;/p&gt; &lt;p&gt;&lt;br&gt;To manage the starting and stopping of the ColdFusion services I wrote a simple batch file that has a menu for selecting which service you want to start or stop. If you save the batch file as User\Documents\scripts\cf.bat it is easy to have quick access to the file by hitting the windows key and typing &apos;cf.bat&apos;. You can then right click on the file and choose &quot;Run as administrator&quot; so that the process will have permission to start and stop services.&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;img border=&quot;0&quot; alt=&quot;cf-batch-file&quot; src=&quot;http://www.madfellas.com/blog/enclosures/cf-batch-file_c7f23638-5b69-40c1-8096-a7ad33c73b78.png&quot; width=&quot;301&quot; height=&quot;163&quot;&gt; &lt;/p&gt; &lt;p&gt;&lt;br&gt;When the script is running you will be presented with a simple, straight forward menu.&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;img border=&quot;0&quot; alt=&quot;cf-service-menu&quot; src=&quot;http://www.madfellas.com/blog/enclosures/cf-service-menu_bef27bc7-1a12-4cb6-9dce-be04c98cd84f.png&quot; width=&quot;395&quot; height=&quot;177&quot;&gt; &lt;/p&gt; &lt;p&gt;&lt;br&gt;Below is the full script if you would like to use it. It could be customised to add any other services you might want to start and stop such as MS SQL Server, MySQL, PostgreSQL, IIS, Apache, etc. Note: use the &quot;view plain&quot; or &quot;copy to clipboard&quot; links to easily copy the code, paste into Notepad, and save as cf.bat.&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;@echo off
REM ColdFusion Services helper batch file, by Justin Carter
REM http://www.madfellas.com
REM 
REM This script is provided as is, with no warranty of any kind.
REM Use at your own risk :)
 
:menu
echo.
echo. 1) Start ColdFusion 8
echo. 2) Stop ColdFusion 8
echo.
echo. 3) Start ColdFusion MX 7
echo. 4) Stop ColdFusion MX 7
echo.
echo. Q) Quit
 
echo.
choice /c 1234Q /n /m &quot; Choose a menu option:&quot;
echo.
 
if Errorlevel 5 goto quit
if Errorlevel 4 goto stopcf7
if Errorlevel 3 goto startcf7
if Errorlevel 2 goto stopcf8
if Errorlevel 1 goto startcf8
goto quit
 
:startcf8
echo.
net start &quot;ColdFusion 8 Application Server&quot;
REM net start &quot;ColdFusion 8 .NET Service&quot;
REM net start &quot;ColdFusion 8 ODBC Agent&quot;
REM net start &quot;ColdFusion 8 ODBC Server&quot;
REM net start &quot;ColdFusion 8 Search Server&quot;
cls
echo.
echo. ColdFusion 8 Services started
echo.
goto menu
 
:stopcf8
echo.
net stop &quot;ColdFusion 8 Application Server&quot;
net stop &quot;ColdFusion 8 .NET Service&quot;
net stop &quot;ColdFusion 8 ODBC Agent&quot;
net stop &quot;ColdFusion 8 ODBC Server&quot;
net stop &quot;ColdFusion 8 Search Server&quot;
cls
echo.
echo. ColdFusion 8 Services stopped.
echo.
goto menu
 
:startcf7
echo.
net start &quot;ColdFusion MX 7 Application Server&quot;
REM net start &quot;ColdFusion MX 7 ODBC Agent&quot;
REM net start &quot;ColdFusion MX 7 ODBC Server&quot;
REM net start &quot;ColdFusion MX 7 Search Server&quot;
cls
echo.
echo. ColdFusion MX 7 Services started.
echo.
goto menu
 
:stopcf7
echo.
net stop &quot;ColdFusion MX 7 Application Server&quot;
net stop &quot;ColdFusion MX 7 ODBC Agent&quot;
net stop &quot;ColdFusion MX 7 ODBC Server&quot;
net stop &quot;ColdFusion MX 7 Search Server&quot;
cls
echo.
echo. ColdFusion MX 7 Services stopped.
echo.
goto menu
 
:quit&lt;/pre&gt;&lt;/p&gt; 
				</description>
				
				<category>Vista</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sun, 21 Dec 2008 11:33:00 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/12/21/Running-CF7-and-CF8-Services-with-a-batch-file-menu</guid>
				
			</item>
			
			<item>
				<title>Running CF7 and CF8 simultaneously on IIS7</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/12/21/Running-CF7-and-CF8-simultaneously-on-IIS7</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;Recently I started work at a new job in London and found myself needing to do some local development with CFMX7 while still keeping my existing CF8 installation available for local development as well. One option &amp;mdash; which is what I did initially to get up and running quickly &amp;mdash; was to run CFMX7 in stand-alone mode using the built-in web server, but eventually I needed to be able to switch between multiple projects (web roots) easily because I could be working on more than one project at a time.&lt;/p&gt; &lt;p&gt;Since we use IIS in our production environments it makes sense to use it in a development environment as well, rather than playing with Apache or another web server, and I also wanted to keep everything under a single web server instance so that I didn&apos;t have to worry about fiddling with port numbers and and multiple web server services. Thankfully IIS7 makes per-web site configuration really easy with it&apos;s web.config files, as you will see below.&lt;/p&gt; &lt;h3&gt;Installation&lt;/h3&gt; &lt;p&gt;I started with an existing CF8 installation that was originally set up to apply to all IIS web sites. I also store all my data on D: and so the the CFIDE and CFDOCS folders for CF8 were initially installed to D:\inetpub\wwwroot.&lt;/p&gt; &lt;p&gt;When it came time to install CF7 I chose to install it in server mode using the built-in web server. This places the CFIDE and CFDOCS folders for CF7 in C:\CFusionMX7\wwwroot, so you won&apos;t have to worry about overwriting the CF8 files.&lt;/p&gt; &lt;h3&gt;ColdFusion Configuration&lt;/h3&gt; &lt;p&gt;To allow IIS to talk to ColdFusion we need to make sure the &lt;strong&gt;JRunProxyService&lt;/strong&gt; isn&apos;t deactivated which you can do by editing C:\CFusionMX7\runtime\servers\coldfusion\SERVER-INF\jrun.xml. To do this just follow the &lt;em&gt;first&lt;/em&gt; step in the Adobe TechNote titled &lt;a href=&quot;http://www.adobe.com/go/tn_19575&quot;&gt;ColdFusion MX: Manually configuring the web server connector for ColdFusion MX Standalone&lt;/a&gt;. This simply changes the deactivated value from true to false. (You can also use this opportunity to deactivate the JRun built-in web server by editing the same flag just above in the &lt;strong&gt;WebServer&lt;/strong&gt; service config).&lt;/p&gt; &lt;p&gt;Next we need to make sure the web connector DLL&apos;s and configuration files are available. These files won&apos;t have been installed and/or created when we chose to use the built-in web server so we will have to extract and configure them manually. We could follow the rest of the above TechNote to get up and running, but it has been summarised much better (and specifically for IIS7) on page 6 of a Community MX article called &lt;a href=&quot;http://www.communitymx.com/content/article.cfm?page=6&amp;amp;cid=224AA&quot;&gt;Getting ColdFusion MX 7.0.2 Running on Vista and IIS&lt;/a&gt;. Following steps 1 to 7 you will extract the IIS related DLL files from C:\CFusionMX7\runtime\lib\wsconfig.jar and create two configuration files to go with them. Give the ColdFusion MX 7 Application Server service a restart now for good measure.&lt;/p&gt; &lt;h3&gt;IIS7 Configuration&lt;/h3&gt; &lt;p&gt;In IIS Manager create a new web site as you would normally, with a new web root and using host headers to differentiate between web sites (e.g. create the site in D:\inetpub\cfmx7, give it the host header cfmx7.local and edit your hosts file to alias 127.0.0.1 as cfmx7.local).&lt;/p&gt; &lt;p&gt;The new site will be created with the Handler Mappings from the top level web server configuration which will be pointing to the CF8 files (meaning if you were creating a new site using CF8 then it would be ready to go without any configuration). To get this site to work with CF7 we just need to change each of the ColdFusion-related mappings to use the web connector that we just extracted and configured above.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;br&gt;&lt;img border=&quot;0&quot; alt=&quot;IIS7 Handler Mappings for ColdFusion MX 7&quot; src=&quot;http://www.madfellas.com/blog/enclosures/iis7-handler-mappings_8efedeb2-5e61-4f64-bc67-742eb9a9e4fd.png&quot; width=&quot;620&quot; height=&quot;341&quot;&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;Select the newly created site in the site tree, double-click on the Handler Mappings icon, and set the executable for each CF-related mapping to C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll. The most important ones will be the wildcard (*), *.cfm(l), *.cfc and *.cfr, though it only takes a few seconds to configure the other 4 or 5 while you&apos;re at it.&lt;/p&gt; &lt;p&gt;That should be it, you will now have an IIS7 site running CFMX7! Create a new .cfm file and use &amp;lt;cfdump var=&quot;#server#&quot;&amp;gt; to confirm :)&lt;/p&gt; &lt;h3&gt;Creating additional CF7 sites&lt;/h3&gt; &lt;p&gt;The beauty of IIS7 is that site-specific configuration is written to an XML file in your web root called web.config. This means no more stuffing around with the IIS metabase as in IIS6, and the benefit we get here is that you can keep a copy of this file (like a &quot;template&quot;) and then next time you create a new web site that will use CF7, simple copy and paste the file into the web root and you are ready to rock without any additional configuration! This is what my own web.config file looks like: &lt;/p&gt; &lt;p&gt;&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;configuration&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;system.webServer&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;handlers&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;remove name=&quot;AboMapperCustom-75808&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;remove name=&quot;AboMapperCustom-75807&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;remove name=&quot;AboMapperCustom-75806&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;remove name=&quot;AboMapperCustom-75805&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;remove name=&quot;AboMapperCustom-75804&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;remove name=&quot;AboMapperCustom-75803&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;remove name=&quot;AboMapperCustom-75802&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;remove name=&quot;AboMapperCustom-75801&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;remove name=&quot;AboMapperCustom-75800&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name=&quot;AboMapperCustom-75800&quot; path=&quot;*&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll&quot; resourceType=&quot;Unspecified&quot; requireAccess=&quot;None&quot; responseBufferLimit=&quot;0&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name=&quot;AboMapperCustom-75801&quot; path=&quot;*.jsp&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll&quot; resourceType=&quot;Unspecified&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name=&quot;AboMapperCustom-75802&quot; path=&quot;*.jws&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll&quot; resourceType=&quot;Unspecified&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name=&quot;AboMapperCustom-75803&quot; path=&quot;*.cfm&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll&quot; resourceType=&quot;Unspecified&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name=&quot;AboMapperCustom-75804&quot; path=&quot;*.cfml&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll&quot; resourceType=&quot;Unspecified&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name=&quot;AboMapperCustom-75805&quot; path=&quot;*.cfc&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll&quot; resourceType=&quot;Unspecified&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name=&quot;AboMapperCustom-75806&quot; path=&quot;*.cfr&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll&quot; resourceType=&quot;Unspecified&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name=&quot;AboMapperCustom-75807&quot; path=&quot;*.cfswf&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll&quot; resourceType=&quot;Unspecified&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name=&quot;AboMapperCustom-75808&quot; path=&quot;*.mxml&quot; verb=&quot;*&quot; modules=&quot;IsapiModule&quot; scriptProcessor=&quot;C:\CFusionMX7\runtime\lib\wsconfig\1\jrun_iis6_wildcard.dll&quot; resourceType=&quot;Unspecified&quot; requireAccess=&quot;Script&quot; responseBufferLimit=&quot;0&quot; /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/handlers&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;
&lt;p&gt;&lt;br&gt;Though I haven&apos;t tested it, you could probably use a similar procedure for older releases of CF such as CFMX 6.1, or maybe even future versions such as CF9 ;)&lt;/p&gt;
&lt;p&gt;Happy configuring!&lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>IIS</category>				
				
				<category>Vista</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sun, 21 Dec 2008 09:08:00 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/12/21/Running-CF7-and-CF8-simultaneously-on-IIS7</guid>
				
			</item>
			
			<item>
				<title>Blog redesign, Twittering, OS X and more...</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/12/6/Blog-redesign-Twittering-OS-X-and-more</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;About a week or so ago I gave my blog &lt;em&gt;another&lt;/em&gt; redesign :D This time I&apos;ve gone a bit more minimalist by using just a couple of gradients and some old-school pixelated design elements for the logo and edge of the content area. In my search for an image to go in the header I thought of using the CF logo somehow but didn&apos;t quite know what to put with it; then I stumbled on Kai Koenig&apos;s &quot;&lt;a href=&quot;http://flickr.com/photos/grmblzmpf/3036751201/&quot;&gt;coolest CF t-shirt ever&lt;/a&gt;&quot; photo on Flickr featuring the (slightly modified) CF dude from the &lt;a href=&quot;http://hello.eboy.com/eboy/2008/02/25/poster-for-adobe-air-launch/&quot;&gt;AIR Launch Party poster&lt;/a&gt; by eboy. &amp;lt;boratVoice&amp;gt;Great success!&amp;lt;/boratVoice&amp;gt;&lt;/p&gt; &lt;p&gt;Next, I&apos;ve begun using &lt;a href=&quot;http://twitter.com&quot;&gt;Twitter&lt;/a&gt; on a regular basis now and you can see my last few messages on the madfellas home page or &lt;a href=&quot;http://twitter.com/justincarter&quot;&gt;follow me&lt;/a&gt; if you&apos;re also using Twitter. I&apos;ll mostly be twittering about CF and tech related topics with the usual funny web stuff thrown in. At the moment I&apos;m using the &lt;a href=&quot;http://www.tweetdeck.com&quot;&gt;TweetDeck&lt;/a&gt; client and I&apos;m finding it quite good.&lt;/p&gt; &lt;p&gt;Over the course of the weekend I&apos;ll be playing around with setting up my development environment in OS X along with replacements for my frequently used Windows apps. So far everything is going well and the only things I am really missing are a Windows Media Player 11 which I&apos;m replacing with VLC, and Windows Live Writer which I am running (and composing this blog entry with) using VMware Fusion&apos;s Unity feature :)&lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;img style=&quot;border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px&quot; height=&quot;300&quot; alt=&quot;os-x-live-writer&quot; src=&quot;http://www.madfellas.com/blog/enclosures/os-x-live-writer_7.png&quot; width=&quot;480&quot; border=&quot;0&quot;&gt; &lt;/p&gt; &lt;p&gt;&lt;br&gt;I&apos;ve also got a few updates to make to &lt;a href=&quot;http://coldext.riaforge.org&quot;&gt;ColdExt&lt;/a&gt; in regard to user extensions and some other new features to investigate.&lt;/p&gt; &lt;p&gt;And last but not least... I&apos;ll finally be starting work in London next week! More on that to follow later ;)&lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>ColdExt</category>				
				
				<category>General</category>				
				
				<category>Cool Stuff</category>				
				
				<category>London</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sat, 06 Dec 2008 13:27:00 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/12/6/Blog-redesign-Twittering-OS-X-and-more</guid>
				
			</item>
			
			<item>
				<title>Rolling with a new design, settling in to London life</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/11/6/Rolling-with-a-new-design-settling-in-to-London-life</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;It&apos;s been almost a year since I&apos;ve given madfellas.com a redesign so I&apos;ve rolled in a bit of grungy stuff while still keeping a similar colour scheme and layout. I&apos;ve used a large background image with a gradient on purpose so that I can switch it out easily, at any time, to change the mood of the site. It&apos;s not exactly a designer-quality layout, but hey, it&apos;s not bad for a nights work :)&lt;/p&gt; &lt;p&gt;We&apos;re all settled in to our new place in Shepherds Bush (yes, yes, I know, that&apos;s where all the Aussies live!) and have had a relatively quiet week; except for the couple of times we have been to the new Shepherds Bush Westfield shopping centre, that place is nuts!&lt;/p&gt; &lt;p&gt;My girlfriend &lt;a href=&quot;http://www.ayartee.com&quot;&gt;Monique&lt;/a&gt; is finding it a bit tough on the web design job front, even though she has a nice &lt;a href=&quot;http://www.ayartee.com/portfolio.pdf&quot;&gt;portfolio&lt;/a&gt; and plenty of experience. On the CF job front it&apos;s pretty quiet too but I&apos;m hoping to get some good news before the end of the week about possible interviews - fingers crossed. We&apos;ll see how things go for us in the coming days/weeks.&lt;/p&gt; &lt;p&gt;I&apos;m also off to the &lt;a href=&quot;http://www.ukcfug.org&quot;&gt;UKCFUG&lt;/a&gt; tonight which should be cool. It&apos;ll be the first CFUG meeting that I&apos;ve had the opportunity to attend, and hopefully not the last :) Maybe I&apos;ll see you there...&lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>General</category>				
				
				<category>London</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 06 Nov 2008 10:20:40 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/11/6/Rolling-with-a-new-design-settling-in-to-London-life</guid>
				
			</item>
			
			<item>
				<title>ColdExt Beta 3: Lots of Ext JS goodness!</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/10/27/ColdExt-Beta-3-Lots-of-Ext-JS-goodness</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;Quite a lot has happened in this release of ColdExt, but I&apos;ll try to keep things as short and sweet... If that&apos;s possible :)&lt;/p&gt; &lt;p&gt;If you haven&apos;t heard of ColdExt before you are probably wondering what it is. ColdExt is a ColdFusion tag library which makes it easier to build rich user interfaces using the amazing &lt;a href=&quot;http://extjs.com&quot;&gt;Ext JS&lt;/a&gt; library. ColdFusion 8 has built-in support for some of the features of Ext JS 1.1, but the idea behind ColdExt is to stay up to date with the current Ext JS release (currently version 2.2) while providing support for as many UI components as possible, and to support CFMX7 as well as other CFML engines (more on this below).&lt;/p&gt; &lt;p&gt;I had originally planned to get Beta 3 out the door much sooner, but after reviewing the small amount of code generation I was doing I thought I should take it a step further. The result is that almost 75% of the ColdExt tags are being generated from a set of easy to update metadata (courtesy of some data scraping). In the event of a new version of Ext JS being released (as was the case with Ext JS 2.2) I can update existing tags with modified attributes or help text, across the whole library, in minutes instead of hours. This also makes it much easier to add new tags to support new components, which is fairly evident from the tag counts in this release (see below).&lt;/p&gt; &lt;p&gt;Making an appearance in Beta 3 is support for User Extensions which live in the new &quot;ux&quot; tag namespace, i.e. &amp;lt;ux:tagName&amp;gt;. The first wave of supported extensions include Grid Filters, Grid Group Summary, Grid Panel Resizer, Grid Row Expander, Grid Row Actions and Portals. If you&apos;re after support for a particular extension please put a request on the &lt;a href=&quot;http://coldext.riaforge.org/index.cfm?event=page.forums&quot;&gt;ColdExt forums&lt;/a&gt; and I&apos;ll see what I can do.&lt;/p&gt; &lt;p&gt;&lt;br&gt;The changes to ColdExt Beta 3 in a nutshell:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Supports Ext JS 2.2  &lt;li&gt;12 new Ext core tags, 11 new User Extension tags (supporting 6 extensions) and 11 new Demos &lt;li&gt;Support for new UI components such as Checkbox and Radio Groups, Date Picker (different to Date Field), Label, Progress Bar and Status Bar &lt;li&gt;Support for User Extensions such as Grid Filters, Grid Group Summary, Grid Panel Resizer, Grid Row Expander, Grid Row Actions and Portals &lt;li&gt;75% of the tags built by code generation, improving consistency and reliability  &lt;li&gt;The &amp;lt;ext:init&amp;gt; tag is now implicit in the &amp;lt;ext:onReady&amp;gt; tag and so is no longer required on every page, however it is still useful for page-level settings such as turning on ext-all-debug.js with the debug attribute&amp;nbsp; &lt;li&gt;New loadingMask boolean attribute on the &amp;lt;ext:onReady&amp;gt; tag to enable a loading indicator while the page and resources load  &lt;li&gt;New passThrough attribute on all tags to allow insertion of arbitrary JSON-formatted data (including potentially unimplemented Ext config properties) directly into Ext components for greater flexibility  &lt;li&gt;New attributeCollection attribute on all tags to support passing a ColdFusion Struct into the tag as attribute config data  &lt;li&gt;All string type attributes formatted with JSStringFormat() to avoid JavaScript errors  &lt;li&gt;Updated ColdExt XML dictionary for CFEclipse tag insight&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;br&gt;Also, good news on the CFML engine compatibility front is that ColdExt is now supported on &lt;a href=&quot;http://www.railo.ch&quot;&gt;Railo&lt;/a&gt; 3.0.0.008. The latest version on the Railo site is still 3.0.0.005 but you can update to the latest preview release by following the &lt;a href=&quot;http://preview.railo.ch/patch-preview-en.pdf&quot;&gt;preview patch instructions&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Unfortunately there is no &lt;a href=&quot;http://www.openbluedragon.org/&quot;&gt;OpenBD&lt;/a&gt; support just yet as there is &lt;a href=&quot;http://code.google.com/p/openbluedragon/issues/detail?id=53&quot;&gt;a bug with nested custom tags&lt;/a&gt; that I&apos;m waiting on a fix for, but hopefully ColdExt will be supported on all major CFML engines soon. Feel the love :)&lt;/p&gt; &lt;p&gt;So without further ado, download ColdExt Beta 3 and see the demos in action!&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://coldext.riaforge.org/&quot;&gt;Download ColdExt Beta 3 from RIAForge&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.madfellas.com/docs&quot;&gt;View the ColdExt Beta 3 Demos&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;br&gt;P.S. I moved to London last week and I&apos;ll be attending the &lt;a href=&quot;http://www.ukcfug.org/&quot;&gt;UKCFUG&lt;/a&gt; meeting on 6th November, so feel free to say &quot;Hi&quot; if you see me because I don&apos;t know any CF&apos;ers in London yet :) Happily I&apos;ve found a great room to rent which I&apos;ll be moving into on Sunday with my girlfriend, so now the big challenge is to find a job at a time where the world&apos;s economy is in rather poor shape. Fingers crossed...&lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>ColdExt</category>				
				
				<category>Ext</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Mon, 27 Oct 2008 10:36:00 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/10/27/ColdExt-Beta-3-Lots-of-Ext-JS-goodness</guid>
				
			</item>
			
			<item>
				<title>Moving to London, looking for excitement!</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/10/16/Moving-to-London-looking-for-excitement</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;The time has finally arrived... In 4 days time I&apos;ll be riding the tube and roaming the streets of London looking for somewhere to live and somewhere to work! And hopefully the excitement will follow :)&lt;/p&gt; &lt;p&gt;Since I&apos;m travelling with my girlfriend &lt;a href=&quot;http://www.ayartee.com&quot;&gt;Monique&lt;/a&gt; we decided London would be the best place for us to quickly find accommodation and both get jobs. There are a number of other cities in the UK we would have liked to try but it&apos;s really difficult to get the timing of things right when you don&apos;t have family or friends there to help get you off the ground. Having a permanent address is incredibly important for applying for bank accounts and NI numbers, so we really have to be there to get things organised, and time is money!&lt;/p&gt; &lt;p&gt;The house share situation in London seems to be pretty good (when viewed from afar, at least). On &lt;a href=&quot;http://www.gumtree.com/&quot;&gt;Gumtree&lt;/a&gt; there are dozens of flats going up each day within our price range and in Zones 1 and 2, and to increase our chances of finding a place quickly we&apos;re also going to a &lt;a href=&quot;http://www.speedflatmating.co.uk/speed-flatmating-moreinfo.pl?event_id=172&quot;&gt;Speed Flatmating&lt;/a&gt; event next Thursday. Yes, it is what it sounds like, you get to meet heaps of people that are looking for flat mates or looking for a flat, so it should be fun.&lt;/p&gt; &lt;p&gt;As always when looking for developer jobs you come across some &lt;a href=&quot;http://www.thefreedictionary.com/doozies&quot;&gt;doozies&lt;/a&gt; that you can&apos;t help but laugh at. I found one that name-dropped ColdFusion (along side PHP), and then proceeded to list a bunch of technologies that would be required - some which didn&apos;t make much sense in context, and &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_3.0&quot;&gt;one in particular&lt;/a&gt; that hasn&apos;t really been defined or experienced by anybody yet:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&quot;Additional coding - PHP, MySQL, SQL, JavaScript, LAMP, Apache, Coldfusion, &lt;strong&gt;software&lt;/strong&gt;, &lt;strong&gt;applications&lt;/strong&gt;, &lt;strong&gt;web&lt;/strong&gt;, SQL Server, Linux, UNIX, Ajax, JQuery, RSS, JSON, Web 2.0, &lt;strong&gt;Web 3.0&lt;/strong&gt;&quot;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Classic...&lt;/p&gt; &lt;p&gt;On the ColdFusion side of things there seems to be quite a few permanent/full-time jobs going in London but not too many contract jobs. We want to spend around 6 months working in London so that we can travel again next summer to see some more of the world, which kind of counts the full-time jobs out (and technically I don&apos;t think you&apos;re supposed to work in a &quot;permanent&quot; position on a UK Working Holiday Visa).&lt;/p&gt; &lt;p&gt;I&apos;ve just put &lt;a href=&quot;http://www.madfellas.com/resume.pdf&quot;&gt;my CV&lt;/a&gt; online so I guess I&apos;ll see if I get any bites from recruitment agencies. I should also say that I&apos;d really appreciate any tips if a suitable CF Developer position pops up in the near future (my email address is on my CV), and likewise &lt;a href=&quot;http://www.ayartee.com&quot;&gt;Monique&lt;/a&gt; is looking for Web Design work :) But enough of the self promotion.&lt;/p&gt; &lt;p&gt;One of the best things about moving to London will just be getting back into some kind of normal routine. After travelling for 6 months I&apos;ve realised I miss sleeping at regular times and being able to cook nice healthy meals every night (not to mention relaxing with some Xbox 360 games!). I&apos;m also looking forward to being able to attend &lt;a href=&quot;http://www.ukcfug.org/&quot;&gt;CFUG meetings&lt;/a&gt; and other ColdFusion related events since I didn&apos;t have the opportunity to do so in Australia. I&apos;m disappointed that I will miss out on seeing &lt;a href=&quot;http://www.porcupinetree.com/&quot;&gt;Porcupine Tree&lt;/a&gt; play at the O2 Arena this weekend though, I just missed it by a few days!&lt;/p&gt; &lt;p&gt;So, just a few more sleeps to go - I hope everything fits in our suitcases :)&lt;/p&gt; &lt;p&gt;&lt;br&gt;P.S. &lt;a href=&quot;http://coldext.riaforge.org/&quot;&gt;ColdExt&lt;/a&gt; Beta 3 will be released very soon...&lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>ColdExt</category>				
				
				<category>General</category>				
				
				<category>London</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 16 Oct 2008 21:09:07 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/10/16/Moving-to-London-looking-for-excitement</guid>
				
			</item>
			
			<item>
				<title>ColdExt Wiki and Getting Started Tutorial</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/3/27/ColdExt-Wiki-and-Getting-Started-Tutorial</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;Having a bunch of custom tags and an XML dictionary for CFEclipse is one thing, but knowing how to use them is another! So last night I began working on every developer&apos;s favourite task... documentation :P&lt;/p&gt; &lt;p&gt;The &lt;a href=&quot;http://coldext.riaforge.org/wiki/index.cfm&quot;&gt;ColdExt Wiki&lt;/a&gt; is now enabled on RIAForge and I have started out with baby steps by writing a &lt;a href=&quot;http://coldext.riaforge.org/wiki/index.cfm/Getting_Started_Tutorial&quot;&gt;Getting Started Tutorial&lt;/a&gt; which covers the absolute basic requirements of getting up and running with ColdExt.&lt;/p&gt; &lt;p&gt;I have a number of pages and tutorials planned for the wiki (some of which I have already made notes of on the wiki home page) and will get around to adding them as soon as I can. If anyone would like to help out with documentation (rofl!) or start a discussion about what documentation is needed the &lt;a href=&quot;http://coldext.riaforge.org/index.cfm?event=page.forums&quot;&gt;ColdExt Forums&lt;/a&gt; could be a good place to do it. I am open to suggestions!&lt;/p&gt; &lt;p&gt;The next release of ColdExt will very much be about better documentation and demos, in addition to more tags and enhancements of course :)&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;em&gt;P.S. Does anybody know if it&apos;s possible to turn off WikiTerms on RIAForge? At the least I think a special token like __NOTERMS__ would be very useful.&lt;/em&gt;&lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>ColdExt</category>				
				
				<category>Ext</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 27 Mar 2008 09:13:45 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/3/27/ColdExt-Wiki-and-Getting-Started-Tutorial</guid>
				
			</item>
			
			<item>
				<title>ColdExt Beta 1 with CFEclipse tag insight!</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/3/17/ColdExt-Beta-1-with-CFEclipse-tag-insight</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;I&apos;m fairly excited about this release because it has some really cool stuff in it :) I&apos;ve already dropped the biggest bombshell in the blog post title, which is support for tag insight in CFEclipse - very nice!, but there are a bunch of other nice updates and new features as well...&lt;/p&gt; &lt;p&gt;Changes at a glance include;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;7 new tags, 3 new grid demos  &lt;li&gt;90%+ of the tags have been updated with inline documentation  &lt;li&gt;EditorGridPanel provides support for editable grids (only supports input and comboBox fields at this time, more to come very soon)  &lt;li&gt;GroupingStore and GroupingView can now be used for grouping in both GridPanel and EditorGridPanel  &lt;li&gt;GridRowNumberer can be used as a numbered column in Grids (though it doesn&apos;t support paged grids - by design from the Ext Team) &lt;li&gt;New &amp;lt;ext:html&amp;gt; tag for including arbitrary chunks of HTML inside panels and forms  &lt;li&gt;Tags which don&apos;t require a closing tag will now work as a single tag without a trailing slash (partial support)  &lt;li&gt;Tags which require a closing tag will throw an error if the closing tag is missing (partial support)  &lt;li&gt;Initial implementation of attribute validation in some tags (starting with the panel tags to assist with rendering issues)  &lt;li&gt;Support for including the Ext debugging JS &lt;li&gt;The bundled version of CFJSON has been updated to the latest v1.9 &lt;li&gt;CFEclipse tag insight (/dictionary/coldext.xml)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;br&gt;&lt;a href=&quot;http://coldext.riaforge.org/&quot;&gt;Download ColdExt Beta 1 from RIAForge&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;Here are the new online demos:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://www.madfellas.com/demos/grid3.cfm&quot;&gt;Row Numbered JSON Grid with rowClick events&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://www.madfellas.com/demos/grid4.cfm&quot;&gt;JSON Grid with grouping and remote paging and sorting&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://www.madfellas.com/demos/grid5.cfm&quot;&gt;Editable JSON Grid with saving, remote paging and sorting&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;br&gt;I will refrain from posting screenshots and code listings of the demos this time round since you can download everything you need and view the working demos above (well, that and it&apos;s getting late here in Oz and I need some sleep!) :)&lt;/p&gt; &lt;p&gt;One thing you need to know though is how to set up the coldext.xml file to work in CFEclipse. Just browse to the &quot;plugins\org.cfeclipse.cfml_1.3.1.5\dictionary&quot; directory inside CFEclipse (your CFEclipse plugin version number may vary) and insert a copy of the ColdExt &quot;dictionary\coldext.xml&quot; file. Then in the same location, make a backup of the &quot;dictionaryconfig.xml&quot; (just in case) and then open it to make the following modification, inserting a single line to include the coldext.xml file:&lt;/p&gt; &lt;p&gt;&lt;font face=&quot;Courier New, monospace&quot; size=&quot;2&quot;&gt;&amp;lt;version key=&quot;cf8&quot; label=&quot;Coldfusion 8&quot;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;grammar location=&quot;cf8.xml&quot; /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;grammar location=&quot;user.xml&quot; /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;&lt;strong&gt;&amp;lt;grammar location=&quot;coldext.xml&quot; /&amp;gt;&lt;br&gt;&lt;/strong&gt;&amp;lt;/version&amp;gt;&lt;/font&gt;&lt;/font&gt;  &lt;p&gt;Give CFEclipse a restart and you should now be swinging with ColdExt tag insight!  &lt;p&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;137&quot; alt=&quot;coldext-tag-insight&quot; src=&quot;http://www.madfellas.com/blog/enclosures/coldext-tag-insight_3.jpg&quot; width=&quot;548&quot; border=&quot;0&quot;&gt;  &lt;p&gt;*Note that at this stage only the attributes for about 90% of the tags are documented, I haven&apos;t gotten around to inline help for the actual tags themselves just yet...&lt;/p&gt; &lt;p&gt;&lt;br&gt;If you have any feedback about this release feel free to post here in the comments or make use of the features on RIAForge:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://coldext.riaforge.org/index.cfm?event=page.forums&quot;&gt;ColdExt Forums&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://coldext.riaforge.org/index.cfm?event=page.issues&quot;&gt;ColdExt Issue Tracker&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://coldext.riaforge.org/index.cfm?event=page.projectcontact&quot;&gt;ColdExt Contact Form&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;All feedback, bug submissions, feature requests and comments are much appreciated :)&lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>ColdExt</category>				
				
				<category>Ext</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Mon, 17 Mar 2008 09:43:06 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/3/17/ColdExt-Beta-1-with-CFEclipse-tag-insight</guid>
				
			</item>
			
			<item>
				<title>ColdExt Alpha 2 release</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/2/21/ColdExt-Alpha-2-release</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;This release almost took me a couple of weeks to get out the door, and with 5 new tags and 13 updated/improved tags ColdExt is getting that little bit closer to being usable in the real world.&lt;/p&gt; &lt;p&gt;New tags include support for components such as accordions, tools with onclick handlers, tooltips, and xtemplates. The updated tags include better support for container layouts, tabs and treePanels. And there are 2 new demos to check out as well :) As usual, just extract the folders to your webroot to get up and running quickly.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://coldext.riaforge.org/&quot;&gt;Download ColdExt Alpha 2 from RIAForge&lt;/a&gt;&lt;/p&gt; &lt;p&gt;In this release the Ext files are no longer bundled so you will need to head over to the &lt;a href=&quot;http://extjs.com/download&quot;&gt;Ext JS Download page&lt;/a&gt;, grab the Ext 2.0.1 release and extract it to a temporary directory. Then in your webroot, where you have already placed the &quot;coldext&quot; and &quot;demos&quot; folders from the ColdExt Alpha 2 release, create a new folder called &quot;ext&quot;. As per the image below, into the new &quot;ext&quot; folder you just need to place a copy of &quot;ext-all.js&quot; (from the &quot;ext-2.0.1&quot; folder) and &quot;ext-base.js&quot; (from the &quot;ext-2.0.1\adapter\ext&quot; folder), and both the &quot;css&quot; and &quot;images&quot; folders (from the &quot;ext-2.0.1\resources&quot; folder), then you should be right to go.&lt;/p&gt; &lt;p&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;246&quot; alt=&quot;ColdExt folder structure&quot; src=&quot;http://www.madfellas.com/blog/enclosures/coldext-folders_3.jpg&quot; width=&quot;445&quot; border=&quot;0&quot;&gt; &lt;/p&gt; &lt;p&gt;The first new demo is the &lt;a href=&quot;http://www.madfellas.com/demos/accordion.cfm&quot;&gt;ColdExt Accordion demo&lt;/a&gt; which is a replica of the Accordion Window that is in the &lt;a href=&quot;http://extjs.com/deploy/dev/examples/desktop/desktop.html&quot;&gt;Ext Desktop&lt;/a&gt; demo (minus the minimize/maximize functionality).&lt;/p&gt; &lt;p&gt;Here is a screenshot of the accordion demo as it is rendered:&lt;/p&gt; &lt;p&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;427&quot; alt=&quot;coldext-accordion1&quot; src=&quot;http://www.madfellas.com/blog/enclosures/coldext-accordion1_3.jpg&quot; width=&quot;272&quot; border=&quot;0&quot;&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;And below is the main chunk of ColdExt code used to construct the accordion demo:&lt;/p&gt; &lt;p&gt;&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;&amp;lt;ext:init /&amp;gt;
&amp;lt;ext:onReady&amp;gt; 

    &amp;lt;ext:createChild renderTo=&quot;out&quot; tag=&quot;h1&quot;&amp;gt;ColdExt Example Accordion (Ext Replica)&amp;lt;/ext:createChild&amp;gt; 

    &amp;lt;ext:window var=&quot;myWindow&quot; title=&quot;Accordion Window&quot; layout=&quot;accordion&quot; iconCls=&quot;icon-accordion&quot;
                width=&quot;250&quot; height=&quot;400&quot; border=&quot;false&quot; resizable=&quot;true&quot; show=&quot;true&quot;&amp;gt;
        &amp;lt;ext:toolbar&amp;gt;
            &amp;lt;ext:toolbarButton icon=&quot;icons/fam/connect.gif&quot;&amp;gt;
                &amp;lt;ext:tooltip title=&quot;Rich Tooltips&quot; text=&quot;Let your users know what they can do!&quot; /&amp;gt;
            &amp;lt;/ext:toolbarButton&amp;gt;
            &amp;lt;ext:separator /&amp;gt;
            &amp;lt;ext:toolbarButton icon=&quot;icons/fam/user_add.gif&quot; tooltip=&quot;Add a new user&quot; /&amp;gt;
            &amp;lt;ext:toolbarButton icon=&quot;icons/fam/user_delete.gif&quot; tooltip=&quot;Remove the selected user&quot; /&amp;gt;
        &amp;lt;/ext:toolbar&amp;gt;
        &amp;lt;ext:treePanel id=&quot;myTree&quot; title=&quot;Online Users&quot; lines=&quot;false&quot; rootVisible=&quot;false&quot; margin=&quot;0 0 5 0&quot;&amp;gt;
            &amp;lt;ext:tool id=&quot;refresh&quot;&amp;gt;
                &amp;lt;ext:onclick&amp;gt;
                    var tree = Ext.getCmp(&apos;myTree&apos;);
                    tree.body.mask(&apos;Loading&apos;, &apos;x-mask-loading&apos;);
                    tree.root.reload();
                    tree.root.collapse(true, false);
                    setTimeout(function(){
                        tree.body.unmask();
                        tree.root.expand(true, true);
                    }, 1000);
                &amp;lt;/ext:onclick&amp;gt;
            &amp;lt;/ext:tool&amp;gt;
            &amp;lt;ext:rootNode&amp;gt;
                &amp;lt;ext:treeNode text=&quot;Friends&quot; expanded=&quot;true&quot;&amp;gt;
                    &amp;lt;ext:treeNode text=&quot;Jack&quot; iconCls=&quot;user&quot; /&amp;gt;
                    &amp;lt;ext:treeNode text=&quot;Brian&quot; iconCls=&quot;user&quot; /&amp;gt;
                    &amp;lt;ext:treeNode text=&quot;Jon&quot; iconCls=&quot;user&quot; /&amp;gt;
                    &amp;lt;ext:treeNode text=&quot;Tim&quot; iconCls=&quot;user&quot; /&amp;gt;
                    &amp;lt;ext:treeNode text=&quot;Nige&quot; iconCls=&quot;user&quot; /&amp;gt;
                    &amp;lt;ext:treeNode text=&quot;Fred&quot; iconCls=&quot;user&quot; /&amp;gt;
                    &amp;lt;ext:treeNode text=&quot;Bob&quot; iconCls=&quot;user&quot; /&amp;gt;
                &amp;lt;/ext:treeNode&amp;gt;
                &amp;lt;ext:treeNode text=&quot;Family&quot; expanded=&quot;true&quot;&amp;gt;
                    &amp;lt;ext:treeNode text=&quot;Kelly&quot; iconCls=&quot;female&quot; /&amp;gt;
                    &amp;lt;ext:treeNode text=&quot;Sarah&quot; iconCls=&quot;female&quot; /&amp;gt;
                    &amp;lt;ext:treeNode text=&quot;Zack&quot; iconCls=&quot;green&quot; /&amp;gt;
                    &amp;lt;ext:treeNode text=&quot;John&quot; iconCls=&quot;green&quot; /&amp;gt;
                &amp;lt;/ext:treeNode&amp;gt;
            &amp;lt;/ext:rootNode&amp;gt;
        &amp;lt;/ext:treePanel&amp;gt;
        &amp;lt;ext:panel title=&quot;Settings&quot;&amp;gt;
            Something useful would be in here.
        &amp;lt;/ext:panel&amp;gt;
        &amp;lt;ext:panel title=&quot;Even More Stuff&quot;&amp;gt;
            Something useful would be in here.
        &amp;lt;/ext:panel&amp;gt;
        &amp;lt;ext:panel title=&quot;My Stuff&quot;&amp;gt;
            Something useful would be in here.
        &amp;lt;/ext:panel&amp;gt;
    &amp;lt;/ext:window&amp;gt; 

&amp;lt;/ext:onReady&amp;gt;&lt;/pre&gt;&amp;nbsp; &lt;p&gt;&lt;/p&gt;
&lt;p&gt;Next up is the &lt;a href=&quot;http://www.madfellas.com/demos/combo1.cfm&quot;&gt;ColdExt Combobox demo&lt;/a&gt; which makes use of the XTemplate templating features that Ext provides. Templates are mostly used with the DataView component which the Combobox uses internally for rendering its list of items (note that I haven&apos;t yet implemented DataViews directly in ColdExt, they will be coming in the next release!). Not only can templates display simple data values but they can do logic, simple calculations and even implement member functions for more complex actions, as per the example below.&lt;/p&gt;
&lt;p&gt;Here is a screenshot of the Combobox and XTemplate in action, rendering some data side-by-side in a list:&lt;/p&gt;
&lt;p&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;351&quot; alt=&quot;coldext-combobox-template1&quot; src=&quot;http://www.madfellas.com/blog/enclosures/coldext-combobox-template1_3.jpg&quot; width=&quot;222&quot; border=&quot;0&quot;&gt; &lt;/p&gt;
&lt;p&gt;And below is the code used to produce the Combobox. Take special note of the XTemplate tag and the nested member function that is used in the template, it&apos;s a super powerful feature IMO.&lt;/p&gt;
&lt;p&gt;&lt;pre class=&quot;xml&quot; name=&quot;code&quot;&gt;&amp;lt;ext:init /&amp;gt;
&amp;lt;ext:onReady&amp;gt;

	&amp;lt;ext:createChild renderTo=&quot;out&quot; tag=&quot;h1&quot;&amp;gt;ColdExt Custom Example Combobox&amp;lt;/ext:createChild&amp;gt;

	&amp;lt;!--- coldext custom example - combobox ---&amp;gt;
	&amp;lt;ext:createChild renderTo=&quot;out&quot; tag=&quot;h2&quot;&amp;gt;Combobox 1 - XTemplate Example&amp;lt;/ext:createChild&amp;gt;

	&amp;lt;ext:jsonStore var=&quot;myJSON&quot; url=&quot;data.cfm&quot;&amp;gt;
		&amp;lt;ext:storeField name=&quot;id&quot; /&amp;gt;
		&amp;lt;ext:storeField name=&quot;country&quot; /&amp;gt;
	&amp;lt;/ext:jsonStore&amp;gt;

	&amp;lt;ext:formPanel border=&quot;false&quot; renderTo=&quot;out&quot;&amp;gt;
		&amp;lt;ext:comboBox name=&quot;country&quot; emptyText=&quot;Select a Country...&quot; hideLabel=&quot;true&quot;
				displayField=&quot;country&quot; valueField=&quot;id&quot; store=&quot;myJSON&quot;&amp;gt;
			&amp;lt;ext:xtemplate&amp;gt;
				&amp;lt;tpl for=&quot;.&quot;&amp;gt;&amp;lt;div class=&quot;x-combo-list-item&quot;&amp;gt;
					&amp;lt;span class=&quot;country&quot;&amp;gt;{country}&amp;lt;tpl if=&quot;this.isCode(&apos;KZ&apos;, id)&quot;&amp;gt;, very nice!&amp;lt;/tpl&amp;gt;&amp;lt;/span&amp;gt;
					&amp;lt;span class=&quot;code&quot;&amp;gt;{id}&amp;lt;/span&amp;gt;
				&amp;lt;/div&amp;gt;&amp;lt;/tpl&amp;gt;
				&amp;lt;ext:script&amp;gt;
					isCode: function(a, b){
						return a == b;
					}
				&amp;lt;/ext:script&amp;gt;
			&amp;lt;/ext:xtemplate&amp;gt;
		&amp;lt;/ext:combobox&amp;gt;
	&amp;lt;/ext:formPanel&amp;gt;

&amp;lt;/ext:onReady&amp;gt;&lt;/pre&gt;&amp;nbsp; &lt;p&gt;&lt;/p&gt;
&lt;p&gt;Anyway, that&apos;s about it for this release. If you have any questions, comments, feedback or feature requests please feel free to drop me a note in the comments.&lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>ColdExt</category>				
				
				<category>Ext</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 21 Feb 2008 09:36:16 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/2/21/ColdExt-Alpha-2-release</guid>
				
			</item>
			
			<item>
				<title>ColdExt Alpha 1b</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/2/8/ColdExt-Alpha-1b</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;I&apos;ve made a few updates to ColdExt during the week which I thought I would share now, since I&apos;ll be away for the weekend (a friends buck&apos;s weekend with some Paintball Skirmish action - and plenty of drinking no doubt!).&lt;/p&gt; &lt;p&gt;Some new tags include basic support for menus, trees, viewports and other various enhancements. Here are a few new live demos:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;http://madfellas.com/demos/menus1.cfm&quot; href=&quot;http://madfellas.com/demos/menus1.cfm&quot;&gt;http://madfellas.com/demos/menus1.cfm&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title=&quot;http://madfellas.com/demos/tree1.cfm&quot; href=&quot;http://madfellas.com/demos/tree1.cfm&quot;&gt;http://madfellas.com/demos/tree1.cfm&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title=&quot;http://madfellas.com/demos/viewport.cfm&quot; href=&quot;http://madfellas.com/demos/viewport.cfm&quot;&gt;http://madfellas.com/demos/viewport.cfm&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You can &lt;a href=&quot;http://coldext.riaforge.org/&quot;&gt;download ColdExt Alpha 1b from RIAForge&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;From the &lt;em&gt;next&lt;/em&gt; release onwards the Ext JS files will no longer be bundled so you will need to download them separately and drop them into your project.&lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>ColdExt</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 08 Feb 2008 02:12:22 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/2/8/ColdExt-Alpha-1b</guid>
				
			</item>
			
			<item>
				<title>ColdExt goals and future roadmap</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/2/4/ColdExt-goals-and-future-roadmap</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;I have a few clear goals that I am trying to achieve with ColdExt which will hopefully give you an idea of where I am coming from and where I am heading with development.&lt;/p&gt; &lt;p&gt;First of all, I want you to be able to drop ColdExt into a project without any hassles and without any configuration beyond an Application Name (although a small amount of configuration may be unavoidable for an existing Ext project).&lt;/p&gt; &lt;p&gt;Second, I want the ColdExt API to match the Ext API as closely as possible so that the Ext documentation is entirely relevant to using the ColdExt tags. I also want to retain the power and flexibility of Ext in it&apos;s entirety, not have ColdExt force you down some specific path for how your UI must be declared and rendered. For example many component tags should be able to be used stand-alone to simply create JavaScript objects that can be used (and reused) later on in the code; components shouldn&apos;t always have to be rendered immediately. (Note that this hasn&apos;t yet been achieved in the Alpha 1 release, everything is constructed by config objects at the moment).&lt;/p&gt; &lt;p&gt;Third, I want to provide some default configuration options that will set up the UI controls with consistent display properties Application-wide and allow you to customise these global defaults with your own values if you wish. This can just help to keep to keep your code a bit cleaner by letting you write less and repeat yourself less :) Of course, any global defaults can be overridden at the tag level.&lt;/p&gt; &lt;p&gt;The ultimate goal is to achieve near complete coverage of all Ext features and functionality, so that you don&apos;t have to drop back to pure JS to use the more complex or obscure features that Ext has to offer. The ColdExt tags should be useful for the vast majority of cases, and then for any hardcore client-side programming ColdExt can still wrap handlers, listeners and any other pieces of JavaScript.&lt;/p&gt; &lt;p&gt;For the road ahead I also have a few ideas that could make development with ColdExt quite interesting;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Built-in handlers for common client-side actions/events  &lt;li&gt;Support for ColdFusion Structs/Queries/JSON/XML/Objects(?) when applying values to FormPanel fields (and other types of forms)  &lt;li&gt;Form generation/scaffolding of some description (tags make this so much easier, it would be a PITA to do this directly with JS!)  &lt;li&gt;Code assistance in CFEclipse&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Anyway, if you have any comments or opinions on the direction I&apos;m taking I would like to hear them :)&lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>ColdExt</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Mon, 04 Feb 2008 23:18:59 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/2/4/ColdExt-goals-and-future-roadmap</guid>
				
			</item>
			
			<item>
				<title>ColdExt first alpha release on RIAForge</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/2/4/ColdExt-first-alpha-release-on-RIAForge</link>
				<description>
				
				&lt;p&gt;&lt;p&gt;Well, I&apos;ve finally got the ColdExt code into a clean enough and complete enough state to release something that is useful enough to be played with :) There are a number of things this release doesn&apos;t do, but it does handle form functionality well enough that you can use it to build reasonably rich forms, validate the input and POST form data back to the server. Just a taste of things to come I guess!&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://coldext.riaforge.org/&quot;&gt;Download ColdExt Alpha 1 from RIAForge&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ColdExt comes bundled with the latest &lt;a href=&quot;http://extjs.com/download&quot;&gt;Ext 2.0.1 release&lt;/a&gt; so you don&apos;t need to download it separately. Basically you can just drop the &quot;coldext&quot; and &quot;ext&quot; folders into your web root, set your Application Name in an application.cfc/cfm and start playing with it immediately.&lt;/p&gt; &lt;p&gt;At this stage the examples are very light (check the /demos folder), but if you are familiar with Ext or don&apos;t mind browsing the &lt;a href=&quot;http://extjs.com/deploy/dev/docs/&quot;&gt;Ext documentation&lt;/a&gt; and the &lt;a href=&quot;http://extjs.com/deploy/dev/examples/&quot;&gt;Ext examples&lt;/a&gt; then I&apos;m sure you will pick things up in no time (there are LOTS of attributes that can be used with each tag if you want to/need to).&lt;/p&gt; &lt;p&gt;I also have a couple of live demos up here:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title=&quot;http://madfellas.com/demos/forms1.cfm&quot; href=&quot;http://www.madfellas.com/demos/forms1.cfm&quot;&gt;http://www.madfellas.com/demos/forms1.cfm&lt;/a&gt;  &lt;li&gt;&lt;a title=&quot;http://madfellas.com/demos/forms1.cfm&quot; href=&quot;http://www.madfellas.com/demos/forms2.cfm&quot;&gt;http://www.madfellas.com/demos/forms2.cfm&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Keep your eyes peeled for more ColdExt related posts to follow shortly...&lt;/p&gt;&lt;/p&gt; 
				</description>
				
				<category>ColdExt</category>				
				
				<category>Ext</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Mon, 04 Feb 2008 19:40:44 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/2/4/ColdExt-first-alpha-release-on-RIAForge</guid>
				
			</item>
			
			<item>
				<title>ColdExt - an Ext JS tag library?</title>
				<link>http://www.madfellas.com/blog/index.cfm/2008/1/16/ColdExt--an-Ext-JS-tag-library</link>
				<description>
				
				&lt;p&gt;Over the last few months I&apos;ve been tinkering with Ext JS and the possibilities of a ColdFusion tag library to make development with Ext a little easier and quicker. I had originally started working with Ext 1.1, concentrating simply on Forms support, but put development on hold because I had heard Ext 2.0 was on the horizon. With it&apos;s release towards the end of 2007 I realised that the small amount of work I had already done wasn&apos;t compatible with the changes in Ext 2.0, and I was also short on time in the weeks leading up to Christmas.&lt;/p&gt;&lt;p&gt;Over the New Year&apos;s break I found myself with some spare hours and finally sat down to write a few tags. I thought I&apos;d try my hand at a Panel component, until I hit a bit of a roadblock with custom tag generated content and outputting to a variable inside a block of JavaScript output. After returning from my holiday (yeah I was coding on holiday, who does that?!) I came across a post by Dan Vega titled &lt;a href=&quot;http://www.danvega.org/blog/index.cfm/2008/1/6/Custom-Tag-JavaScript-Problem&quot;&gt;Custom Tag JavaScript problem&lt;/a&gt; mentioning the &lt;tt&gt;toScript&lt;/tt&gt; function, which was &lt;em&gt;exactly&lt;/em&gt; what I needed - thanks Dan! ;)&lt;/p&gt;&lt;p&gt;Since then I&apos;ve written about 25 custom tags to support various Ext components including; Button, ColumnLayout, DateField, FieldSet, FormPanel, HTMLEditor, Panel, TabPanel, TextField, TimeField, Toolbar, Toolbar.Button, Toolbar.Fill, Toolbar.Separator, and other helper tags to define global configuration of some default options, initialise the library, define form submission handlers for AJAX support, and more...&lt;/p&gt;&lt;p&gt;At this point I&apos;m considering what to do with the library, which I&apos;ve unimaginatively named &lt;strong&gt;ColdExt&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Back in early December 2007 when Brian Love released &lt;a href=&quot;http://blog.brianflove.com/articles/2007/12/04/cfgrid-without-cf8-ext-cfc&quot;&gt;Ext.cfc&lt;/a&gt; there was a bit of talk about a tag library which a number of us had seemingly been mulling over. My situation is that I need to start using some kind of UI library during February, and over the last couple of weeks I think the concept has proved to be feasible. My aim is to cover as many as components as I can but with as much flexibility as I can so that nothing will interfere with using Ext in the pure JS form that it was intended. As far as sharing the code goes I&apos;m more than happy to release it and/or set up a project on RIAForge if there is any interest. I&apos;ll save the discussion of the technical design aspects of the library for another post to follow though, because there are a few things that I would like to open up to comments :)&lt;/p&gt;&lt;p&gt;Anyway, here is a sneak peak of some screenshots and the code snippets that produce them:&lt;/p&gt;&lt;p&gt;
&lt;strong&gt;Initialising the library is as simple as:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;textarea name=&quot;code&quot; class=&quot;xml&quot; cols=&quot;60&quot; rows=&quot;3&quot;&gt;
&lt;cfimport prefix=&quot;ext&quot; taglib=&quot;coldext&quot;&gt;
&lt;ext:init /&gt;
&lt;/textarea&gt;&lt;/p&gt;&lt;p&gt;
&lt;strong&gt;To create and render a FormPanel that uses AJAX:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;textarea name=&quot;code&quot; class=&quot;xml&quot; cols=&quot;60&quot; rows=&quot;15&quot;&gt;
&lt;div id=&quot;out&quot;&gt;&lt;/div&gt;
 
&lt;ext:onReady&gt;
 
	&lt;ext:formPanel var=&quot;myForm&quot; title=&quot;Sample AJAX Form&quot; url=&quot;submit.cfm&quot; renderTo=&quot;out&quot;&gt;
		&lt;ext:toolbar position=&quot;top&quot;&gt;
			&lt;ext:toolbarButton text=&quot;Save Form&quot; icon=&quot;icon-save.gif&quot; handler=&quot;myHandler&quot; /&gt;
		&lt;/ext:toolbar&gt;
		&lt;ext:input name=&quot;firstName&quot; required=&quot;true&quot; /&gt;
		&lt;ext:input name=&quot;lastName&quot; /&gt;
		&lt;ext:input name=&quot;company&quot; /&gt;
		&lt;ext:input name=&quot;email&quot; /&gt;
		&lt;ext:dateField name=&quot;date&quot; /&gt;
		&lt;ext:timeField name=&quot;time&quot; /&gt;
	&lt;/ext:formPanel&gt;
 
	&lt;ext:handler name=&quot;myHandler&quot; action=&quot;submit&quot; form=&quot;myForm&quot; /&gt;
 
&lt;/ext:onReady&gt;
&lt;/textarea&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;... which produces this working form:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/blog/images/upload/coldext-ajax-form.png&quot; /&gt;&lt;/p&gt;&lt;p&gt;
&lt;strong&gt;A replica of a slightly more complex layout from the Ext &lt;a href=&quot;http://extjs.com/deploy/dev/examples/form/dynamic.html&quot;&gt;Example Dynamic Forms&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;textarea name=&quot;code&quot; class=&quot;xml&quot; cols=&quot;60&quot; rows=&quot;30&quot;&gt;
	&lt;ext:formPanel title=&quot;Inner Tabs&quot; width=&quot;600&quot; labelAlign=&quot;top&quot; renderTo=&quot;out&quot;&gt;
		&lt;ext:columns&gt;
			&lt;ext:column width=&quot;0.5&quot;&gt;
				&lt;ext:input name=&quot;firstName&quot; anchor=&quot;95%&quot; /&gt;
				&lt;ext:input name=&quot;lastName&quot; anchor=&quot;95%&quot; /&gt;
			&lt;/ext:column&gt;
			&lt;ext:column width=&quot;0.5&quot;&gt;
				&lt;ext:input name=&quot;company&quot; anchor=&quot;95%&quot; /&gt;
				&lt;ext:input name=&quot;email&quot; anchor=&quot;95%&quot; /&gt;
			&lt;/ext:column&gt;
		&lt;/ext:columns&gt;
		&lt;ext:tabPanel height=&quot;235&quot;&gt;
			&lt;ext:tab title=&quot;Personal Details&quot; width=&quot;230&quot;&gt;
				&lt;ext:input name=&quot;firstName&quot; /&gt;
				&lt;ext:input name=&quot;lastName&quot; /&gt;
				&lt;ext:input name=&quot;company&quot; /&gt;
				&lt;ext:input name=&quot;email&quot; /&gt;
			&lt;/ext:tab&gt;
			&lt;ext:tab title=&quot;Phone Numbers&quot; width=&quot;230&quot;&gt;
				&lt;ext:input name=&quot;home&quot; /&gt;
				&lt;ext:input name=&quot;business&quot; /&gt;
				&lt;ext:input name=&quot;mobile&quot; /&gt;
				&lt;ext:input name=&quot;fax&quot; /&gt;
			&lt;/ext:tab&gt;
			&lt;ext:tab title=&quot;Biography&quot; layout=&quot;fit&quot;&gt;
				&lt;ext:htmlEditor label=&quot;Rich Text&quot; /&gt;
			&lt;/ext:tab&gt;
		&lt;/ext:tabPanel&gt;
		&lt;ext:buttons&gt;
			&lt;ext:button text=&quot;Save&quot; /&gt;
			&lt;ext:button text=&quot;Cancel&quot; /&gt;
		&lt;/ext:buttons&gt;
	&lt;/ext:formPanel&gt;
&lt;/textarea&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;... which produces:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;/blog/images/upload/coldext-example-form.png&quot; /&gt;&lt;/p&gt;&lt;p&gt;
So there you have it! As I said I&apos;ll write another post to discuss how I&apos;ve designed the library so far, and I&apos;ll see if I can put some working examples up by the end of the week. Please feel free to give me your thoughts on what I&apos;ve shown so far :)&lt;/p&gt; 
				</description>
				
				<category>Ext</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 16 Jan 2008 20:45:00 -0700</pubDate>
				<guid>http://www.madfellas.com/blog/index.cfm/2008/1/16/ColdExt--an-Ext-JS-tag-library</guid>
				
			</item>
			</channel></rss>