<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>&lt;!--- CFChris ---&gt; - Conferences</title>
			<link>http://www.cfchris.com/cfchris/index.cfm</link>
			<description>The blog of Chris Phillips, a ColdFusion developer with a passion for improvement.</description>
			<language>en-us</language>
			<pubDate>Sun, 05 Sep 2010 08:13:30 -0700</pubDate>
			<lastBuildDate>Fri, 14 Aug 2009 06:32:00 -0700</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>me@cfchris.com</managingEditor>
			<webMaster>me@cfchris.com</webMaster>
			
			
			
			
			
			<item>
				<title>CFUnited 2009: Adam Lehman - ColdFusion 9, What&apos;s New</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2009/8/14/CFUnited-2009-Adam-Lehman--ColdFusion-9-Whats-New</link>
				<description>
				
				First up was &lt;strong&gt;Server.cfc&lt;/strong&gt;. However that is a bit of a misnomer. You can actually point the administrator to any CFC. That CFC simply needs to have an onServerStart() method. This should be quite a boon for getting sites that have an expensive (read &quot;slow&quot;) first request all spun up and ready for traffic.

Next up was &lt;strong&gt;nested cftransaction&lt;/strong&gt;. Not a lot to explain here. From what I saw, it should satisfy you if you ever said to yourself &quot;I really wish I could nest transactions in CF&quot;.

Then we got introduced to &lt;strong&gt;cffinally/finally&lt;/strong&gt;. I personally have never used this even in languages that I have access to it. Basically it gives you this syntax: &quot;try { ... } catch (e) { ... } finally { ... }&quot;. If someone wants to explain an &lt;em&gt;compelling&lt;/em&gt; use case for &quot;finally&quot;, I would love to hear it...

And then there was &lt;strong&gt;cfcontinue&lt;/strong&gt; and it was good. Seriously! I mean, I&apos;m excited about this one and at the same time amazed it took them this long.
				 [More]
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 14 Aug 2009 06:32:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2009/8/14/CFUnited-2009-Adam-Lehman--ColdFusion-9-Whats-New</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>CFUnited 2009: Peter Bell - Requirements and Estimating</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2009/8/12/CFUnited-2009-Peter-Bell--Requirements-and-Estimating</link>
				<description>
				
				Peter looks at projects in roughly 3 categories.

&lt;ul&gt;
&lt;li&gt;Configuration &lt; $8000 - free spec (just set up something already built)
&lt;li&gt;Customization &lt; $50,000 - paid spec (requirements gathering, setting up and customizing packages)
&lt;li&gt;Exploration $50,000 - no spec (hard to even define scope)
&lt;/ul&gt;

&lt;h3&gt;Configuration&lt;/h3&gt;
These projects are all about efficiency. You will need to simplify the specs for these types of projects. You will need to have/use configurable code to implement deliverable. That could be via something with a setting file or configuration wizard. In some cases you might use DSLs (domain specific languages). And for very simple stock types of things you can even reuse prior specification documents (copy and paste, or compile stock specs as you go).

&lt;h3&gt;Customization&lt;/h3&gt;
I think here he was talking about a site that will use a lot of code that you or someone else already wrote.
				 [More]
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 12 Aug 2009 11:57:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2009/8/12/CFUnited-2009-Peter-Bell--Requirements-and-Estimating</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() 2008: From Procedural to OO - Dan Wilson</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2008/5/3/cfObjective-2008-From-Procedural-to-OO--Dan-Wilson</link>
				<description>
				
				One of the keywords here is &quot;pragmatism&quot;. I know from personal, continuing experience that it can be a daunting proposition to move an application from procedural to OO.

Things you would want to consider when refactoring are in-house skill-sets, and problem spots in your application. If you have a bunch of people that are very procedural programmers, you may be wasting your time with a re-factor. You&apos;re team still has to be able to work on the code right? But, if people in your shop have some OO experience or are game to learn, then it&apos;s a good idea. Once you get started you want to ask yourself, &quot;Where are our problem spots?&quot;. You already need to work on those spots anyway, so it&apos;s an efficient choice to start there in your OO refactor.

