<?xml version="1.0" encoding="utf-8"?>

			<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">

			<channel>
			<title>ColdFusioning</title>
			<link>http://www.coldfusioning.com/index.cfm</link>
			<description>My personal blog about ColdFusion, code, Adobe, Google, &amp; computers...</description>
			<language>en-us</language>
			<pubDate>Fri, 18 May 2012 14:16:46 -0400</pubDate>
			<lastBuildDate>Wed, 01 Feb 2012 11:54:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>james@gulftobaytech.com</managingEditor>
			<webMaster>james@gulftobaytech.com</webMaster>
			<itunes:subtitle></itunes:subtitle>
			<itunes:summary></itunes:summary>
			<itunes:category text="Technology" />
			<itunes:category text="Technology">
				<itunes:category text="Podcasting" />
			</itunes:category>
			<itunes:category text="Technology">
				<itunes:category text="Tech News" />
			</itunes:category>
			<itunes:keywords></itunes:keywords>
			<itunes:author></itunes:author>
			<itunes:owner>
				<itunes:email>james@gulftobaytech.com</itunes:email>
				<itunes:name></itunes:name>
			</itunes:owner>
			
			<itunes:explicit>no</itunes:explicit>
			
			<item>
				<title>Backbone.js 0.9.0 Released</title>
				<link>http://www.coldfusioning.com/index.cfm/2012/2/1/Backbonejs-090-Released</link>
				<description>
				
				Yesterday, &lt;a href=&quot;http://documentcloud.github.com/backbone/&quot;&gt;Backbone.js 0.9.0&lt;/a&gt; was released.  If you&apos;d like to know what changed, you can view &lt;a href=&quot;http://documentcloud.github.com/backbone/#changelog&quot;&gt;the Changelog&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;
NOTE:  You must use &lt;a href=&quot;http://documentcloud.github.com/underscore/&quot;&gt;Underscore.js&lt;/a&gt; &gt; 1.3.1 with this Backbone.js update
&lt;br /&gt;&lt;br /&gt;
I just dropped the new library into &lt;a href=&quot;http://tv.adobe.com/&quot;&gt;my favorite video&lt;/a&gt; website and ran our client-side unit tests.  It did not go well.  It looks like there will be some work done before implementing this release.  Around half of the tests failed.
&lt;br /&gt;&lt;br /&gt;
This new version looks like a great update and it is exciting that Backbone.js is nearing a 1.0 release.  However, this isn&apos;t a minor upgrade and it is not backwards compatible. 
				</description>
				
				<category>JavaScript</category>
				
				<pubDate>Wed, 01 Feb 2012 11:54:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2012/2/1/Backbonejs-090-Released</guid>
				
				
			</item>
			
			<item>
				<title>Adobe Max 2011 and Responsive CSS</title>
				<link>http://www.coldfusioning.com/index.cfm/2011/10/21/Adobe-Max-2011-and-Responsive-CSS</link>
				<description>
				
				Earlier this month, I attended Adobe Max 2011.  It was a great conference and I highly recommend anybody who is considering attending to sign-up as soon as possible.

While on the cross-country flight out to Los Angeles, I saw post on Twitter that once of the pre-conference instructors was stuck in Europe and wouldn&apos;t be able to make it in time for his class.  The class was &quot;Adobe ColdFusion and Modern Web Front Ends&quot; and a request was posted for a substitute teacher.  Naturally, since I work with Adobe ColdFusion and modern web front ends everyday, I volunteered to teach the class (finding out later it was a 7 hour class :)  ).  I was sent the presentation and class materials on the plane and dove in.

The next morning, we explained the situation to the class and they were very understanding.  We went through the course material throughout the day and, except for one ColdFusion bug in the demo code, everything went really smoothly.  The class was amazing and asked great questions.  

As promised, below is a list of links we reviewed in the class:

&lt;strong&gt;Responsive CSS Examples&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://meltmedia.com/&quot;&gt;http://meltmedia.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.kayakcapers.co.uk/&quot;&gt;http://www.kayakcapers.co.uk/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://2011.dconstruct.org/&quot;&gt;http://2011.dconstruct.org/&lt;/a&gt;&lt;br /&gt;

&lt;strong&gt;Fluid Images&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://unstoppablerobotninja.com/entry/fluid-images/&quot;&gt;http://unstoppablerobotninja.com/entry/fluid-images/&lt;/a&gt;&lt;br /&gt;

&lt;strong&gt;Browser Tools&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://resizemybrowser.com/&quot;&gt;http://resizemybrowser.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://mattkersley.com/responsive/&apos;&gt;http://mattkersley.com/responsive/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot; http://jeremypalford.com/arch-journal/responsive-web-design-sketch-sheets&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;HTML5 Resources&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://html5boilerplate.com&quot;&gt;http://html5boilerplate.com&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.modernizr.com/&quot;&gt;http://www.modernizr.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://diveinto.html5doctor.com/&quot;&gt;http://diveinto.html5doctor.com/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://stuffandnonsense.co.uk/projects/320andup/&quot;&gt;http://stuffandnonsense.co.uk/projects/320andup/&lt;/a&gt;&lt;br /&gt;

If anybody has an questions from the class or any of the material covered, please let me know. 
				</description>
				
				<category>ColdFusion</category>
				
				<category>Adobe</category>
				
				<pubDate>Fri, 21 Oct 2011 11:09:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2011/10/21/Adobe-Max-2011-and-Responsive-CSS</guid>
				
				
			</item>
			
			<item>
				<title>Building Lightning Fast Mobile &amp; Desktop Web Applications Presentation</title>
				<link>http://www.coldfusioning.com/index.cfm/2011/9/17/Building-Lightning-Fast-Mobile--Desktop-Web-Applications-Presentation</link>
				<description>
				
				I gave a presentation at NCDevCon 2011 on &quot;Building Lightning Fast Mobile &amp; Desktop Web Applications&quot;.  If you missed the presentation, they have posted the presentation online!  You can view it anytime but it does require Microsoft Silverlight:  &lt;a href=&quot;http://textiles.online.ncsu.edu/online/Viewer/?peid=338b3dad14034e199a20395d142fe44c1d&quot;&gt;View Online&lt;/a&gt;

Though the slides are in the video, if you don&apos;t have Silverlight installed, I&apos;m including the slides in a PDF.  Also, the presentation description is:

