<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Tyler Ham's Blog</title>
	<link>http://www.thamtech.com/blog</link>
	<description></description>
	<pubDate>Tue, 17 Jun 2008 03:49:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>Gmail to Google Apps Email Migration (part 2)</title>
		<link>http://www.thamtech.com/blog/2008/04/25/gmail-to-google-apps-email-migration-part2/</link>
		<comments>http://www.thamtech.com/blog/2008/04/25/gmail-to-google-apps-email-migration-part2/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 15:45:48 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.thamtech.com/blog/2008/04/25/gmail-to-google-apps-email-migration-part2/</guid>
		<description><![CDATA[
I promised an Amazon EC2 AMI with imapsync and a few Gmail migration scripts.  See the Gmail to Google Apps Email Migration post for background information.  I'll jump right in with a procedure to get you started with your own migration:

]]></description>
			<content:encoded><![CDATA[<p>
I promised an Amazon <abbr title="Elastic Compute Cloud">EC2</abbr> <abbr title="Amazon Machine Image">AMI</abbr> with imapsync and a few Gmail migration scripts.  See the <a href="http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/">Gmail to Google Apps Email Migration</a> post for background information.  I'll jump right in with a procedure to get you started with your own migration:
</p>
<p> <a href="http://www.thamtech.com/blog/2008/04/25/gmail-to-google-apps-email-migration-part2/#more-14" class="more-link">(more...)</a>]]></content:encoded>
			<wfw:commentRss>http://www.thamtech.com/blog/2008/04/25/gmail-to-google-apps-email-migration-part2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gmail to Google Apps Email Migration</title>
		<link>http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/</link>
		<comments>http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/#comments</comments>
		<pubDate>Sat, 29 Mar 2008 05:06:33 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/</guid>
		<description><![CDATA[
I came up with a method for migrating the emails in my personal Gmail (user@gmail.com) email account to my Google Apps (user@thamtech.com) email account.  I had a few simple requirements:


Every email in the @gmail.com account must be migrated into the @thamtech.com account with all attachments intact.
The read/unread status of each email must be maintained.
The [...]]]></description>
			<content:encoded><![CDATA[<p>
I came up with a method for migrating the emails in my personal Gmail (user@gmail.com) email account to my Google Apps (user@thamtech.com) email account.  I had a few simple requirements:
</p>
<ul>
<li>Every email in the @gmail.com account must be migrated into the @thamtech.com account with all attachments intact.</li>
<li>The <strong>read/unread</strong> status of each email must be maintained.</li>
<li>The <strong>labels</strong> applied to each email must be maintained, whether they were applied by a filter or manually.
<ul>
<li>Certain <a href="http://www.google.com/enterprise/gallery/apps/migration.html">Google-endorsed</a> <a href="http://www.limitnone.com/products.php?p=gxfer">migration</a> solutions are only able to maintain message labels that were applied automatically by a filter.</li>
</ul>
</li>
<li>The <strong>starred/non-starred</strong> status of each email must be maintained.</li>
<li>The date on migrated emails must be the <strong>original date</strong>, NOT the date of migration.
<ul>
<li>Certain migrations involving Entourage have had this unfortunate result.</li>
</ul>
</li>
<li>The <strong>Recipient</strong> column when viewing the list of migrated Sent Mail must show the recipients of the emails, NOT my name or "me".
<ul>
<li>Certain <a href="http://sarth.thallos.org/2007/11/sent-mail-archival-episode-3.html">migrations</a> involving  <a href="http://groups.google.co.nz/group/Gmail-POP-and-Forwarding/browse_thread/thread/a5a43ee6cce50e30?hl=en">involving</a> Entourage or Outlook have had this unfortunate result.</li>
</ul>
</li>
</ul>
<p>
Also, Gmail normally replaces my name with "me" when displaying the sender/receiver of emails.  I prefer that the emails display exactly the same, "me," after being migrated, rather than saying "user@gmail.com".  Is this too much to ask? No!
</p>
<p>
I found a solution using <a href="http://freshmeat.net/projects/imapsync/">imapsync</a> and <a href="http://aws.amazon.com/ec2">Amazon EC2</a> (I suppose any old computer would do, but this gave me a much higher bandwidth connection to Google's servers than I would have had otherwise).  Here's a brief overview of my procedure:
</p>
<p> <a href="http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/#more-13" class="more-link">(more...)</a>]]></content:encoded>
			<wfw:commentRss>http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Consuming Webservices with Complex Input Parameters</title>
		<link>http://www.thamtech.com/blog/2007/11/07/consuming-webservices-with-complex-input-parameters/</link>
		<comments>http://www.thamtech.com/blog/2007/11/07/consuming-webservices-with-complex-input-parameters/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 17:50:53 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
		
		<category><![CDATA[ColdFusion]]></category>

		<guid isPermaLink="false">http://www.thamtech.com/blog/2007/11/07/consuming-webservices-with-complex-input-parameters/</guid>
		<description><![CDATA[
ColdFusion sometimes has trouble assembling the inputs to a web service when the parameters to the web service function are complex.  I ran into trouble recently when trying to use the findObjects() method of the API-A interface to a Fedora Commons repository.



There is a discussion of this issue in the adobe forums with a [...]]]></description>
			<content:encoded><![CDATA[<p>
ColdFusion sometimes has trouble assembling the inputs to a web service when the parameters to the web service function are complex.  I ran into trouble recently when trying to use the findObjects() method of the API-A interface to a <a href="http://www.fedora-commons.org/">Fedora Commons</a> repository.
</p>

<p>
There is a <a href="http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?catid=7&amp;threadid=956508&amp;messid=3520969">discussion</a> of this issue in the adobe forums with a good description of ColdFusion's behavior when preparing parameters for a web service call.
</p>

 <a href="http://www.thamtech.com/blog/2007/11/07/consuming-webservices-with-complex-input-parameters/#more-11" class="more-link">(more...)</a>]]></content:encoded>
			<wfw:commentRss>http://www.thamtech.com/blog/2007/11/07/consuming-webservices-with-complex-input-parameters/feed/</wfw:commentRss>
		</item>
		<item>
		<title>First post in a while; updated books</title>
		<link>http://www.thamtech.com/blog/2007/11/07/first-post-in-a-while-updated-books/</link>
		<comments>http://www.thamtech.com/blog/2007/11/07/first-post-in-a-while-updated-books/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 07:10:29 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
		
		<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://www.thamtech.com/blog/2007/11/07/first-post-in-a-while-updated-books/</guid>
		<description><![CDATA[
Well, it has been quite a while since I've logged-in and updated anything in here.  I just finished updating my book list with more books I've recently read, and also my current selections, Agile Database Techniques and Scripting VMWare.



I am really enjoying Agile Database Techniques.  I plan to read it again and take [...]]]></description>
			<content:encoded><![CDATA[<p>
Well, it has been quite a while since I've logged-in and updated anything in here.  I just finished updating my <a href="/blog/books">book list</a> with more books I've recently read, and also my current selections, Agile Database Techniques and Scripting VMWare.
</p>

<p>
I am really enjoying <a href="http://www.amazon.com/dp/0471202835/">Agile Database Techniques</a>.  I plan to read it again and take notes before I have to return it to the library!  I began reading the book before starting on my new project at work.  Shortly after I realized we may be facing an integration (of some sort) with a legacy database, I got to chapter 8: Legacy Databases - Everything You Need to Know But Are Afraid to Deal With.  It has been very helpful as I move forward in the planning stages with my co-workers.
</p>]]></content:encoded>
			<wfw:commentRss>http://www.thamtech.com/blog/2007/11/07/first-post-in-a-while-updated-books/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Website Home</title>
		<link>http://www.thamtech.com/blog/2007/05/12/new-website-home/</link>
		<comments>http://www.thamtech.com/blog/2007/05/12/new-website-home/#comments</comments>
		<pubDate>Sun, 13 May 2007 02:50:14 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.thamtech.com/blog/2007/05/12/new-website-home/</guid>
		<description><![CDATA[
I had been using BlogCFC on a cheap ColdFusion host, but I have now been migrating things to my site hosted by Dreamhost.  Dreamhost doesn't have ColdFusion, though, so I had to go with some different blogging software.



Dreamhost offers "One-Click Installs" of various web applications, including the software now running this blog: WordPress.  [...]]]></description>
			<content:encoded><![CDATA[<p>
I had been using <a href="http://ray.camdenfamily.com/projects/blogcfc/">BlogCFC</a> on a cheap ColdFusion host, but I have now been migrating things to my site hosted by <a href="http://www.dreamhost.com/">Dreamhost</a>.  Dreamhost doesn't have ColdFusion, though, so I had to go with some different blogging software.
</p>

<p>
Dreamhost offers "One-Click Installs" of various web applications, including the software now running this blog: WordPress.  It's written in PHP.
</p>

<p>
I didn't have very many entries in my blog, so transferring things from the old one to the new one hasn't been very difficult.  I have rules in my .htaccess file redirecting the old urls to the new ones.
</p>

<p>
On the old blog, I was using my own template, but now I'm just using the default WordPress template.  Maybe I'll replace it with my own some day when I have more time.
</p>]]></content:encoded>
			<wfw:commentRss>http://www.thamtech.com/blog/2007/05/12/new-website-home/feed/</wfw:commentRss>
		</item>
		<item>
		<title>URLEncoded Arguments of a Remote Component Function</title>
		<link>http://www.thamtech.com/blog/2006/12/11/urlencoded-arguments-of-a-remote-component-function/</link>
		<comments>http://www.thamtech.com/blog/2006/12/11/urlencoded-arguments-of-a-remote-component-function/#comments</comments>
		<pubDate>Mon, 11 Dec 2006 19:50:35 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
		
		<category><![CDATA[ColdFusion]]></category>

		<guid isPermaLink="false">http://www.thamtech.com/blog/2006/12/11/urlencoded-arguments-of-a-remote-component-function/</guid>
		<description><![CDATA[
There are a number of ways to invoke functions of a ColdFusion component:


Code (coldfusion)
&#60;cfinvoke component=&#34;#myCfc#&#34; method=&#34;helloworld&#34;&#62;
&#160; &#60;cfargument name=&#34;input&#34; value=&#34;Hello World!&#34;&#62;
&#60;/cfinvoke&#62; 

&#60;cfset myCfc.helloworld(&#34;Hello World!&#34;)&#62; 

&#60;a href=&#34;/my.cfc?method=helloworld&#38;input=Hello%20World!&#34;&#62;Invoke Component Function&#60;/a&#62; 

&#60;form action=&#34;/my.cfc&#34; method=&#34;post&#34;&#62;
&#160; &#60;input type=&#34;hidden&#34; name=&#34;method&#34; value=&#34;helloworld&#34; /&#62;
&#160; &#60;input type=&#34;text&#34; name=&#34;input&#34; value=&#34;Hello World!&#34; /&#62;
&#160; &#60;input type=&#34;submit&#34; name=&#34;submit&#34; value=&#34;Invoke Component Function&#34; /&#62;
&#60;/form&#62;


In addition, you can invoke a function through [...]]]></description>
			<content:encoded><![CDATA[<p>
There are a number of ways to invoke functions of a ColdFusion component:
</p>

<div class="ch_code_container" style="font-family: monospace;height:300px;"><div style="">Code (coldfusion)</div><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;cfinvoke component=&quot;#myCfc#&quot; method=&quot;helloworld&quot;&gt;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;cfargument name=&quot;input&quot; value=&quot;Hello World!&quot;&gt;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/cfinvoke&gt; </div></li>
<li style="font-weight: bold;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;cfset myCfc.helloworld(&quot;Hello World!&quot;)&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;a href=&quot;/my.cfc?method=helloworld&amp;input=Hello%20World!&quot;&gt;Invoke Component Function&lt;/a&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-weight: bold;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;form action=&quot;/my.cfc&quot; method=&quot;post&quot;&gt;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;input type=&quot;hidden&quot; name=&quot;method&quot; value=&quot;helloworld&quot; /&gt;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;input type=&quot;text&quot; name=&quot;input&quot; value=&quot;Hello World!&quot; /&gt;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Invoke Component Function&quot; /&gt;</div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/form&gt;</div></li></ol></div>

<p>
In addition, you can invoke a function through Flash Remoting or as a Web Service.
</p>

<p>
I recently discovered that if you invoke a remote function through a URL or a form on a web page, the arguments are automatically URLDecoded for you before the function is invoked.
</p>

<p>
I had some input in a form that included a '+' character.  The browser naturally encoded the '+' into '%2B' before posting to my component function, as it should.  Then ColdFusion (behind the scenes) decoded the string back to '+' before calling my function.
</p>

<p>
The problem was that in my function, which I knew was being called from a form, I immediately called URLDecode() on my input, to convert any instances of '%xx' to the correct character.  Well, a '+' represents a [space] in a URL-Encoded string, so the '+' that was in the original input ended up as a [space].
</p>

<p>
The moral of the story is to be aware that ColdFusion will automatically URLDecode arguments from the URL or form before invoking your remote component method being invoked directly.
</p>]]></content:encoded>
			<wfw:commentRss>http://www.thamtech.com/blog/2006/12/11/urlencoded-arguments-of-a-remote-component-function/feed/</wfw:commentRss>
		</item>
		<item>
		<title>GRG 301K Place Name Exam - Google Map</title>
		<link>http://www.thamtech.com/blog/2006/11/15/grg-301k-place-name-exam-google-map/</link>
		<comments>http://www.thamtech.com/blog/2006/11/15/grg-301k-place-name-exam-google-map/#comments</comments>
		<pubDate>Wed, 15 Nov 2006 07:58:56 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
		
		<category><![CDATA[ColdFusion]]></category>

		<category><![CDATA[Google Maps]]></category>

		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://www.thamtech.com/blog/2006/11/15/grg-301k-place-name-exam-google-map/</guid>
		<description><![CDATA[
I developed a nice little web page as an exercise in Google Maps and to help study for a Place Name Exam in one of my classes, GRG 301K. The test is over a set of locations. A map with numbers will be provided and each question will name a location and ask (multiple choice) [...]]]></description>
			<content:encoded><![CDATA[<p>
I developed a nice little web page as an exercise in Google Maps and to help study for a Place Name Exam in one of my classes, GRG 301K. The test is over a set of <a href="http://www.utexas.edu/depts/grg/kimmel/GRG301K/grg301kfall.html#Place%20Names">locations</a>. A map with numbers will be provided and each question will name a location and ask (multiple choice) which location on the map matches that name. My <a href="/blog/tylerh/classes/grg301k/places.cfm">Place Name Exam - Google Map</a> page is a tool to help study for the exam.
</p>

<p>
The locations are divided up into categories (as provided by the professor). Clicking on a category on the left will bring up markers on the map corresponding to the locations in the category. Clicking a marker will identify the location in an info window/balloon. Clicking a particular location within a category will center the map on the marker for that particular location.
</p>

 <a href="http://www.thamtech.com/blog/2006/11/15/grg-301k-place-name-exam-google-map/#more-8" class="more-link">(more...)</a>]]></content:encoded>
			<wfw:commentRss>http://www.thamtech.com/blog/2006/11/15/grg-301k-place-name-exam-google-map/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Instantiation order with extended components</title>
		<link>http://www.thamtech.com/blog/2006/11/08/instantiation-order-with-extended-components/</link>
		<comments>http://www.thamtech.com/blog/2006/11/08/instantiation-order-with-extended-components/#comments</comments>
		<pubDate>Thu, 09 Nov 2006 01:13:21 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
		
		<category><![CDATA[ColdFusion]]></category>

		<guid isPermaLink="false">http://www.thamtech.com/blog/2006/11/08/instantiation-order-with-extended-components/</guid>
		<description><![CDATA[
The particular order that a child and parent component are instantiated should be noted.  The initialization code, that is, the code in a component that is outside cffunction tags, is executed first in the parent. For example, if you have a parent/base component:


Code (coldfusion)
&#60;!--- employee ---&#62; 

&#60;cfcomponent&#62; 

&#160; &#60;cfset this.salary = 50000&#62; 

&#160; &#60;cfset [...]]]></description>
			<content:encoded><![CDATA[<p>
The particular order that a child and parent component are instantiated should be noted.  The initialization code, that is, the code in a component that is outside cffunction tags, is executed first in the <em>parent</em>. For example, if you have a parent/base component:
</p>

<div class="ch_code_container" style="font-family: monospace;height:300px;"><div style="">Code (coldfusion)</div><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;!--- employee ---&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;cfcomponent&gt; </div></li>
<li style="font-weight: bold;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;cfset this.salary = 50000&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;cfset init()&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-weight: bold;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;cffunction name=&quot;init&quot; access=&quot;public&quot; returntype=&quot;employee&quot;&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;cfset this.overtimeSalary = this.salary * otMult()&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;/cffunction&gt; </div></li>
<li style="font-weight: bold;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;cffunction name=&quot;otMult&quot; access=&quot;private&quot;&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;cfreturn 1.5&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-weight: bold;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;/cffunction&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/cfcomponent&gt;</div></li></ol></div>
and a child component:
<div class="ch_code_container" style="font-family: monospace;height:300px;"><div style="">Code (coldfusion)</div><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;!--- manager ---&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;cfcomponent extends=&quot;employee&quot;&gt; </div></li>
<li style="font-weight: bold;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;cfset this.salary = 70000&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;cffunction name=&quot;init&quot; access=&quot;public&quot; returntype=&quot;manager&quot;&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-weight: bold;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; ... </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;/cffunction&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;cffunction name=&quot;otMult&quot; access=&quot;private&quot;&gt; </div></li>
<li style="font-weight: bold;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &lt;cfreturn 2&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &lt;/cffunction&gt; </div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-weight: bold;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/cfcomponent&gt;</div></li></ol></div>

<p>
then instantiating an object of type Manager will have a salary property set to 70000, because the cfset runs in Employee first, and <em>then</em> in Manager.
</p>

<p>
This makes pretty good sense to me.  The values of the child component override the values set in the parent.
</p>

<p>
This doesn't apply only to variables being set, though (whether it be the public <em>this</em> scope or the private <em>variables</em> scope).  If you call a function from the initialization code of a parent component, the function is called as it exists in the parent - the child part of the object has not been instantiated yet.
</p>

<p>
So with the example components above, the call to init() from within the initialization code of the parent component, Employer, makes a reference to the otMult() function.  Since the child part of the object has not been instantiated yet, the otMult() call returns 1.5, instead of the value of 2 you might want if you are instantiating a Manager.
</p>

<p>
If this becomes a problem for you, I suggest that you NOT try to call your initialization functions from the initialization code block of a component, and instead, put all your initialization code within init functions and call your init() function when you instantiate an object:
</p>

<div class="ch_code_container" style="font-family: monospace;height:100%;"><div style="">Code (coldfusion)</div><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"></div></li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;cfset myManager = CreateObject(&quot;component&quot;, &quot;Manager&quot;).init()&gt;</div></li></ol></div>

<p>
Happy Coding!
</p>]]></content:encoded>
			<wfw:commentRss>http://www.thamtech.com/blog/2006/11/08/instantiation-order-with-extended-components/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Books</title>
		<link>http://www.thamtech.com/blog/2006/11/05/books/</link>
		<comments>http://www.thamtech.com/blog/2006/11/05/books/#comments</comments>
		<pubDate>Sun, 05 Nov 2006 09:11:08 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
		
		<category><![CDATA[Books]]></category>

		<guid isPermaLink="false">http://www.thamtech.com/blog/2006/11/05/books/</guid>
		<description><![CDATA[I'll be graduating from The University of Texas at Austin soon.  As my schooling is coming to an end - at least for a while - I've been feeling more and more like now my education can finally begin!  Lately, I've been coming across a whole bunch of topics I'd like to learn [...]]]></description>
			<content:encoded><![CDATA[I'll be graduating from <a href="http://www.utexas.edu">The University of Texas at Austin</a> soon.  As my schooling is coming to an end - at least for a while - I've been feeling more and more like now my education can finally begin!  Lately, I've been coming across a whole bunch of topics I'd like to learn about and books I'd like to read. I've added a page on this site to list some of the <a href="/blog/books/">books</a> I'd like to read, and some books I'm currently reading or have recently read.  Take a look and read a book!  ...Honestly, I didn't mean to make that rhyme, it just came out.]]></content:encoded>
			<wfw:commentRss>http://www.thamtech.com/blog/2006/11/05/books/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Welcome&#8230;</title>
		<link>http://www.thamtech.com/blog/2006/11/03/welcome/</link>
		<comments>http://www.thamtech.com/blog/2006/11/03/welcome/#comments</comments>
		<pubDate>Fri, 03 Nov 2006 10:11:11 +0000</pubDate>
		<dc:creator>Tyler</dc:creator>
		
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to my blog.  I've been developing web applications, mostly in ColdFusion, for several years.  I hope to use this blog to share lessons learned, tools I've developed that I think others might find useful, and anything else I think up to share.  I welcome your comments and hope that someday, someone [...]]]></description>
			<content:encoded><![CDATA[Welcome to my blog.  I've been developing web applications, mostly in ColdFusion, for several years.  I hope to use this blog to share lessons learned, tools I've developed that I think others might find useful, and anything else I think up to share.  I welcome your comments and hope that someday, someone will find this site useful.

I just threw the template together, so the XHTML and CSS are a little rough.  I'll try to get around to cleaning it up a bit some day.]]></content:encoded>
			<wfw:commentRss>http://www.thamtech.com/blog/2006/11/03/welcome/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.341 seconds -->