Always use version control! Even if you work alone! Seriously, however long it takes you to set up your version control repo of choice, it will be time well spent. You will need that version history while re-factoring.

Dan, talked some on patterns. There was a liberal sprinkling of pragmatism when talking about patterns too. Use them where they actually solve a problem and to the extent that you need them. Don&apos;t slavishly apply a pattern verbatim! I won&apos;t go into detail on the patterns. However, I&apos;d like to mention, the first one (MVC) doesn&apos;t even require OO. However, it would be a good first step to get you closer to OO. Once you have separated the code that deals with the data (Model) from the code that displays stuff to the user (View) and the code that wires those together (Controller), then you&apos;re ready to see what can be put in Objects.

This was a talk with a lot of practical code examples. So, I think it may lose a bit in the translation.

&lt;strong&gt;Update:&lt;/strong&gt; Dan was kind enough to send me a link to the presentation material. Get it &lt;a href=&quot;http://www.nodans.com/enclosures/DanWilsonRefactoringPreso.zip&quot;&gt;here&lt;/a&gt;.
				
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sat, 03 May 2008 08:44:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2008/5/3/cfObjective-2008-From-Procedural-to-OO--Dan-Wilson</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() 2008: Friday Keynote</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2008/5/2/cfObjective-2008-Friday-Keynote</link>
				<description>
				
				Jared Rypka-Hauer gave an intro with some interesting facts about cf.Objective(). This is the 3rd year for the conference. There are 30% more people here this year! 50% are new attendees from prior years.

Next up was Jason Delmore. His opinion is that cf.Objective() has become the premier &quot;advanced&quot; ColdFusion conference. There are 6 Adobe people in attendance. It has been a great year for ColdFusion. They have gotten tons of press coverage. CF is up 11 places in the Tiobe index (Just checked. It&apos;s in the top 20). 8.01 was a pretty good update. Lot&apos;s little gems. Like, more flexible use of AttributeCollection, nested struct and array notation, 64 bit support, etc. So, you owe it to yourself to check out the 8.01 release if you haven&apos;t. 

Centaur, the next version of ColdFusion, is well under way. Jason put up a slide about being more &quot;open&quot; with ColdFusion. However, at this point someone fainted (from excitement?). So, we really didn&apos;t get the whole speal about  this new open-ness...
				
				</description>
						
				
				<category>Conferences</category>				
				
				<pubDate>Fri, 02 May 2008 08:07:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2008/5/2/cfObjective-2008-Friday-Keynote</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() 2008: Here We Go Again</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2008/5/2/cfObjective-2008-Here-We-Go-Again</link>
				<description>
				
				I&apos;m at cf.Objective() 2008, sitting in the conference room waiting for the keynote to start. Last years cf.Objective() was a great conference! I see no reason this year will be different. :-)

In 2007, I blogged every session I went to in real-time. It was a little stressful (and fun). I think this year I&apos;ll just take notes in the sessions and write them up later.

That&apos;s it for now. Hopefully you are all here with me and not even reading this post. (Or if you&apos;re reading it after the conf, you &lt;em&gt;were&lt;/em&gt; here.)
				
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 02 May 2008 06:47:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2008/5/2/cfObjective-2008-Here-We-Go-Again</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>Thank You Adobe!</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2007/7/13/Thank-You-Adobe</link>
				<description>
				
				The Adobe &lt;a href=&quot;http://onair.adobe.com/schedule/cities/portland.php&quot; target=&quot;_blank&quot;&gt;on Air Bus Tour&lt;/a&gt; was in Portland last night. It was a very exciting event. The bus crew did a great job presenting the unique opportunity that &lt;a href=&quot;http://www.adobe.com/go/air&quot; target=&quot;_blank&quot;&gt;AIR&lt;/a&gt; gives both Flash and HTML developers to build cross-platform desktop application with their current skill-set.