In this session we are going to explore different techniques and methods to speed up your mobile and desktop web applications and websites. Consumers and end-users have come to expect pages to load quickly and be responsive. Research shows that our brains can perceive time around 100 millisecond intervals and those intervals can add up if you have bottlenecks in your page load times or the responsiveness of the pages is poor once they are loaded. We are going to look at techniques you will be able to implement immediately to speed up both the actual and perceived experience of your site. This session will cover both server and client-side technologies. We will explore desktop and mobile use-cases and demonstrate various tools you can use today. This session will utilize ColdFusion and Backbone.js but concepts will apply to all web applications. 
				</description>
				
				<category>Programming</category>
				
				<category>JavaScript</category>
				
				<pubDate>Sat, 17 Sep 2011 19:14:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2011/9/17/Building-Lightning-Fast-Mobile--Desktop-Web-Applications-Presentation</guid>
				
				
				<enclosure url="http://www.coldfusioning.com/enclosures/Lightning Fast - NCDevCon.pdf" length="6290487" type="application/pdf"/>
				
			</item>
			
			<item>
				<title>I&apos;m speaking at NCDevCon 2011!</title>
				<link>http://www.coldfusioning.com/index.cfm/2011/8/4/Im-speaking-at-NCDevCon-2011</link>
				<description>
				
				I am very honored to have been selected to speak at NCDevCon 2011!  The event is September 17-18th, 2011.  If you&apos;d like to come hear me (or &lt;a href=&quot;http://www.ncdevcon.com/post.cfm/ncdevcon-2011-speaker-topic-list&quot;&gt;these other great speakers&lt;/a&gt; ) be sure not to miss this event.  My topic is &quot;Building lightning fast mobile &amp; desktop web applications&quot;.  We&apos;ll be exploring different techniques to build extremely fast and responsive web applications.  We&apos;ll also look at Backbone.js and using it to build Single Page Web Applications (SPWA).  

If there is anything specific you&apos;d like me to address or specifically speak on, either related to &apos;lightning  fast mobile &amp; desktop web applications&quot; or Backbone.js specifically, let me know in the comments below.

See you in Raleigh, NC on September 17 - 18, 2011!

&lt;a href=&quot;http://www.ncdevcon.com/&quot;&gt;&lt;img src=&quot;http://www.coldfusioning.com/images/posts/NCDevCon.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt; 
				</description>
				
				<category>ColdFusion</category>
				
				<category>JavaScript</category>
				
				<pubDate>Thu, 04 Aug 2011 13:29:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2011/8/4/Im-speaking-at-NCDevCon-2011</guid>
				
				
			</item>
			
			<item>
				<title>Mobile Development QA Setup</title>
				<link>http://www.coldfusioning.com/index.cfm/2011/7/1/Mobile-Development-QA-Setup</link>
				<description>
				
				I haven&apos;t had time to post an actual update about mobile development, so here is a photo of some of the devices I use:

&lt;img src=&quot;http://ibjhb.com/includes/img/mobileTesting_web.jpg&quot; border=&quot;0&quot; /&gt; 
				</description>
				
				<category>Programming</category>
				
				<pubDate>Fri, 01 Jul 2011 16:29:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2011/7/1/Mobile-Development-QA-Setup</guid>
				
				
			</item>
			
			<item>
				<title>Undocumented and Off Script: ColdFusion &amp; Ehcache (Rob Brooks-Bilson)</title>
				<link>http://www.coldfusioning.com/index.cfm/2011/5/13/Undocumented-and-Off-Script-ColdFusion--Ehcache-Rob-BrooksBilson</link>
				<description>
				
				&lt;style&gt;
.ennote ol, .ennote ul{list-style: disc outside none; padding-left: 45px !important}

&lt;/style&gt;
&lt;div class=&quot;ennote&quot;&gt;

I had a lot of interest in this topic, so I decided to take notes during the meeting.  Rob Brooks-Bilson covered a lot of data and I made bullet points as he spoke.  He has since &lt;a href=&quot;http://rob.brooks-bilson.com/index.cfm/2011/5/13/Slides-Config-and-Code-from-my-cfobjective-2011-Presentation&quot; target=&quot;_blank&quot;&gt;posted his slides online&lt;/a&gt; so you can see the slides that go with my notes.  Please let me know if you have any questions.
&lt;br /&gt;
&lt;div&gt;More notes here:&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;https://docs.google.com/leaf?id=1fMT1qJ_5XHTFpyp-FP9LH8D9qb6fugtbwVkGYNRpKsc&amp;amp;sort=name&amp;amp;layout=list&amp;amp;pid=0B3zsu2BNDng4ODk0MWRmNzYtZTlkNC00ZDU0LWJmMWUtZDUxNjJlNjdiODlh&quot; target=&quot;_blank&quot;&gt;Google Notes&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;http://rob.brooks-bilson.com/index.cfm/2011/5/13/Slides-Config-and-Code-from-my-cfobjective-2011-Presentation&quot; target=&quot;_blank&quot;&gt;Rob&apos;s Notes&lt;/a&gt;&lt;br&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Lot of different areas to cache... multiple opportunities&lt;/li&gt;
&lt;li&gt;Multiple caching architectures
&lt;ul&gt;
&lt;li&gt;In-Process (L1 Cache)
&lt;ul&gt;
&lt;li&gt;Operates in the same process as application server&lt;/li&gt;
&lt;li&gt;Super fast&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Out of Process (L2 Cache)
&lt;ul&gt;
&lt;li&gt;Add on Terracoda&lt;/li&gt;
&lt;li&gt;Much more scalable but slower than in-process&lt;/li&gt;
&lt;li&gt;Data/objects must be serialized/deserialized&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Non-deterministic (cache-aside)
&lt;ul&gt;
&lt;li&gt;Look in the cache, if not there, hit the db&lt;/li&gt;
&lt;li&gt;most popular&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Deterministic (cache as sor)
&lt;ul&gt;
&lt;li&gt;Always go to the cache&lt;/li&gt;
&lt;li&gt;All cache data is pre-populated&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cache Eviction Algorithms
&lt;ul&gt;
&lt;li&gt;Time-based&lt;/li&gt;
&lt;li&gt;Cost based
&lt;ul&gt;
&lt;li&gt;FIFO&lt;/li&gt;
&lt;li&gt;LRU&lt;/li&gt;
&lt;li&gt;LFU
&lt;ul&gt;
&lt;li&gt;Unique to Ehcache&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Ehcache
&lt;ul&gt;
&lt;li&gt;De facto cache for enterprise Java and ColdFusion&lt;/li&gt;
&lt;li&gt;Over 500K implementations&lt;/li&gt;
&lt;li&gt;Can be configured to run
&lt;ul&gt;
&lt;li&gt;Local: In-process&lt;/li&gt;
&lt;li&gt;Replicated: in-process&lt;/li&gt;
&lt;li&gt;Distributed: In-process and Out of process&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Super fast for in-process&lt;/li&gt;
&lt;li&gt;No serializations required for objects written to memory&lt;/li&gt;
&lt;li&gt;Supports multiple expiration algoritms&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Coldfusion
&lt;ul&gt;
&lt;li&gt;page fragment&lt;/li&gt;
&lt;li&gt;objects and data&lt;/li&gt;
&lt;li&gt;ORM&lt;/li&gt;
&lt;li&gt;9.0.1 addedl more support&lt;/li&gt;
&lt;li&gt;Ehcache 2.0 added a lot more support&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Don&apos;t cache to disk unless you absolutely have to
&lt;ul&gt;
&lt;li&gt;Consider using RAM based&lt;/li&gt;
&lt;li&gt;&quot;Put as much in memory as you can, use disk for failover&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Every ColdFusion application has two available caches by default
&lt;ul&gt;
&lt;li&gt;cfcache - template based, fairly automatic&lt;/li&gt;
&lt;li&gt;object cache - put queries, objects, etc - &apos;cache anything&apos;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Default caches are bound to named applications (Application.cfc or Application.cfm)
&lt;ul&gt;
&lt;li&gt;Caches are NOT tied to ColdFusion scopes&lt;/li&gt;
&lt;li&gt;Caches persist even if the bound application scope times out&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Additional user-defined caches can be defined&lt;/li&gt;
&lt;li&gt;ehcache.xml
&lt;ul&gt;
&lt;li&gt;Tons of options to configure&lt;/li&gt;
&lt;li&gt;Can be set dynamically using cacheSetProperties() or set in the xml&lt;/li&gt;
&lt;li&gt;Get the cache properties using the cacheGetProperties()&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ehcache vs Persistent Variable Scopes
&lt;ul&gt;
&lt;li&gt;Why use Ehcache instead?&lt;/li&gt;
&lt;li&gt;Limit to session scope&lt;/li&gt;
&lt;li&gt;Ehcache advantages
&lt;ul&gt;
&lt;li&gt;Performs well regardless of load&lt;/li&gt;
&lt;li&gt;Easily replicated/distributed&lt;/li&gt;
&lt;li&gt;Self-managing&lt;/li&gt;
&lt;li&gt;Comprehensive monitoring and statistics&lt;/li&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Big memory&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Performance is about the same&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Object Caching Considerations
&lt;ul&gt;
&lt;li&gt;Carefully consider how you plan to use keys to avoid potential key collision&lt;/li&gt;
&lt;li&gt;No namespace, but simulate them using User_, Product_, Item_, etc.&lt;/li&gt;
&lt;li&gt;Or use multiple caches regions&lt;/li&gt;
&lt;li&gt;Objects (including queries) are stored by reference - BE CAREFUL! - Or you can turn it off&lt;/li&gt;
&lt;li&gt;Only serializable objects can be written to the disk cache&lt;/li&gt;
&lt;li&gt;Be careful using cacheGetAllIDs() - with millions of items, could be a problem&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cache Replication
&lt;ul&gt;
&lt;li&gt;Object, Template &amp;amp; Hibernate caches can be replicated&lt;/li&gt;
&lt;li&gt;Simple config&lt;/li&gt;
&lt;li&gt;Cache replications can be done via RMI, JMS, jGroups or Terracotta&lt;/li&gt;
&lt;li&gt;Replication can be synchronous or async&lt;/li&gt;
&lt;li&gt;Sync vs Async
&lt;ul&gt;
&lt;li&gt;Async is fastest&lt;/li&gt;
&lt;li&gt;Potential for data inconsistency&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Upgrading to Newer versions of Ehcache or Terracotta
&lt;ul&gt;
&lt;li&gt;Adobe won&apos;t support but shouldn&apos;t have any problems&lt;/li&gt;
&lt;li&gt;Ehcache upgrade is easy&lt;/li&gt;
&lt;li&gt;Terracotta takes a few more steps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using Ehcache with Terracotta
&lt;ul&gt;
&lt;li&gt;Tiered Caching Architecture&lt;/li&gt;
&lt;li&gt;L1 in process, L2 out of process&lt;/li&gt;
&lt;li&gt;Enterprise Terracotta lets you scale out and setup terabytes&lt;/li&gt;
&lt;li&gt;80/20 rule&lt;/li&gt;
&lt;li&gt;Terracotta has a great dashboard / dev tools&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Slides available afterwards - 20-30 more slides&lt;/li&gt;
&lt;li&gt;Ehcache Monitor
&lt;ul&gt;
&lt;li&gt;Free for development, commercial license for production&lt;/li&gt;
&lt;li&gt;Monitor multiple cache servers from a single web console&lt;/li&gt;
&lt;li&gt;Two components, probe and server&lt;/li&gt;
&lt;li&gt;Simple config&lt;/li&gt;
&lt;li&gt;Stats are transmitted via XML over HTTP&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cache Search
&lt;ul&gt;
&lt;li&gt;Available starting in Ehcache 2.4.0&lt;/li&gt;
&lt;li&gt;Single node for open source
&lt;ul&gt;
&lt;li&gt;Multi node requires Enterprise&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Support for simple and compound functions
&lt;ul&gt;
&lt;li&gt;Provides search operators (think AND, EQ, GT, LE, NOT, OR)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Very powerful - no ColdFusion functions exposed but Java/Ehcache commands are very easy to use&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ehcache 2.x Engancements
&lt;ul&gt;
&lt;li&gt;Cachewriters&lt;/li&gt;
&lt;li&gt;Read-through&lt;/li&gt;
&lt;li&gt;Blocking-cache&lt;/li&gt;
&lt;li&gt;SelfPopulatingCache&lt;/li&gt;
&lt;li&gt;Support for distributed transactions&lt;/li&gt;
&lt;li&gt;Big Memory&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Resources
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;Ehcache.org&quot;&gt;Ehcache.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CF Docs&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;highscalability.com&quot;&gt;highscalability.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Java DZone Article for High Performance Applications&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;

&lt;/div&gt; 
				</description>
				
				<category>ColdFusion</category>
				
				<pubDate>Fri, 13 May 2011 18:36:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2011/5/13/Undocumented-and-Off-Script-ColdFusion--Ehcache-Rob-BrooksBilson</guid>
				
				
			</item>
			
			<item>
				<title>cfObjective Keynote Notes</title>
				<link>http://www.coldfusioning.com/index.cfm/2011/5/12/cfObjective-Keynote-Notes</link>
				<description>
				
				This week, I&apos;m attending cfObjective for the first time.  Below are some of my quick notes from the cfObjective Keynote.  They are down and dirty but if you have any questions, leave a comment.  Also, make sure you check out the &lt;a href=&quot;http://twitter.com/?q=%23cfObjective#!/search&quot;&gt;cfObjective Twitter Feed&lt;/a&gt;.  There&apos;s some great presentations over the next day.
&lt;br /&gt;&lt;br /&gt;

&lt;strong&gt;Scott Stroz&lt;/strong&gt;
   &lt;li&gt;&quot;God is a PHP Developer, it took him 6 days to create everything, if he was a CF developer it would only take 4 days, and then a 3 day weekend&quot;&lt;/li&gt;
   &lt;li&gt;The thing that sets us apart is the community&lt;/li&gt;

&lt;strong&gt;Ray Camden&lt;/strong&gt;
   &lt;li&gt;Speaking about CFB2&lt;/li&gt;
   &lt;li&gt;&quot;If you see 4 numbers at the bottom of your file, you&apos;re doing it wrong.&lt;/li&gt;

&lt;strong&gt;Jason Dean&lt;/strong&gt;
   &lt;li&gt;Speaking about ColdFusion developers and jobs&lt;/li&gt;
   &lt;li&gt;Use students and interns&lt;/li&gt;

&lt;strong&gt;Bob Silverberg&lt;/strong&gt;
   &lt;li&gt;Speaking about open source involvement&lt;/li&gt;
   &lt;li&gt;Contributing to documentation helps too&lt;/li&gt;

&lt;strong&gt;Mark Esher&lt;/strong&gt;
   &lt;li&gt;Next version of ColdFusion&lt;/li&gt;
   &lt;li&gt;jRun is going away and Verity is too&lt;/li&gt;
   &lt;li&gt;Apache Solr is going to continue to be included for search&lt;/li&gt;
   &lt;li&gt;Apache Axis2 included in the next version of ColdFusion&lt;/li&gt;
   &lt;li&gt;Great scheduled tasks support. Application specific tasks.&lt;/li&gt;
   &lt;li&gt;Async job queue in next version of ColdFusion&lt;/li&gt;
   &lt;li&gt;&quot;Something cool&quot; coming with HTML5 and jQuery&lt;/li&gt;
   &lt;li&gt;Next version of ColdFusion will include support for closures&lt;/li&gt;
   &lt;li&gt;Big advances in Security in the next version&lt;/li&gt;


Also check out this &lt;a href=&quot;https://docs.google.com/document/d/15xWYyXvizQxBsa_8KOhlxzQO27C4-2DjLOccaY43Nog/edit?hl=en_GB&amp;pli=1#&quot;&gt;online shared Google Doc&lt;/a&gt; for more notes. 
				</description>
				
				<category>ColdFusion</category>
				
				<pubDate>Thu, 12 May 2011 13:02:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2011/5/12/cfObjective-Keynote-Notes</guid>
				
				
			</item>
			
			<item>
				<title>spwa-backbone Update for Backbone.js and Underscore.js</title>
				<link>http://www.coldfusioning.com/index.cfm/2011/5/1/spwabackbone-Update-for-Backbonejs-and-Underscorejs</link>
				<description>
				
				Tonight, I updated the spwa-backbone library to work with the latest Underscore.js.  If you&apos;d like to learn how to use the library, you can view the &lt;a href=&quot;http://www.coldfusioning.com/index.cfm/2011/1/25/Using-spwabackbone-To-Build-A-Single-Page-Website-Application&quot;&gt;Backbone.js spwa-backbone post&lt;/a&gt;.  In the comments, &quot;Jeremy&quot; discovered a bug that caused the spwa-backbone to not work with the latest Underscore.js library.  The latest Underscore.js library (version 1.1.6) caused an error because:  &quot;_.bind now errors when trying to bind an undefined value.&quot;  

You can view the updated source on Github:&lt;br /&gt;
&lt;a href=&quot;http://github.com/ibjhb/spwa-backbone&quot;&gt;http://github.com/ibjhb/spwa-backbone&lt;/a&gt;

I&apos;ve also added the annotated source online:&lt;br /&gt;
&lt;a href=&quot;http://ibjhb.github.com/spwa-backbone/&quot;&gt;http://ibjhb.github.com/spwa-backbone/&lt;/a&gt;

Lastly, you can view a sample application, using the &lt;a href=&quot;http://ibjhb.github.com/spwa-backbone/&quot;&gt;spwa-backbone for Backbone.js library&lt;/a&gt; online: &lt;br /&gt;
&lt;a href=&quot;http://ibjhb.github.com/spwa-backbone/&quot;&gt;http://ibjhb.github.com/spwa-backbone/&lt;/a&gt;

Also, rather than link to the public library URLs, I now include the libraries (jQuery, Backbone.js &amp; Underscore.js) in the repo so the code will continue to work if those libraries are updated. 
				</description>
				
				<category>JavaScript</category>
				
				<pubDate>Sun, 01 May 2011 04:45:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2011/5/1/spwabackbone-Update-for-Backbonejs-and-Underscorejs</guid>
				
				
			</item>
			
			<item>
				<title>Using spwa-backbone To Build A Single Page Website Application</title>
				<link>http://www.coldfusioning.com/index.cfm/2011/1/25/Using-spwabackbone-To-Build-A-Single-Page-Website-Application</link>
				<description>
				
				&lt;p&gt;
Today we&apos;re going to look at building a single page website application using Backbone.js and spwa-backbone libraries.
&lt;/p&gt;
&lt;p&gt;
You can view the &lt;a href=&quot;https://github.com/ibjhb/spwa-backbone/&quot;&gt;source code on Github&lt;/a&gt;.&#xa0; You can also view the single page web application example in the /example/ folder.&#xa0; For a more complete example, visit: &lt;a href=&quot;http://www.singlepageweb.com/&quot;&gt;Single Web Page Example&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;What is an spwa?&lt;/h3&gt;
&lt;p&gt;
Specifically, an spwa is a single page web application.&#xa0; More generally, it&apos;s a website or application where all (or most) of the content is in a single page.&#xa0; You can have links to other pages but the URL stays the same, except for possibly anything after the hash tag (the pound sign - #).
&lt;/p&gt;
&lt;h3&gt;Why would I want to build an spwa?&lt;/h3&gt;
&lt;p&gt;
There are many reasons to build an spwa.&#xa0; The most obvious advantage is pure speed.&#xa0; Since most of the content is loaded in a single, first request, the subsequent calls are extremely fast.&#xa0; 
&lt;/p&gt;
&lt;p&gt;
When you load the example application, you can see that switching from page to page is almost instant.&#xa0; Also, if you open Firebug, you&apos;ll see that there are not additional http requests to the server for each page.
&lt;/p&gt;
&lt;p&gt;
Another major reason is bandwidth considerations for mobile devices.&#xa0; Since all the pages are loaded with the first request, we don&apos;t need to make subsequent calls to the server.&#xa0; Additionally, all of our JavaScript libraries and CSS files don&apos;t need to be re-requested, downloaded or processed.&#xa0; This can save a considerable amount of time and bandwidth. 
&lt;/p&gt;
&lt;h3&gt;Will I be able to deep link to a specific page?&lt;/h3&gt;
&lt;p&gt;
Of course!&#xa0; Your application would be pretty worthless if you couldn&apos;t allow your visitors to link to a specific page on your site.&#xa0; The beauty of using this code is that the spwa-backbone and Backbone.js libraries both automatically handle the deep linking.
&lt;/p&gt;
&lt;h3&gt;Will the browser&apos;s &apos;back button&apos; work?&lt;/h3&gt;
&lt;p&gt;
Of course it works!&#xa0; Just like the deep linking, Backbone.js and spwa-backbone handle everything necessary for the back button to work.
&lt;/p&gt;

How do I get started?

&lt;p&gt;
It doesn&apos;t take much to get started with spwa-backbone.&#xa0; 
&lt;/p&gt;
&lt;p&gt;
1) The first step is to include the required libraries:&#xa0; jQuery, Underscore.js and Backbone.js.&#xa0; You can use the minified or un-minified versions of each library.&#xa0; It does not matter.
&lt;/p&gt;
&lt;p&gt;
2) The second step is to include the spwa-backbone library.&#xa0; 
&lt;/p&gt;
&lt;p&gt;
3) The third step is to create and your content.&#xa0; Each page is enclosed in a script tag, similar to: 
&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;
&lt;script type=&apos;text/template&apos; id=&apos;home-template&apos;&gt;
Content here
&lt;/script&gt;
&lt;/code&gt;