I managed to answer a trivia question and get a bag of &lt;b&gt;seven&lt;/b&gt; &lt;a href=&quot;http://www.oreilly.com/&quot; target=&quot;_blank&quot;&gt;O&apos;Reilly&lt;/a&gt; books! Add the 3 beers I had, the excellent catered food, the free training, and the networking opportunities and I have only one thing to say.

Thank you Adobe!
				
				</description>
						
				
				<category>Web 2.0</category>				
				
				<category>Adobe AIR</category>				
				
				<category>Conferences</category>				
				
				<pubDate>Fri, 13 Jul 2007 13:38:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2007/7/13/Thank-You-Adobe</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() Home Again, Home Again ...</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2007/5/6/cfObjective-Home-Again-Home-Again-</link>
				<description>
				
				Wow! I&apos;m home from cf.Objective() 2007.

That is one fantastic conference. If you can&apos;t get your fix of enterprise level topics and valuable networking there, then I don&apos;t know what&apos;s wrong with you.

The sessions were great. Here is a &lt;a href=&quot;http://www.cfchris.com/cfchris/search.cfm/search/cf.Objective&quot;&gt;handy link&lt;/a&gt; to all my session posts.

And I got to meet and even hang out with some of the absolute rock-stars of the ColdFusion community. All of them are very warm, friendly people too. I got to thank Ray, in person, for BlogCFC. I got to be there when Mark Drew revealed the &lt;a href=&quot;http://www.cfeclipse.org/index.cfm?event=page&amp;page=news#art33&quot; target=&quot;_blank&quot;&gt;CF_Frameworks Plugin&lt;/a&gt; for Eclipse. 

I won&apos;t bore you with anymore details. I&apos;ll just say this: 

&lt;strong&gt;Go to cf.Objective() 2008 if you can!&lt;/strong&gt;

Oh, and I&apos;d like to say thanks to Jared and all the people that made the conference happen. You guys are rock-stars too. Jared even has the leather pants to prove it!
				
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sun, 06 May 2007 21:26:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2007/5/6/cfObjective-Home-Again-Home-Again-</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() Sunday Keynote: Ben Forta</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2007/5/6/cfObjective-Sunday-Keynote-Mr-Forta</link>
				<description>
				
				Good news. Adobe hearing from customers that they are feeling confident with CF and happy with the direction.

&lt;!-- ColdFusion 8 is about: --&gt;

&lt;strong&gt;Developer Productivity:&lt;/strong&gt; CF has been, and continues to be, way ahead of anything in the space in ease of implementation. What other technology has the ease of cfquery -&gt; cfoutput.

&lt;strong&gt;Integration:&lt;/strong&gt; Again, CF has had this going for it for several versions. ColdFusion 8 just adds even more points of integration. (A lot of it!)

&lt;strong&gt;AJAX Support:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Makes consuming CFCs for AJAX clients super easy.&lt;/li&gt;
&lt;li&gt;ColdFusion AJAX Wizard (Similar to FLEX wizard) in Eclipse.&lt;/li&gt;
&lt;li&gt;The AJAX debug panel I talked about the other day... Turns out you can use it to debug your existing AJAX projects. {big applause]&lt;/li&gt;
&lt;li&gt;New JSON functions: isJSON(), serializeJSON(), and deSerializeJSON() [Love it!]&lt;/li&gt;
&lt;/ul&gt;

&lt;strong&gt;ColdFusion Debugger:&lt;/strong&gt; There will be an actual debugger built in Eclipse. It has breakpoints, watch expressions, ... Ben says, &quot;It&apos;s a full debugger&quot;. It looks really nice, you can actually run the code to be debugged from within Eclipse or from any other browser. [big applause]

&lt;h3&gt;Flex:&lt;/h3&gt;