&lt;p&gt;
Each &apos;page&apos; should have a different id attribute but you must include the &apos;-template&apos; suffix (note the hyphen).&#xa0; Another example of an id attribute would be &apos;about-template&apos;.&#xa0; The &apos;home&apos; page is shown by default if there is no page specified in the URL by hash tag.
&lt;/p&gt;
&lt;p&gt;
4) Lastly, create your links.&#xa0; You&apos;ll naturally want to create links between your pages.&#xa0; You link to them using the following convention:
&lt;/p&gt;
&lt;code&gt;
&lt;a href=&quot;#!about&quot;&gt;About&lt;/a&gt;
&lt;/code&gt;

&lt;p&gt;
This would link us to the &apos;about-template&apos; page.&#xa0; Notice that there is a hash tag and an exclamation point in the href.&#xa0; This let&apos;s us use the hash tag to change the page and the exclamation point to tell Google to index the page.&#xa0; 
&lt;/p&gt;
&lt;p&gt;
That&apos;s it!
&lt;/p&gt;
&lt;p&gt;
It&apos;s very easy.&#xa0; You can create multiple pages and links very quickly.&#xa0; The library will do all the work and routing.&#xa0; Take a look at the example html file for a full example.&#xa0; 
&lt;/p&gt;
&lt;p&gt;
Lastly, the un-minified version of the spwa-backbone library is fully commented.&#xa0; If you are curious how the library works, take a look and if you read through the whole file, it should make sense.&#xa0; If something doesn&apos;t make sense or needs a better explanation, please don&apos;t hesitate to let me know.
&lt;/p&gt;
&lt;p&gt;
If you have any questions, comments or requests, please leave a comment below. 
&lt;/p&gt; 
				</description>
				
				<category>JavaScript</category>
				
				<pubDate>Tue, 25 Jan 2011 04:19:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2011/1/25/Using-spwabackbone-To-Build-A-Single-Page-Website-Application</guid>
				
				
			</item>
			
			<item>
				<title>Backbone.js + jQuery = Best OO Friends Example</title>
				<link>http://www.coldfusioning.com/index.cfm/2011/1/18/Backbonejs--jQuery--Best-OO-Friends-Example</link>
				<description>
				
				&lt;style&gt;