With Flex and CF and Flex Data Services, you can solve the problem of two people editing the same data. He shows a demo of two browser tabs with the same edit form. He changes the data in an input without even leaving the field. Then in the other tab, he changes the value in that field and saves. Back in the other tab, there is a prompt waiting. The prompt tells the user about the conflict and gives them a choice how to resolve it.

This currently requires you to write &quot;assemblers&quot; (can be a CFC). These CFCs have to conform to a specific API. 

Now there is a wizard in Eclipse to create the CFCs for you.

&lt;/strong&gt;In ColdFusion 8 this will be even better&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;You will now be able tell LCDS (formerly FDS), via a gateway, about records that are altered outside of the Flex/LCDS loop.&lt;/li&gt;
&lt;li&gt;The assemblers can return queries directly from the fill function without converting each row to a VO.&lt;/li&gt;
&lt;li&gt;Assemblers can use structs instead of CFCs. The structs can contain type info for Flex to use to identify the AS object type.&lt;/li&gt;
&lt;li&gt;And the FDS integration will also be improved. Easier installer. Better CF integration. And there should be better performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;AND ... ColdFusion 8 will be available mid 2007.&lt;/h3&gt;
				
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sun, 06 May 2007 09:34:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2007/5/6/cfObjective-Sunday-Keynote-Mr-Forta</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() Kelly Brown: JVM/ColdFusion Performance Tuning</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2007/5/5/cfObjective-Kelly-Brown-JVMColdFusion-Performance-Tuning</link>
				<description>
				
				I attended Kelly&apos;s session. 

However, I am going to leave my notes from the session un-published. I&apos;m sorry, but this topic is so loaded and unique to each companies situation (one of the points he made). I&apos;m afraid someone would change some setting I mention and break their server.

However it is a topic worth looking into on your own. And when the Scorpio server monitoring stuff comes out, it will definitely be helpful in seeing what settings may need tweaking.

You may want to keep your eyes on &lt;a href=&quot;http://www.kellyjo.com/blog/index.cfm&quot; target=&quot;_blank&quot;&gt;Kelly&apos;s blog&lt;/a&gt;. He said he may put his slides up there.
				
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sat, 05 May 2007 15:40:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2007/5/5/cfObjective-Kelly-Brown-JVMColdFusion-Performance-Tuning</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() Sean Corfield: SOA</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2007/5/5/cfObjective-Sean-Corfield-SOA</link>
				<description>
				
				&lt;h3&gt;SOA: Service-Oriented Architecture&lt;/h3&gt;

This will be interesting. There will be very little code because, Sean no longer works for Adobe. So, he has no access to the code that his team wrote...

&lt;h3&gt;What you need/ should have.&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data Dictionary&lt;/li&gt;
&lt;li&gt;Service Directory&lt;/li&gt;
&lt;li&gt;SaaS (Service as a Service)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Why would you do SOA?&lt;/h3&gt;

IDC predicts a compound growth rate of 20% per annum for SaaS. That means that there is money to be made.

&lt;h3&gt;What does SOA Applications look like?&lt;/h3&gt;

They will usually be a combination of Local Code and Remote code.

Typically MVC or MVP (Model View Presenter)
So, you would have local code for the View and Controller. And you&apos;d have a Service Locator to expose the remote Services.

ColdFusion is a great choice for SOA because it has such good support for the different protocals that you would access remote services.

&lt;h3&gt;How is SOA different?&lt;/h3&gt;

They are Client-Server by definition. 

The software consuming the service becomes the client. This is different than what we are used to with the browser being the client.

Often the &quot;client&quot; will not have any sense of session. So, don&apos;t rely on session, cookie or client scope. In fact, you may need to turn session management off to avoid creating orphaned sessions every time your service is hit.

So, session management will have to be basically hand-coded. You will need your own authentication. You may have server clusters, so you would need to store authenticated clients in a database server.

Also, beware of call and return types. Different clients will have support for different ranges of data types. Most of them will have support for the simple data types. Query data type is probably a no-no for most non-CF clients. Un-types stucts may be a problem too. Typed &quot;structs&quot; are good and involve using CFCs with cfproperty that only contain data. XML is also a good choice. And JSON is building momentum.

You could also check out &lt;a href=&quot;http://corfield.org/blog/index.cfm/do/blog.entry/entry/REST_Adapter_and_Test_Cases&quot; format=&quot;_blank&quot;&gt;Sean&apos;s REST Adapter&lt;/a&gt;. It wraps remote CFC API in simple XML.

&lt;h3&gt;Gotchas:&lt;/h3&gt;

&lt;strong&gt;API:&lt;/strong&gt;
&lt;br/&gt;Your API, once released is a contract with your clients. You want to be sure you have locked in your API. Then, you will have to be extremely careful with any changes. In fact, if you make any changes to your API, you may need to provide new end-points to your consumers and support both versions for a grace-period.

&lt;strong&gt;Exceptions:&lt;/strong&gt;
&lt;br/&gt;You should consider returning success/failure as a root node in whatever packet you are sending to the clients. Then, you may want to send back a result code, that could be translated by any client and into any language.

&lt;strong&gt;Clustering and Caching:&lt;/strong&gt;
&lt;br/&gt;Each member of a cluster has it&apos;s own cache. So, you will need to keep caches across servers in sync.

&lt;h3&gt;Testing:&lt;/h3&gt;

Sean says, &quot;Write an extensive suite of tests&quot;. And make running them  part of your development habits. There are tools to help, like &lt;a href=&quot;http://www.cfcunit.org/cfcunit/&quot; target=&quot;_blank&quot;&gt;cfcUnit&lt;/a&gt;. And you can even automate cfcUnit in Eclipse with an ANT task.

Also, check out Cruise Control. It can automate testing by watching your version control repository and deploying code to a test server and running tests when you check code in.
				
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sat, 05 May 2007 09:25:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2007/5/5/cfObjective-Sean-Corfield-SOA</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() Adam Lehman: Scorpio Server Monitoring</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2007/5/5/cfObjective-Adam-Lehman-Scorpio-Server-Monitoring</link>
				<description>
				
				This to me is one of the &lt;b&gt;best&lt;/b&gt; features in CF (8?).

With the tracking turned on it collects a sick amount of metrics. You can see requests. You can see all the memory scopes. You can drill down into the scopes.

There is a page for looking at Cumulative Server Usage. This is very cool! It will keep track of templates and what percentage of the over all server time they use. So, you&apos;ll know what templates could benefit from tuning.

There are memory usage charts that show you how much memory is used over time broken down by scope. Then you can see things like the average memory usage per session. There&apos;s another page in this section that will show you how much ram the average request takes.

There&apos;s reporting that shows memory size for queries that you can can use to optimize block factor. I need to look into this one...

Oh, not monitoring related. But, you can now use cfqueryparam and the CF caching mechanism. Yeah, you read that right.

Andrew also shows a report where you can see the most commonly run queries. Again, this will help us know where we can best spend our tuning efforts.

Scorpio supports &quot;Alerts&quot;. These are very configurable. Basically, you might set an alert when the majority of your threads have been tied up for a determined time. Then the server will do what you tell it while the server is under that condition.

Things it might do:
&lt;ul&gt;
&lt;li&gt;It can send you an email.&lt;/li&gt;
&lt;li&gt;It can dump a snapshot (for use later determining what went wrong).&lt;/li&gt;
&lt;li&gt;It can quit responding to request until things get under control.  &lt;/li&gt;
&lt;li&gt;Or it can just kill threads running above a threshold.&lt;/li&gt;
&lt;li&gt;It can call a CFC. It will call &quot;onAlertStart()&quot; start as soon as you hit your threshold and &quot;onAlertEnd()&quot; when it has passed.&lt;/li&gt;
&lt;/ul&gt;