&lt;!--
 /* Font Definitions */
@font-face
	{font-family:Arial;
	panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
	{font-family:Times;
	panose-1:2 0 5 0 0 0 0 0 0 0;}
@font-face
	{font-family:&quot;\FF2D\FF33 \660E\671D&quot;;
	panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:&quot;\FF2D\FF33 \660E\671D&quot;;
	panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:Cambria;
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:&quot;Trebuchet MS&quot;;
	panose-1:2 11 6 3 2 2 2 2 2 4;}
 /* Style Definitions */
span.Heading1Char
	{font-family:Times;
	font-weight:bold;}
.MsoChpDefault
	{font-family:Cambria;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
	{page:WordSection1;}
--&gt;
&lt;/style&gt;

&lt;div class=WordSection1&gt;

&lt;p class=MsoNormal&gt;&lt;b&gt;Backbone.js + jQuery = Best OO Friends Example&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;Today
we are going to dive deep into OO JavaScript programming using Backbone.js and
jQuery.&lt;/p&gt;

&lt;p class=MsoNormal&gt;This
is going to be a detailed example. If you want to dive directly into the code,
you can check out the &lt;a
href=&quot;https://github.com/ibjhb/Backbone.js-Example&quot;&gt;repository on Github&lt;/a&gt;.&lt;/p&gt;

&lt;p class=MsoNormal&gt;Before
we dive into the code, check out the working example of the code:&amp;nbsp;&lt;a
href=&quot;http://www.coldfusioning.com/samples/backbonejsexample/&quot;&gt;Backbone.js Example&lt;/a&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;Each
of the files is heavily commented and should provide insight into what each
major section of code is doing. &lt;/p&gt;

(Open the &lt;a href=&quot;http://www.coldfusioning.com/index.cfm/2011/1/18/Backbonejs--jQuery--Best-OO-Friends-Example&quot;&gt;Backbone.js Sample&lt;/a&gt; to view the full text)

&lt;/div&gt;  [More]
				</description>
				
				<category>JavaScript</category>
				
				<pubDate>Tue, 18 Jan 2011 02:03:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2011/1/18/Backbonejs--jQuery--Best-OO-Friends-Example</guid>
				
				
			</item>
			
			<item>
				<title>Detecting Java Browser Support Using jQuery</title>
				<link>http://www.coldfusioning.com/index.cfm/2010/12/1/Detecting-Java-Browser-Support-Using-jQuery</link>
				<description>
				
				Today we&apos;re going to quickly look at detecting Java (not JavaScript) using jQuery.  It is actually very simple using the &lt;a href=&quot;http://plugins.jquery.com/project/jqplugin&quot;&gt;jQuery Browser Plugin&lt;/a&gt;.  Once you have the plugin loaded, it extends the $.browser object to give you the following:

&lt;code&gt;
$.browser.flash 	//Flash
$.browser.sl 		//Silverlight
$.browser.pdf 		//PDF format
$.browser.java 	//Java
$.browser.qtime 	//Quicktime
$.browser.wmp 		//Windows Media Player
$.browser.shk 		//Shockwave
$.browser.rp 		//Realplayer
&lt;/code&gt;

As you can see, we gain more than just Java detection, but Java detection is the one we&apos;re looking for in this example.

You can view a working example on this &lt;a href=&quot;http://www.coldfusioning.com/samples/jsexamples/detectjava/&quot;&gt;Java Detection Using jQuery&lt;/a&gt; page and the source code is naturally &lt;a href=&quot;https://github.com/ibjhb/jsExamples/tree/master/detectJava/&quot;&gt;on github&lt;/a&gt;. 
				</description>
				
				<category>jQuery</category>
				
				<category>JavaScript</category>
				
				<pubDate>Wed, 01 Dec 2010 10:27:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2010/12/1/Detecting-Java-Browser-Support-Using-jQuery</guid>
				
				
			</item>
			
			<item>
				<title>jQuery Templates with ColdFusion ORM and AJAX</title>
				<link>http://www.coldfusioning.com/index.cfm/2010/11/25/jQuery-Templates-with-ColdFusion-ORM-and-AJAX</link>
				<description>
				
				In this post, we&apos;ll look at how to use the new jQuery templates in conjunction with ColdFusion and AJAX.  If you haven&apos;t already, check out this previous post on using &lt;a href=&quot;http://www.coldfusioning.com/index.cfm/2010/11/17/Experiments-in-jQuery-Templates-with-JSON&quot;&gt;jQuery templates without AJAX&lt;/a&gt;.

If you want to skip ahead, all of the files are on &lt;a href=&quot;https://github.com/ibjhb/jsExamples&quot;&gt;github&lt;/a&gt; (under clienttemplates) and the working examples can be found on &lt;a href=&quot;http://www.coldfusioning.com/samples/jsexamples/clienttemplates/ajax.cfm&quot;&gt;this link&lt;/a&gt;.

To keep things simple, we&apos;re going to use the cfartgallery datasource that comes with ColdFusion and we&apos;re going to use simple ORM.  If you don&apos;t have the sample database installed, this example won&apos;t work, but you&apos;ll be able to get the idea.

The first thing we&apos;re going to do is setup our Application.cfc so we can use ORM:

Application.cfc:
&lt;code&gt;
component{
	// Application properties
	this.name = hash(getCurrentTemplatePath());
	this.sessionManagement = true;
	this.sessionTimeout = createTimeSpan(0,0,30,0);
	this.setClientCookies = true;
	this.datasource = &quot;cfartgallery&quot;;
	this.clientManagement = true;
	
	this.ormenabled = &quot;true&quot;;
	this.ormsettings = {
			  logSQL 			= false
			 ,dbcreate			= &apos;update&apos;
	};
}
&lt;/code&gt;

This is pretty straightforward Application.cfc and ORM.  The important parts are setting the datasource and setting ormenabled to true.  If you aren&apos;t familiar with ORM, you should view &lt;a href=&quot;http://www.coldfusioning.com/index.cfm/2009/10/17/Introduction-to-ColdFusion-ORM&quot;&gt;Introduction to ORM&lt;/a&gt; or &lt;a href=&quot;http://www.coldfusioning.com/index.cfm/2010/8/4/ColdFusion--Railo-Object-Relational-Mapping--ORM-Source-Code-and-Notes&quot;&gt;ColdFusion ORM Presentation&lt;/a&gt;.

The next step is to map our ORM object to the existing table:

artists.cfc:
&lt;code&gt;
component	persistent		= true
			accessors		= true
			entityname		= &apos;artists&apos;
			{

	property name=&apos;id&apos; 				column=&apos;ARTISTID&apos; 		generator=&apos;increment&apos;;
	property name=&apos;FIRSTNAME&apos;; 
    property name=&apos;LASTNAME&apos;; 
    property name=&apos;ADDRESS&apos;; 
    property name=&apos;CITY&apos;; 
    property name=&apos;STATE&apos;; 
    property name=&apos;POSTALCODE&apos;; 
    property name=&apos;EMAIL&apos;; 
    property name=&apos;PHONE&apos;; 
    property name=&apos;FAX&apos;; 
    property name=&apos;thepassword&apos;; 
}
&lt;/code&gt;

This is the simplest implementation of this object since the datasource and table already exists.  

In the next step, we&apos;re going to setup our remote cfc call.  This is where the power of ColdFusion ORM comes into play:

remote.cfc:
&lt;code&gt;
component {
	remote string function getArtist(){
		return SerializeJSON(entityLoad(&apos;artists&apos;));
	}
}
&lt;/code&gt;

That&apos;s all that is required to load the entire artists table and serialize it to JSON, so we can return it in the AJAX call.  Very simple.

Lastly, we&apos;re going to repeat a lot of code from the previous &lt;a href=&quot;http://www.coldfusioning.com/index.cfm/2010/11/17/Experiments-in-jQuery-Templates-with-JSON&quot;&gt;jQuery templates&lt;/a&gt; post.  I won&apos;t repost everything here but we&apos;ll look at the two key features we&apos;re using in this example.  

The first key feature is our actual ajax call.  We&apos;re going to call our remote.cfc to get our JSON.  Then we&apos;re going to invoke the jQuery template and append it to our empty div in ajax.cfm:

&lt;code&gt;
&lt;script type=&apos;text/javascript&apos;&gt;
$(function(){
	$.getJSON(&apos;remote.cfc?method=getArtist&apos;
		,{returnFormat: &apos;json&apos;}
		,function(data){
			$(&apos;#artistTemplate&apos;)
				.tmpl(data)
				.appendTo(&apos;#theContacts&apos;);
	});
});
&lt;/script&gt;
&lt;/code&gt;

Lastly, we have our actual jQuery template.  We get a little more advanced in this example and introduce an &quot;if&quot; conditional.  This causes the phone and fax to only display if they exist in the data returned from our AJAX call.  This is extremely powerful and allows us to use logic in our templates without complex JavaScript:

&lt;code&gt;
&lt;script id=&quot;artistTemplate&quot; type=&quot;text/x-jquery-tmpl&quot;&gt;
	&lt;div&gt;
		Name:  ${ FIRSTNAME } ${ LASTNAME } &lt;br /&gt;
		EMail: ${ EMAIL } &lt;br /&gt;
		Address: &lt;br /&gt;
		${ ADDRESS } &lt;br /&gt;
		${ CITY }, ${ STATE } ${ POSTALCODE } &lt;br /&gt;
		{{if PHONE}}
			Phone: ${ PHONE } &lt;br /&gt;
		{{/if}}
		{{if FAX}}
			Fax: ${ FAX }
		{{/if}}
	&lt;/div&gt;
&lt;/script&gt;
&lt;/code&gt;

If you &lt;a href=&quot;http://www.coldfusioning.com/samples/jsexamples/clienttemplates/ajax.cfm&quot;&gt;view the source code of the example&lt;/a&gt; or explore the code &lt;a href=&quot;https://github.com/ibjhb/jsExamples&quot;&gt;on github&lt;/a&gt;, you&apos;ll see there are a few other sections for formatting, including jQuery and the template JavaScript.  

Try running the code and let me know what you think. 
				</description>
				
				<category>jQuery</category>
				
				<pubDate>Thu, 25 Nov 2010 01:55:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2010/11/25/jQuery-Templates-with-ColdFusion-ORM-and-AJAX</guid>
				
				
			</item>
			
			<item>
				<title>Experiments in jQuery Templates with JSON</title>
				<link>http://www.coldfusioning.com/index.cfm/2010/11/17/Experiments-in-jQuery-Templates-with-JSON</link>
				<description>
				
				I&apos;ve been wanting to work with the new &lt;a href=&quot;http://api.jquery.com/category/plugins/templates/&quot;&gt;jQuery templates plugin&lt;/a&gt; since I first read about it.  It allows you to bring your views into jQuery and not rely on server-side languages  to generate the html.  This provides extreme flexibility and accelerates development.  No longer do you need to loop over returned data and try to write your display in JavaScript.

To illustrate this, I&apos;ve put together a series of posts exploring different options.

The first example we&apos;re going to look at doesn&apos;t require any ColdFusion or server-side scripting.  You can view the &lt;a href=&quot;http://www.coldfusioning.com/samples/jsexamples/clienttemplates/simple.cfm&quot;&gt;jQuery template working example online&lt;/a&gt;. Be sure to view the source.  There is no server-side processing going on.

We&apos;re going to create a struct and then use it to populate our jQuery template.

After including the jQuery and jQuery template JavaScript from the CDN, the first thing we&apos;re going to do is create our struct with a dataset we want to ultimately output:

&lt;code&gt;
	var bills = [
		{
			 description: 	&apos;$1 1957 Silver Certificate&apos; 
			,price: 		&apos;10&apos;
		}
		,{
			 description: 	&apos;$2 1963 Federal Reserve&apos; 
			,price: 		&apos;50&apos;
		}
		,{
			 description: 	&apos;$100 1928 Gold Certificate&apos; 
			,price: 		&apos;50.65&apos;
		}
	]
&lt;/code&gt;

The next thing we&apos;re going to put together is the actual jQuery template.  This is a snippet of code that contains &apos;variables&apos;, denoted by ${ VARNAME }, that will be replaced with the actual data:

&lt;code&gt;
&lt;script id=&quot;billTemplate&quot; type=&quot;text/x-jquery-tmpl&quot;&gt;
	&lt;div&gt;
		Bill Description: ${ description } &lt;br /&gt;
		Price: $${ price }
	&lt;/div&gt;
&lt;/script&gt;
&lt;/code&gt;

Don&apos;t let the double $$ confuse you.  I want to display the price, so the first $ is the money sign and the second is the beginning of the template.

The last important line is the actual invocation of the template replacement code:

&lt;code&gt;
$(&apos;#billTemplate&apos;).tmpl(bills).appendTo(&apos;#myBills&apos;);
&lt;/code&gt;

This tells jQuery to use our template, replace it with our data and then append it to the empty div.  

Lastly, we apply some CSS formatting and our standard HTML5 code.

In the next post, we&apos;ll look at how to use ColdFusion to load the JSON dynamically.  To view this working example, view &lt;a href=&quot;http://www.coldfusioning.com/samples/jsexamples/clienttemplates/simple.cfm&quot;&gt;jQuery template online&lt;/a&gt; or for the source, visit &lt;a href=&quot;https://github.com/ibjhb/jsExamples&quot;&gt;my Github&lt;/a&gt;.

Full source:

&lt;code&gt;
&lt;!DOCTYPE HTML&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;Simple Client Templates Example&lt;/title&gt;
	&lt;style type=&quot;text/css&quot;&gt;
		#myBills div {
			background-color: navy;
			color: white;
			margin: 10px;
			padding: 10px;
			width: 300px;
		}
	&lt;/style&gt;

	&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js&quot;&gt;&lt;/script&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js&quot;&gt;&lt;/script&gt;
	
	&lt;script type=&apos;text/javascript&apos;&gt;
	$(function(){
		
		var bills = [
			{
				 description: 	&apos;$1 1957 Silver Certificate&apos; 
				,price: 		&apos;10&apos;
			}
			,{
				 description: 	&apos;$2 1963 Federal Reserve&apos; 
				,price: 		&apos;50&apos;
			}
			,{
				 description: 	&apos;$100 1928 Gold Certificate&apos; 
				,price: 		&apos;50.65&apos;
			}
		]
		
		$(&apos;#billTemplate&apos;).tmpl(bills).appendTo(&apos;#myBills&apos;);
		
	});
	&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;div id=&quot;content&quot;&gt;
		
		&lt;div id=&quot;myBills&quot;&gt;&lt;/div&gt;
		
		&lt;script id=&quot;billTemplate&quot; type=&quot;text/x-jquery-tmpl&quot;&gt;
			&lt;div&gt;
				Bill Description: ${ description } &lt;br /&gt;
				Price: $${ price }
			&lt;/div&gt;
		&lt;/script&gt;
		
	&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;/code&gt; 
				</description>
				
				<category>jQuery</category>
				
				<pubDate>Wed, 17 Nov 2010 14:14:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2010/11/17/Experiments-in-jQuery-Templates-with-JSON</guid>
				
				
			</item>
			
			<item>
				<title>How Unique is a UUID? Should we use them instead of auto-incrementing?</title>
				<link>http://www.coldfusioning.com/index.cfm/2010/11/10/How-Unique-is-a-UUID-Should-we-use-them-instead-of-autoincrementing</link>
				<description>
				
				We had a discussion today about the uniqueness of UUIDs (or GUID).  In case you didn&apos;t know, according to Wikipedia, a UUID is:

&quot;an identifier standard used in software construction, standardized by the Open Software Foundation (OSF) as part of the Distributed Computing Environment (DCE).&quot;

The uniqueness of a UUID is 1 2^&lt;sup&gt;128&lt;/sup&gt;.  Now this doesn&apos;t really mean much to most people so the part I found particularly interesting is the uniqueness in terms we can try to understand.  From &lt;a href=&quot;http://stackoverflow.com/questions/39771/is-a-guid-unique-100-of-the-time&quot; rel=&quot;nofollow&quot;&gt;Stackoverflow&lt;/a&gt;:

&quot;consider the observable universe, which contains about 5&#xd7;10^22 stars; every star could then have 6.8&#xd7;10^15 universally unique GUIDs.&quot;

Wow.

Here&apos;s another way to write the probability:

1 in 340,000,000,000,000,000,000,000,000,000,000,000,000

or

&quot;In other words, only after generating 1 billion UUIDs every second for the next 100 years, the probability of creating just one duplicate would be about 50%. The probability of one duplicate would be about 50% if every person on earth owns 600 million UUIDs.&quot;

Stop and think about that for a second.

This raises the question.  Given the fact they basically are unique, should we use them for a primary key instead of auto-incrementing in a database?  There are good reasons to use either as a primary key.  

&lt;strong&gt;Which do you use and why?&lt;/strong&gt; 
				</description>
				
				<category>Database</category>
				
				<category>Programming</category>
				
				<pubDate>Wed, 10 Nov 2010 16:01:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2010/11/10/How-Unique-is-a-UUID-Should-we-use-them-instead-of-autoincrementing</guid>
				
				
			</item>
			
			<item>
				<title>Using jQuery To Require EULA Checkbox</title>
				<link>http://www.coldfusioning.com/index.cfm/2010/11/2/Using-jQuery-To-Require-EULA-Checkbox</link>
				<description>
				
				Today we had a requirement to have a EULA (End User License Agreement) checkbox checked before we could allow a user to click a download button.  Let&apos;s look how we could do it with jQuery.  (I&apos;m going to skip the un-important or self explanatory code.)

You can view the &lt;a href=&quot;/samples/eula/&quot;&gt;full example on this page&lt;/a&gt;.

&lt;code&gt;
&lt;style type=&quot;text/css&quot;&gt;
	.disabledObject {
		opacity: 0.5;
	}
&lt;/style&gt;
&lt;/code&gt;

While not required, this is going to make the button a little prettier when disabled.

&lt;code&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js&quot;&gt;&lt;/script&gt;

&lt;script type=&apos;text/javascript&apos;&gt;
$(function(){
	// Disabled the buttons if the eula isn&apos;t checked
	$(&apos;#eula&apos;).click(function(){
		if ($(this).is(&apos;:checked&apos;)) {
			$(&apos;#content button&apos;).removeAttr(&apos;disabled&apos;).removeClass(&apos;disabledObject&apos;);
		}
		else {
			$(&apos;#content button&apos;).attr(&apos;disabled&apos;, &apos;disabled&apos;).addClass(&apos;disabledObject&apos;);
		}
	})
});
&lt;/script&gt;
&lt;/code&gt;

In the HEADof our document, we&apos;re going to include jQuery off the Google CDN.  You could use your own server/cdn or use &lt;a href=&quot;http://www.coldfusioning.com/index.cfm/2010/7/9/Load-jQuery-From-Google-Without-Risk-of-Breaking-Your-Site&quot;&gt;code to prevent your site breaking&lt;/a&gt; if Google is unavailable.

The next SCRIPT block is the real core of the functionality.  We&apos;re setting up a click-binding that will fire every time the EULA checkbox is clicked.  We then determine if it is &quot;checked&quot; and then disable or enable the button accordingly.

&lt;code&gt;
&lt;input type=&quot;checkbox&quot; value=&quot;1&quot; id=&quot;eula&quot; name=&quot;eula&quot;&gt; I agree to the EULA
	&lt;p&gt;
		&lt;button id=&quot;downloadNow&quot; class=&quot;disabledObject&quot; name=&quot;downloadNow&quot; type=&quot;button&quot; disabled=&quot;disabled&quot;&gt;Download Now&lt;/button&gt;
	&lt;/p&gt;
&lt;/code&gt;

In this last section, we output the checkbox and the button.  We set it to disabled by default and add a disabled class.  You can view the &lt;a href=&quot;/samples/eula/&quot;&gt;full working example&lt;/a&gt;. 
				</description>
				
				<category>jQuery</category>
				
				<pubDate>Tue, 02 Nov 2010 08:00:00 -0400</pubDate>
				<guid>http://www.coldfusioning.com/index.cfm/2010/11/2/Using-jQuery-To-Require-EULA-Checkbox</guid>
				
				
			</item>
			</channel></rss>