The overhead for the detailed monitoring is about 16% currently. So, you probably won&apos;t leave it on all the time. Later he specified that you can turn on only parts of the monitoring. So, you can lower the overhead by, say, turning off Memory Tracking.

However, you can do a multi-server monitoring panel that has very low overhead. This just shows you that the servers are fine or if they are in Alert mode. When they go into Alert mode, then you can pop open the monitoring and look for rogue threads.

If you application has even moderate traffic, you will love this!
				
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sat, 05 May 2007 08:27:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2007/5/5/cfObjective-Adam-Lehman-Scorpio-Server-Monitoring</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() Daryl Banttari: Database Performance Tuning</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2007/5/5/cfObjective-Daryl-Banttari-Database-Performance-Tuning</link>
				<description>
				
				In many CF apps &lt;span style=&quot;font-weight:bold;font-style:italic;&quot;&gt;databases are choke points&lt;/span&gt;.

Without indexes, SQL Server will do a full table scan (finishing even after it finds your record).

Clustered Index actually becomes the table. So, on one-to-many tables, you would create a Clustered Index on the foreign key in the &quot;many&quot; table.

&lt;strong&gt;Summary Of A Query Round-Trip:&lt;/strong&gt; SQL goes from CF to JDBC over the network to the Query Optimizer and then to the Execution Engine. Finally, the Execution Engine sends the result back to the driver which hands it to CF.

If indexes are not very selective they will actually be skipped. When he says &quot;very selective&quot;, he means like eliminating 95% of the other records.

If you run a SQL statement in Query Analyzer, you can check the execution plan. If you see Parallelism, this is bad. Look at the &quot;Estimated subtree cost&quot;. It should be .01 to .1.

At this point, you can add indexes based on what path you usually take to drill into that table. This part obviously takes some thought. If the results of a query are most frequently ordered by a second column, consider adding it to the index.

Note: SQL server will generally only use one index per lookup.

Now on to the report type queries. You can use &quot;covering indexes&quot; to cover special cases. Daryl&apos;s recommendation is to name the indexes for what they are covering (ie. IX_CoverMonthlyExpenseReport).

In Query Analyzer all the icons show you what types of lookups the database will make. I&apos;ll try to find a page to link to with what they mean...

&lt;h3&gt;Tips:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Tune first.&lt;/li&gt;
&lt;li&gt;But after that there are ways to tell if you need to actually physically tune your server. Then, you can do things like splitting the table data, log data, and indexes all off to separate physical storage.&lt;/li&gt;
&lt;li&gt;Use Union if you have global &quot;or&quot;s on different columns.&lt;/li&gt;
&lt;/ul&gt;

This post feels a little rough to me. But, I want to get them out ASAP. I reserve the right to come back and spiff it.
				
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Sat, 05 May 2007 07:09:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2007/5/5/cfObjective-Daryl-Banttari-Database-Performance-Tuning</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() Mark Drew: CFEclipse</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2007/5/4/cfObjective-Mark-Drew-CFEclipse</link>
				<description>
				
				Mark Drew is presenting on &lt;a href=&quot;http://www.cfeclipse.org&quot;&gt;CFEclipse&lt;/a&gt;. He&apos;s the lead developer for the CFEclipse project.

Session opens with funny slide stating session as &quot;Intro to Homesite&quot;.

Then Mark asks who in the crowd already uses CFEclipse. All but a few hands shot up. This is significant considering his session got moved to the big room (attendance is almost what it was for the keynote).

He covers a little of the history. Started by Rob Rohan... I&apos;ll let you find that if you&apos;re curious.

He talks about what &lt;a href=&quot;http://www.eclipse.org/&quot; target=&quot;_blank&quot;&gt;Eclipse&lt;/a&gt; is. It&apos;s a Java IDE that has an API for adding other plugin IDEs. CFEclipse is one of these plugins for Eclipse. It is a plugin for CFML developers. It has support for multiple versions of the CFML syntax. So, that you can have correct code completion and insight for CFMX 6,7,(8?), Bluedragon, Railo...

The newer CFEclipse releases have a CFML toolbar at the top of each files tab (ala HomeSite).

CFEclipse has a nice Snippets feature. It includes syntax for making snippets prompt you for stuff. 

For example if your snippet was

&lt;code&gt;
&lt;cfdump var=&quot;#$${var}&quot; /&gt;
&lt;/code&gt;

Then, it would promp you for &quot;var&quot; and if you punched &quot;session&quot; into the prompt, you&apos;d get the below

&lt;code&gt;
&lt;cfdump var=&quot;#session#&quot; /&gt;
&lt;/code&gt;

This is a simple example. But, I have snippets at work that have several replacement fields some of which have default actions. So, my snippets are almost like little code gen wizards.

He also, showed how you can connect to and edit files from arbitrary file or FTP locations instead of only in your projects.

Next up, TODO: comments. When you enter a comment that starts with &quot;TODO:&quot;, it shows up in a task view at the bottom. Again, I&apos;ve found this one very useful at work.

Mark is now showing the Scribble pad in CFEclipse. This is a cool feature. You just create a scribble.cfm template in your webroot. Then you go into the preferences for CFEclipse in Eclipse and map out where it is. Then the next time you want to run a little snippet of CF, you hit F8 and it will pop up that file. Then you type in your snippet, save it, and hit F5. This will run your snippet in the browser docked at the bottom. Simple, easy, time-saver.

Ok, now here&apos;s the big news...

&lt;h3&gt;&quot;Project: Unity&quot;&lt;/h3&gt;

Project: Unity is a companion to CFEclipse. It is a tool for working with any of the modern CFML frameworks that are configured via XML! It will auto-detect the framework. Then in the view panel, you can drill down into the configuration file for the app. For instance, in a Fusebox 4/5 app, it will drill down into the circuits. If you double-click a specific fuseaction, it will jump you into the correct circuit.xml file at the correct line. There&apos;s a lot more to it than that. Way more! It will even introspect the configuration files and help you add new nodes to the file. It works slick.

It looks like it already has support for several frameworks. And the plugin itself is configured by XML. So, with a little work, it can really support any framework that has XML configuration files!

I must say it: &lt;strong&gt;Mark Drew, you are a rock-star!&lt;/strong&gt;
				
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 04 May 2007 14:06:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2007/5/4/cfObjective-Mark-Drew-CFEclipse</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() Sean Corfield: AJAX &amp; Scorpio</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2007/5/4/cfObjective-Sean-Corfield-AJAX--Scorpio</link>
				<description>
				
				FYI: Sean doesn&apos;t work for Adobe anymore. He is working with a start-up.

CFMX 7 gave us flash forms support. Scorpio gives us extensive AJAX support.

The advanced DHTML controls are using the Yahoo UI library. This is a good thing, because it&apos;s a very mature library that is extensible through CSS and JS.

Most (all?) of the AJAX controls work by binding. For example a select box that get&apos;s it&apos;s values from a CFC on the server might look like:
&lt;code&gt;
&lt;cfselect name=&quot;state&quot; bind=&quot;cfc:com.geography.getStates()&quot; bindonload=&quot;true&quot;&gt;&lt;/cfselect&gt;
&lt;/code&gt;

And you could make related selects like this:

&lt;code&gt;
&lt;cfselect name=&quot;state&quot; bind=&quot;cfc:com.geography.getStates()&quot; bindonload=&quot;true&quot;&gt;&lt;/cfselect&gt;
&lt;cfselect name=&quot;city&quot; bind=&quot;cfc:com.geography.getCities(state={state})&quot;&gt;&lt;/cfselect&gt;
&lt;/code&gt;

So, the majority of the code to support that example would be in the geography CFC. And we already know how to write that stuff, right?

Next Sean showed cfgrid format=&quot;html&quot;. This was crazy simple. It&apos;s the same syntax that you&apos;d use to create a grid in the other formats except you specify a &quot;bind&quot; attribute that links to a CFC method.

Oooh! Now he&apos;s showing cfajaxproxy. With this tag you can basically create a javascript bridge to call methods on CFCs from javascript client-side. It&apos;s very cool. And even better, there&apos;s a slick debugging panel that you can use to see the traffic back and forth from the server. It will even dump things to the debugging panel in the format that we are all used to from cfdump.

He also showed the new layout controls. They are a lot like the Flex layout controls. You can have vertically and horizontally separated panels. The panels can be fixed or have a draggable separator. there are even methods for opening and closing panels and it animates the transition. It looked really nice.

Now he&apos;s showing the cfwindow tag. This will give you a floating, resizable DHTML window. You can supply the body of the window or it can populate via the &quot;bind&quot; attribute.

People in the crowd are asking if the new controls can be styled. Sean is assuring people that they will be able to style the controls with CSS to their hearts content.

Note: Please be forgiving in regards to my grammar in these posts. I am blogging this stuff during the sessions. Which explains why the tense keeps changing :-)
				
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 04 May 2007 11:38:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2007/5/4/cfObjective-Sean-Corfield-AJAX--Scorpio</guid>
				
			</item>
			
		 	
			
			
			<item>
				<title>cf.Objective() Hal Helms: Object Oriented Modeling</title>
				<link>http://www.cfchris.com/cfchris/index.cfm/2007/5/4/cfObjective-Hal-Helms-Object-Oriented-Modeling</link>
				<description>
				
				This is a heady session.

Hal says a big mistake OO developers have is thinking about &quot;attributes&quot; of objects instead of their &quot;responsibilities&quot;.

He says be careful of collections of unrelated functions &quot;masquerading&quot; as Objects.

&lt;h3&gt;Domain Models&lt;/h3&gt;

Domain model is built of ADTs (Abstract Data Types) which relate to each other in a way that &quot;models&quot; the behavior of the objects in the real world. (Although, it may not model exactly the real world, because there are differences in the assumptions between the two).

How do you model the Domain Objects? 

&lt;h3&gt;UML (Unified Modeling Language)&lt;/h3&gt;

When modeling, resist adding all properties initially. Really focus on Classes and Methods. Use cases will help keep the focus on behavior.

UML portion of talk it too much for me to detail while listening. (Sorry)

&lt;h3&gt;Next is &quot;Seperation of Concerns&quot;&lt;/h3&gt;

Classes should be Cohesive:
A class should have a tight focus on it&apos;s responsibilities.

And they should exibit &quot;Low coupling&quot;:
Classes should work with each other through a stable interface (API). They should only know about this stable API and not the internal implementation.

&lt;h3&gt;An Exercise In OO Modeling&lt;/h3&gt;

Hal walked us through the beginning of modeling a company and it&apos;s employees. Again, this is too detailed to document. But, basically, he started with HourlyEmployee and SalarieEmployee inheriting from Employee. Then he brought in employees that could be commissioned and how the inheritance tree was getting messy. Plus, you would have to change an employees fundamental type to change how he is payed. 

So, this could be solved better by composition. Now an Employee would have a Wages object. And his Wages object could be switched without disrupting his relation to any other objects.

&lt;h3&gt;My Summary&lt;/h3&gt;

I can tell that this is a topic that I will be improving on as long as I work in this field. And I may hit landmarks along the way, but, there will be no end of the road.
				
				</description>
						
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 04 May 2007 09:36:00 -0700</pubDate>
				<guid>http://www.cfchris.com/cfchris/index.cfm/2007/5/4/cfObjective-Hal-Helms-Object-Oriented-Modeling</guid>
				
			</item>
			
		 	
			</channel></rss>