<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>SamSpeak - ColdFusion</title>
			<link>http://sam.curren.ws/index.cfm</link>
			<description>What I Gotta Say</description>
			<language>en-us</language>
			<pubDate>Thu, 09 Sep 2010 02:55:35-0700</pubDate>
			<lastBuildDate>Tue, 10 Feb 2009 08:01:00-0700</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>telegramsam@byu.edu</managingEditor>
			<webMaster>telegramsam@byu.edu</webMaster>
			
			<item>
				<title>Trouble with Random Long-Running request in ColdFusion 8</title>
				<link>http://sam.curren.ws/index.cfm/2009/2/10/Trouble-with-Random-LongRunning-request-in-ColdFusion-8</link>
				<description>
				
				I&apos;ve been experiencing some run-time weirdness with ColdFusion for the past year or so, and I&apos;ve finally decided to post my observations and see if anyone else has been having similar troubles.

The trouble shows up on any number of scripts, but is most likely to appear with scripts that are called frequently. The screenshot I&apos;ve included shows a Slow Request report from the ColdFusion Server Monitor. You can see that this request took &lt;b&gt;110 seconds&lt;/b&gt; to complete. The VERY strange part is that the runtime of the Application.cfc onRequest method (the outermost piece of code to run on any request) took only 468ms to complete. So what happened to the &lt;b&gt;109 seconds&lt;/b&gt; that were not spent executing my request? How can I prevent this from happening?

Also observe the Min/Max/Avg response times for the script. At the time of this screenshot, this script had been called 250 times. Multiplying the average response time (.505 seconds) by the request count (250) tells us that this script has occupied 126.25 seconds of server time. Removing this one long running request (250-1, 126.25-110.234) from the statistics, we find the script has an average running time of 0.064 seconds, which is a more reasonable run-time, considering the reported min response time of 0.015 seconds.

Eliminating these random long-running requests will do great things for the usability of the website, as well as free up server resources.

&lt;img src=&quot;http://sam.curren.ws/images/ColdFusionLongRunningRequest.png&quot;&gt;

&lt;h3&gt;Misc Details&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ColdFusion Enterprise 8,0,1,195765&lt;/li&gt;
&lt;li&gt;Monitoring and Profiling Enabled&lt;/li&gt;
&lt;li&gt;Windows 2003&lt;/li&gt;
&lt;li&gt;Java 1.6.0_04&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;Summary&lt;/h3&gt;
Scripts will randomly take MUCH longer then they usually do.

There seems to be a massive discrepancy between the Response Time and the Time Taken by the onRequest method.

Why is this happening, and what can be done about it? 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Development</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Tue, 10 Feb 2009 08:01:00-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2009/2/10/Trouble-with-Random-LongRunning-request-in-ColdFusion-8</guid>
				
			</item>
			
			<item>
				<title>UninvocableEntityException: Puzzling ColdFusion Exception</title>
				<link>http://sam.curren.ws/index.cfm/2008/10/24/UninvocableEntityException-Puzzling-ColdFusion-Exception</link>
				<description>
				
				So I&apos;m calling a function in the same CFC, and I get the following error:

&lt;code&gt;
Entity has incorrect type for being called as a function.
The symbol you provided getProductColors is not the name of a function.
&lt;/code&gt;

Intersting. The top of the stack trace reads:

&lt;code&gt;
coldfusion.runtime.CfJspPage$UninvocableEntityException: Entity has incorrect type for being called as a function.
	at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2441)
	at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:432)
	at cfceilume2ecfc2110149128$funcSAMPLES.runFunction(D:\site\insideDev\com\ew\feed\ceilume.cfc:71)
&lt;/code&gt;

While I have no idea why the error occurred, I was able to make the problem go away by modifying the name of the method I was calling, changing it from getProductColors to getProductColorList. 

Strange. A Google Search only returned one result, so I thought I&apos;d contribute a little info in case someone else finds the same error. 
				</description>
				
				<category>ColdFusion</category>				
				
				<pubDate>Fri, 24 Oct 2008 06:46:00-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2008/10/24/UninvocableEntityException-Puzzling-ColdFusion-Exception</guid>
				
			</item>
			
			<item>
				<title>jEditable TinyMCE Plugin</title>
				<link>http://sam.curren.ws/index.cfm/2008/6/12/jEditable-TinyMCE-Plugin</link>
				<description>
				
				&lt;p&gt;Over the past view weeks, I&apos;ve been working with &lt;a href=&quot;http://www.appelsiini.net/&quot;&gt;Mika Tuupola&lt;/a&gt;, author of the &lt;a href=&quot;http://www.appelsiini.net/projects/jeditable&quot;&gt;jEditable&lt;/a&gt; &lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt; extension. jEditable makes edit in place forms easy, and is itself extensible, allowing the creation of custom edit types, such as a date picker.&lt;/p&gt;  &lt;p&gt;I&apos;ve been using &lt;a href=&quot;http://tinymce.moxiecode.com/&quot;&gt;TinyMCE&lt;/a&gt; as a richtext editor, and decided to create a custom edit type for jEditable that makes TinyMCE easy. Mike added a few additional customization hooks that enabled me to complete the plugin, and I&apos;ve included example code below. This example is not meant to be a full and complete explanation, so make sure you dig into the jEditable and TinyMCE documentation.&lt;/p&gt;  &lt;p&gt;A big thanks to Mike for his help. He has &lt;a href=&quot;http://www.appelsiini.net/2008/7/jeditable-and-tinymce&quot;&gt;released the updated jEditable code&lt;/a&gt; that contains some additional hooks needed by my example code below.&lt;/p&gt;
&lt;p&gt;First, I include the necessary javascript files for each library. Your specific versions or names may vary:&lt;/p&gt;
&lt;code&gt;
&lt;script src=&quot;/resource/tiny_mce/tiny_mce_src.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;/resource/jquery/jquery-1.2.3.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;/resource/jquery/jquery.jeditable.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/code&gt;
&lt;p&gt;Then, I setup TinyMCE, and the TinyMCE jEditable plugin as well:&lt;/p&gt;
&lt;code&gt;
&lt;script type=&quot;text/javascript&quot;&gt;

$.fn.tinymce = function(options){
	return this.each(function(){ 
		tinyMCE.execCommand(&quot;mceAddControl&quot;, true, this.id);
	});
}

function initMCE(){
	tinyMCE.init({mode : &quot;none&quot;,
		theme : &quot;advanced&quot;,
		theme_advanced_toolbar_location : &quot;top&quot;,
		theme_advanced_toolbar_align : &quot;left&quot;,
		theme_advanced_statusbar_location : &quot;bottom&quot;,
		theme_advanced_buttons1 : &quot;bold,italic,underline,strikethrough,separator,bullist,numlist,undo,redo,link,unlink&quot;,
		theme_advanced_buttons2 : &quot;&quot;,
		theme_advanced_buttons3 : &quot;&quot;,
		theme_advanced_resizing : true});
}

initMCE();


$.editable.addInputType(&apos;mce&apos;, {
	element : function(settings, original) {
		var textarea = $(&apos;&lt;textarea id=&quot;&apos;+$(original).attr(&quot;id&quot;)+&apos;_mce&quot;/&gt;&apos;);
		if (settings.rows) {
			textarea.attr(&apos;rows&apos;, settings.rows);
		} else {
			textarea.height(settings.height);
		}
		if (settings.cols) {
			textarea.attr(&apos;cols&apos;, settings.cols);
		} else {
			textarea.width(settings.width);
		}
		$(this).append(textarea);
			return(textarea);
		},
	plugin : function(settings, original) {
		tinyMCE.execCommand(&quot;mceAddControl&quot;, true, $(original).attr(&quot;id&quot;)+&apos;_mce&apos;);
		},
	submit : function(settings, original) { 
		tinyMCE.triggerSave();
		tinyMCE.execCommand(&quot;mceRemoveControl&quot;, true, $(original).attr(&quot;id&quot;)+&apos;_mce&apos;);
		},
	reset : function(settings, original) {
		tinyMCE.execCommand(&quot;mceRemoveControl&quot;, true, $(original).attr(&quot;id&quot;)+&apos;_mce&apos;);
		original.reset(); 
	}
});
&lt;/script&gt;
&lt;/code&gt;
&lt;p&gt;This next block of code initializes TinyMCE, first as a regular jQuery plugin (not in place editable), and then as the jEditable enabled in place editor:

&lt;code&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
$(function(){
	$(&apos;#foo&apos;).tinymce();
	
	$(&quot;#bar&quot;).editable(function(value, settings){
		console.log(this, value, settings);
		return value;
	
	}, { 
		type      : &apos;mce&apos;,
		submit    : &apos;OK&apos;,
		indicator : &quot;Saving...&quot;,
		tooltip   : &apos;Click to edit...&apos;,
		width     : &apos;500px&apos;,
		height    : &apos;100px&apos;
	});
});

&lt;/script&gt;
&lt;/code&gt;
&lt;p&gt;In this example, both of the selected elements are HTML textareas. Clearly, your settings for jEditable and TinyMCE will change with your own needs, but this should get you started.&lt;/p&gt;
&lt;p&gt;Finally, a big thanks to Mike, for writing the jEditable plugin in the first place, and for being so supportive and patient in helping me write this TinyMCE plugin!&lt;/p&gt;
&lt;p&gt;Edited 24Jan09: Applied IE6 Fix as recommended by Rick in comments.&lt;/p&gt; 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Javascript</category>				
				
				<category>Development</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 12 Jun 2008 13:25:00-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2008/6/12/jEditable-TinyMCE-Plugin</guid>
				
			</item>
			
			<item>
				<title>Google IO: State of Ajax</title>
				<link>http://sam.curren.ws/index.cfm/2008/5/28/Google-IO-State-of-Ajax</link>
				<description>
				
				&lt;p&gt;My first session here at Google IO was on the State of Ajax. I wasn&apos;t there till the end, but the main message seemed to be that Ajax is good.&lt;/p&gt;  &lt;p&gt;More specifically, If you are writing Javascript apps without a library, stop it! They do nice things to handle cross browser differences and nice features like animation.&lt;/p&gt;  &lt;p&gt;Some of the libraries also provide nice UI widgets and things as well.&lt;/p&gt;  &lt;p&gt;So seriously. Start using a library. &lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt; is my personal favorite.&lt;/p&gt; 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Development</category>				
				
				<category>ColdFusion</category>				
				
				<category>Technology</category>				
				
				<pubDate>Wed, 28 May 2008 22:53:19-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2008/5/28/Google-IO-State-of-Ajax</guid>
				
			</item>
			
			<item>
				<title>Using an arbitrary sort order in a SQL ORDER BY clause</title>
				<link>http://sam.curren.ws/index.cfm/2008/5/22/Using-an-arbitrary-sort-order-in-a-SQL-ORDER-BY-clause</link>
				<description>
				
				Yesterday, I spent a minute helping a coworker with a SQL problem: He needed to order the results by a varchar field, but not in the easily available lexical order. The order was set by the marketing folks, and our task was to make it work.

There are three ways to do this, and I&apos;ll talk about each one.

First, you can perform the sorting after the query is done, in whatever dynamic language you are using. This is probably bad for several reasons.

Second, you could create a table that contains the values to be sorted and a field that contains the sort order in numerical fashion. This is a pain.

Third: Use a scalar function to get things to fall into place. Observe:

&lt;code&gt;
ORDER BY CHARINDEX(myField, &apos;Foo,Bar,Baz,Fizz&apos;) ASC
&lt;/code&gt;

Quick and easy. 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Development</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 22 May 2008 08:07:00-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2008/5/22/Using-an-arbitrary-sort-order-in-a-SQL-ORDER-BY-clause</guid>
				
			</item>
			
			<item>
				<title>Blog.cfc posting with Windows Live Writer</title>
				<link>http://sam.curren.ws/index.cfm/2008/2/28/Blogcfc-posting-with-Windows-Live-Writer</link>
				<description>
				
				&lt;p&gt;I&apos;ve become attached to &lt;a href=&quot;http://get.live.com/writer/overview&quot;&gt;Windows Live Writer&lt;/a&gt; as a blogging client. It is much nicer to use then the web based client, and it allows saving local and remote drafts of posts. &lt;/p&gt;  &lt;p&gt;I&apos;ve just had to setup my laptop again, and had to hunt down the settings to allow Live Writer to talk to &lt;a href=&quot;http://blogcfc.com/&quot;&gt;Blog.cfc&lt;/a&gt; (gifted to us by the famous &lt;a href=&quot;http://www.coldfusionjedi.com/&quot;&gt;Ray Camden&lt;/a&gt;). I&apos;ve decided to document this for my future needs, and hopefully help anyone else with the same problem.&lt;/p&gt;  &lt;p&gt;Configure Live Writer to use the MetaWeblog API, with the following URL: &lt;a href=&quot;http://example.com/xmlrpc/xmlrpc.cfm&quot;&gt;http://example.com/xmlrpc/xmlrpc.cfm&lt;/a&gt; (with the correct domain and path to your blog.cfc installation, of course.)&lt;/p&gt;  &lt;p&gt;Other blogging clients may use similar settings. If you haven&apos;t tried using a blogging client, give it a try. &lt;/p&gt; 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Development</category>				
				
				<category>Personal</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Thu, 28 Feb 2008 21:25:19-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2008/2/28/Blogcfc-posting-with-Windows-Live-Writer</guid>
				
			</item>
			
			<item>
				<title>Designing an Interface - SimpleDB CFC</title>
				<link>http://sam.curren.ws/index.cfm/2008/2/20/Designing-an-Interface--SimpleDB-CFC</link>
				<description>
				
				&lt;p&gt;I&apos;m working on a &lt;a href=&quot;http://adobe.com/go/coldfusion&quot;&gt;ColdFusion&lt;/a&gt; library for &lt;a href=&quot;http://www.amazon.com/b/ref=sc_fe_l_2?ie=UTF8&amp;amp;node=342335011&amp;amp;no=3435361&amp;amp;me=A36L942TSJ2AJA&quot;&gt;Amazon&apos;s SimpleDB&lt;/a&gt;, and I&apos;m mulling over the options for how I want the library to work. I&apos;ve completed the authorization code and the methods that deal with creating, listing, and deleting domains. They exist well as function calls, with the listing method returning a query object for easy iterating.&lt;/p&gt;  &lt;p&gt;The two pieces that remain are the methods that deal with items (records within the domain) and queries against a domain. Here are a few options that I have, and I&apos;d love some feedback!&lt;/p&gt;  &lt;h3&gt;Item Methods&lt;/h3&gt;  &lt;p&gt;SimpleDB allows you to add attributes to an item and remove them, as well as retrieve all (or a subset) of the attributes of an item.&lt;/p&gt;  &lt;p&gt;There are two main approaches here: Present an Item object with methods, or present the methods within the main CFC itself.&lt;/p&gt;  &lt;p&gt;Presenting an Item as an object would work like this:&lt;/p&gt;  
&lt;code&gt;
item = simpledb.getItem(domainname, itemname)
item.setAttribute(attributename, attributevalue, replace=false)
item.deleteAttribute(attributename)
foo = item.getAttribute(attributename)
item.persist()
&lt;/code&gt;
&lt;p&gt;Presenting methods from the main cfc would look like this:&lt;/p&gt;  
&lt;code&gt;
simpledb.setAttribute(domain, item, attribute, value, queue=false)
simpledb.deleteAttribute(domain, item, attribute)
foo = simpledb.getItemAttribute(domain, item, attribute)
mystruct = simpledb.getItemAttributes(domain, item)
simpledb.persistChanges(domain, [item])
&lt;/code&gt;
&lt;p&gt;In either case, changes could be queued in the system until persist() or persistChanges() was called. This way, multiple attribute sets could be combined together to speed processing.&lt;/p&gt;  &lt;p&gt;The examples I provide here are a bit rough, but I&apos;m sure you get the idea.&lt;/p&gt;  &lt;p&gt;Which of these options is going to be more simple / coldfusion like?&lt;/p&gt;  &lt;h3&gt;Queries&lt;/h3&gt;  &lt;p&gt;The SimpleDB API returns a list of itemnames to queries. This means that to access the data, you need to query the attributes for each item. The simplest option would be to return the list of itemnames, and allow use of the other methods to get the desired attributes.&lt;/p&gt;  &lt;p&gt;A more full-featured interface would have the option to get the attributes for each item and form it into a query. An iterator object could be another option, with either attribute access methods or simply returning an item object similar to the one mentioned in the item section.&lt;/p&gt;  &lt;h3&gt;Plea For Thoughts&lt;/h3&gt;  &lt;p&gt;So, does this rambling question make any sense? Which style (thin and rough, fat and friendly) of API interface do you prefer?&lt;/p&gt;  &lt;p&gt;If my thoughts need to be better formed before any worthwhile answer can be given, please let me know.&lt;/p&gt; 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Amazon Web Services</category>				
				
				<category>Development</category>				
				
				<category>ColdFusion</category>				
				
				<pubDate>Wed, 20 Feb 2008 18:55:00-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2008/2/20/Designing-an-Interface--SimpleDB-CFC</guid>
				
			</item>
			
			<item>
				<title>Amazon Web Services SQS Price Changes</title>
				<link>http://sam.curren.ws/index.cfm/2008/2/6/Amazon-Web-Services-SQS-Price-Changes</link>
				<description>
				
				&lt;p&gt;Amazon Web Services announced a price change for &lt;a href=&quot;http://www.amazon.com/Simple-Queue-Service-home-page/b/ref=sc_fe_c_1_3435361_1?ie=UTF8&amp;amp;node=13584001&amp;amp;no=3435361&amp;amp;me=A36L942TSJ2AJA&quot;&gt;SQS&lt;/a&gt; today. They changed prices, but also how the prices were charged. Some are &lt;a href=&quot;http://www.oreillynet.com/xml/blog/2008/02/amazon_web_servicessqs_aws.html&quot;&gt;claiming&lt;/a&gt; huge savings. I did a little math to see who it would affect and how much.&lt;/p&gt;  &lt;p&gt;The price changed from $0.10 per 1,000 messages to $0.01 per 10,000 requests. Charging by request means that pushing a message and asking for messages counts as two requests. You can make 100 requests (new pricing) for the cost of 1 message (old pricing). This means that if you poll 99 times for every message you pass through the queue, you will pay exactly the same amount.&lt;/p&gt;  &lt;p&gt;If you poll once every 5 minutes, 3 messages per day will have you break about even. Polling once a minute, it takes 15 messages per day to break even. Systems of this size will not see much change. The monthly fee with 15 messages/1 minute polling is only 5 cents (not counting bandwidth) anyway.&lt;/p&gt;  &lt;p&gt;Larger systems will see a much bigger difference. If you have 10 servers polling a queue once per second, you will need 8640 messages per day to break even. But seriously: Your monthly fee for a system like this? $26.44 (not counting bandwidth).&lt;/p&gt;  &lt;p&gt;In either case, clever polling schemes (fallback, based on time of day, etc) could save some money. If the other end of your queue is a scalable EC2 layer, and you only run servers when there is stuff in the queue, then your savings are likely to be pretty good.&lt;/p&gt;  &lt;p&gt;So in any case, it&apos;s all still pretty cheap.&lt;/p&gt; 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Amazon Web Services</category>				
				
				<category>Development</category>				
				
				<category>ColdFusion</category>				
				
				<category>Technology</category>				
				
				<pubDate>Wed, 06 Feb 2008 16:14:38-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2008/2/6/Amazon-Web-Services-SQS-Price-Changes</guid>
				
			</item>
			
			<item>
				<title>Sample HTML Apps with Adobe AIR</title>
				<link>http://sam.curren.ws/index.cfm/2008/1/17/Sample-HTML-Apps-with-Adobe-AIR</link>
				<description>
				
				&lt;p&gt;I&apos;ve been playing with &lt;a href=&quot;http://www.adobe.com/go/air&quot;&gt;Adobe AIR&lt;/a&gt; recently, with the intent to create an application. After some struggles making the switch from Beta 2 to Beta 3, I feel like I&apos;m finally getting things worked out.&lt;/p&gt;  &lt;p&gt;Before diving headlong into the project, I spent some time with the &lt;a href=&quot;http://labs.adobe.com/technologies/air/samples/&quot;&gt;sample applications&lt;/a&gt; provided on Adobe Labs. There are several HTML based apps (AIR can be Flash/Flex based as well), so I had plenty of examples to observe. They even have a little view source screen that each includes, making it easy to learn from the examples.&lt;/p&gt;  &lt;p&gt;The first thing I noticed was that with a few minor exceptions, all the HTML applications were created with a single file. Inside the file, there is generally a div for each screen, and some JavaScript magic to move between the screens of the application. This struck me, as I was expecting to develop the app in a way similar to a website, where you typically have multiple files, and move between them for different sections of your application.&lt;/p&gt;  &lt;p&gt;Having it all in one file does leave it quite a bit more cluttered, although the apps seem to work well and be well designed. The JavaScript in particular was very well organized.&lt;/p&gt;  &lt;p&gt;My second observation has to do with the fact that not a single app contained a non-application sandbox. AIR uses sandboxes to deal with certain security problems. The sandbox can be a little difficult to deal with, and it looks like the sample app developers left it well enough alone.&lt;/p&gt;  &lt;p&gt;This leads me to my third observation: AIR needs some &lt;a href=&quot;http://jquery.com/&quot;&gt;jQuery&lt;/a&gt; like beauty. Dealing with all the APIs and things can get a little messy, and some jQuery like syntax would help quite a bit. Unfortunately, jQuery itself doesn&apos;t seem to fare well within the sandbox confines of AIR, as it seems to use eval() in some difficult ways. Perhaps a jQuery plugin can make the necessary modifications so that jQuery is usable for app development. (I&apos;ve been spoiled by jQuery, can you tell?)&lt;/p&gt;  &lt;p&gt;Beyond these observations, I can&apos;t say much about app development yet, although I hope to be able to soon.&lt;/p&gt; 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Development</category>				
				
				<category>ColdFusion</category>				
				
				<category>Technology</category>				
				
				<pubDate>Thu, 17 Jan 2008 19:53:24-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2008/1/17/Sample-HTML-Apps-with-Adobe-AIR</guid>
				
			</item>
			
			<item>
				<title>ColdFusion Powered Label Printing</title>
				<link>http://sam.curren.ws/index.cfm/2008/1/16/ColdFusion-Powered-Label-Printing</link>
				<description>
				
				&lt;p&gt;My current project at work requires labels printed on demand, each label custom to the moment they are printed. Previously, labels were printed in batch mode on an inkjet printer, and then applied to each box during the manufacturing process. We are changing the process so that each label contains information about the manufacturing process, including the machine, operator, identification of the plastic material used, and the quantity in each box.&lt;/p&gt;  &lt;p&gt;The quantity one is tricky, as the number of items in each box is sometimes adjusted by the machine operator. A computer at the machine is used to show the planned production schedule to the machine operator. We are adding some functionality so that the operator can input the desired information (including quantity) during the manufacturing process. We then needed a simple way to print a label with that information.&lt;/p&gt;  &lt;p&gt;We chose a Zebra label printer that ships with Windows drivers. We needed a way to prepare a label in a way that looks professional, and is easy to print. &lt;a href=&quot;http://www.adobe.com/products/coldfusion/&quot;&gt;ColdFusion&lt;/a&gt; has several ways to generate printable files (both PDF and FlashPaper). The CFDocument tag is very easy to use, but we have struggled in the past with precise positioning of elements on the page. This time, I used the ColdFusion Report Builder to lay out the label with the visual tools.&lt;/p&gt;  &lt;p&gt;At runtime, I pass in the information I need and generate the label with the CFReport tag. This tag has the ability to either save the generated file to disk, or return the file in a binary variable. (It will also return it to a browser, which I used in testing.) CF8 Introduced the CFPrint tag, which conveniently accepts a binary variable and prints it to a configured network printer. Sweet.&lt;/p&gt;  &lt;p&gt;(Not saving the file to disk prevents the creative coding necessary to avoid threading issues, and also does not require us to clean up the temporary files.)&lt;/p&gt;  &lt;p&gt;So it works like this: The operator enters machine information at the start of each job. As he finishes the number of items to be put in a box, he taps the &apos;Box Done&apos; button, which pops up a dialog box that allows changes to the default quantity of items in a box. He hits &apos;done&apos;, and a label spits out of the attached printer.&lt;/p&gt;  &lt;p&gt;The best part is that there is no print dialog box that the operator has to deal with. It just prints.&lt;/p&gt;  &lt;p&gt;High 5 to the CF Team for making this possible.&lt;/p&gt; 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Development</category>				
				
				<category>ColdFusion</category>				
				
				<category>Technology</category>				
				
				<pubDate>Wed, 16 Jan 2008 19:25:00-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2008/1/16/ColdFusion-Powered-Label-Printing</guid>
				
			</item>
			
			<item>
				<title>Amazon EC2 Welcomes Paid Platforms</title>
				<link>http://sam.curren.ws/index.cfm/2007/11/8/Amazon-EC2-Welcomes-Paid-Platforms</link>
				<description>
				
				&lt;p&gt;Red Hat Enterprise Linux, a paid software platform, has &lt;a href=&quot;http://www.redhat.com/about/news/prarchive/2007/amazon.html&quot;&gt;recently announced&lt;/a&gt; a private beta of a &lt;a href=&quot;http://www.redhat.com/solutions/cloud/&quot;&gt;service&lt;/a&gt; that allows users to deploy their software onto &lt;a href=&quot;http://aws.amazon.com/ec2&quot;&gt;Amazon&apos;s EC2&lt;/a&gt; computing cloud, paying $19 per month plus hourly usage fees. The fees are in addition to the computing time and bandwidth charges paid to Amazon.&lt;/p&gt;  &lt;p&gt;I could not be happier to see this happen. I&apos;m a huge &lt;a href=&quot;http://www.adobe.com/products/coldfusion/&quot;&gt;ColdFusion&lt;/a&gt; fan for web-app development, but I&apos;m struggling with the prospect of using ColdFusion for a system that I will need to be able to scale in a way that EC2 provides. Red Hat will lead the way, and hopefully many others will follow with similar instance/hour payment options.&lt;/p&gt;  &lt;p&gt;If Adobe allowed such license terms, it would allow me to write web applications completely in ColdFusion, and then deploy code either to a regular licensed production box or onto a computing cluster when demand calls for extra computing power.&lt;/p&gt; 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Amazon Web Services</category>				
				
				<category>Development</category>				
				
				<category>ColdFusion</category>				
				
				<category>Technology</category>				
				
				<pubDate>Thu, 08 Nov 2007 05:25:50-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2007/11/8/Amazon-EC2-Welcomes-Paid-Platforms</guid>
				
			</item>
			
			<item>
				<title>Max 2007 Review</title>
				<link>http://sam.curren.ws/index.cfm/2007/10/7/Max-2007-Review</link>
				<description>
				
				Max was great. Notable was the food, which was great for the meals, and plentiful in the hallways between sessions. The venue was good as well, but the maps provided were terrible. By the end, most of us had figured it out, but a better map showing the way to get between the two different sides of the first floor (via the third) would have helped.

Most frustrating about the conference was the difficulty in selecting sessions. Some were amazing, and some were worthless, and there wasn&apos;t a very good way to tell the difference before going to the session. All of the topics were great, but many of the presentations were useless to me. 

I think that a little bit of pre-conference interaction between presenters and audience would have gone a long way to help attendees choose the right sessions, and presenters tune their presentation to the audience. While the un-conference concept might be good, it wouldn&apos;t need to go that far. Some sort of online interaction (better descriptions, pre-conference Q&amp;A about content, etc.) would have gone a long way to improving my conference experience.

Big take-aways? &lt;a href=&quot;http://www.adobe.com/go/air&quot;&gt;AIR&lt;/a&gt; has a future. Adobe wants to be in the IDE business, and platform technologies (flash, flex) get given away for free.  When I say IDE business, I mean things like Thermo - very advanced, very useful IDEs. I really enjoyed the opportunity to think without distraction about possibilities for a few days. It is sometimes hard to do that in the heat of normal life. 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Development</category>				
				
				<category>ColdFusion</category>				
				
				<category>Technology</category>				
				
				<pubDate>Sun, 07 Oct 2007 16:40:00-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2007/10/7/Max-2007-Review</guid>
				
			</item>
			
			<item>
				<title>Creative Genius - Seam Carving</title>
				<link>http://sam.curren.ws/index.cfm/2007/10/7/Creative-Genius--Seam-Carving</link>
				<description>
				
				During the Adobe Sneaks Session at MAX, teams show features that are not yet released in Adobe products. There were some neat things shown, but none topped the last one. A few months ago, a &lt;a href=&quot;http://youtube.com/watch?v=6NcIJXTlugc&quot;&gt;YouTube video&lt;/a&gt; demonstrating a new way to stretch and shrink pictures became popular. Rather then simply scaling the image, it looks for the least energy path through an image, and then expands or contracts on that line. I saw the video when it became popular, and was not surprised to hear a few days later that the creator of the application had been hired by Adobe.

The YouTube video includes a section that somehow I didn&apos;t remember very well, and was demonstrated by him during the sneaks session. He demonstrated the ability to provide hints to the algorithm. By painting the image with a &apos;keep&apos; hint, you can have the process ignore some section of the image. By painting the image with a &apos;remove&apos; hint, the algorithm can make an object completely disappear. He showed a demo of the process, and made a shoe in the middle of a row of shoes completely disappear. There was no hole left, and it was very hard to see anything that hinted at the removal. Amazing.

After the end of sneaks, they asked for votes via SMS, with the winner to receive an iPod Touch. 40% of the votes were given to him, and no other team was even close. It&apos;s nice to see very intelligent people be rewarded with jobs/appreciation as I saw yesterday. 
				</description>
				
				<category>ColdFusion</category>				
				
				<category>Technology</category>				
				
				<pubDate>Sun, 07 Oct 2007 16:16:00-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2007/10/7/Creative-Genius--Seam-Carving</guid>
				
			</item>
			
			<item>
				<title>Adobe&apos;s Services Play</title>
				<link>http://sam.curren.ws/index.cfm/2007/10/2/Adobes-Services-Play</link>
				<description>
				
				Today at &lt;a href=&quot;http://adobemax2007.com/na/&quot;&gt;Adobe&apos;s MAX Conference in Chicago&lt;/a&gt;, they highlighted in a general session some new services that Adobe is getting into.  Adobe has long been a software company of the install variety. They announced some services that lead them into a very different model as a company. These new services will likely never be the core of Adobe, but do help it expand into new areas of business.

The most interesting service is what they introduced as CoCoMo. The services expose all the underlying features present in their &lt;a href=&quot;http://www.adobe.com/products/acrobatconnect/&quot;&gt;Connect&lt;/a&gt; application as &lt;a href=&quot;http://www.adobe.com/products/flex/&quot;&gt;Flex&lt;/a&gt; components that can be built into any Flex application. This allows integrating conferencing, audio, video, whiteboard, and screen sharing into any application. They appear to be billing this similar to their current model. The components must connect to a Connect room, which could likely be used with their current interface as well.

They also announced a different product called Pacifica that seemed to have the same set of features, but somehow was listed under a different product name. I&apos;m very confused on the difference between these two products.

In a different space, they released &lt;a href=&quot;http://labs.adobe.com/technologies/share/&quot;&gt;SHARE&lt;/a&gt;, an online file sharing service with 1GB of space for free. You add files (of any type) into the system, and then you can share them with anyone or only specific users. I couldn&apos;t find the ability to update a file by uploading a new version, but did see several places list both a Created and a Last Updated date for the file. They do have &lt;a href=&quot;http://labs.adobe.com/wiki/index.php/Share:API&quot;&gt;REST APIs&lt;/a&gt; for the entire service, so you can build a front end onto this, or mash it up with a completely separate service. I expect to see both an AIR version (with drag and drop upload and download) and file system extensions to have this space mounted as a drive very soon.

I am very much a fan of &lt;a href=&quot;http://www.amazonaws.com&quot;&gt;Amazon Web Services&lt;/a&gt;. Amazon&apos;s services are very aligned with their core competencies of infrastructure and scale. These services (with the exception of the SHARE service), play very well to Adobe&apos;s strengths. I&apos;m excited to see more companies entering the service/infrastructure business. 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Amazon Web Services</category>				
				
				<category>Development</category>				
				
				<category>VOIP</category>				
				
				<category>ColdFusion</category>				
				
				<category>Technology</category>				
				
				<pubDate>Tue, 02 Oct 2007 19:28:00-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2007/10/2/Adobes-Services-Play</guid>
				
			</item>
			
			<item>
				<title>Network Links in Google Earth Flight Simulator</title>
				<link>http://sam.curren.ws/index.cfm/2007/8/31/Network-Links-in-Google-Earth-Flight-Simulator</link>
				<description>
				
				&lt;a href=&apos;http://blogoscoped.com/archive/2007-09-01.html&apos;&gt;Apparently&lt;/a&gt;, the newest version of &lt;a href=&apos;http://earth.google.com/&apos;&gt;Google Earth&lt;/a&gt; has &lt;a href=&apos;http://marco-za.blogspot.com/2007/08/google-earth-flight-simulator.html&apos;&gt;a built in Flight Simulator&lt;/a&gt;. To make it even cooler, they show currently visible Network Links during flight, making it easy to visualize your data layers in a whole new way. I took a screenshot viewing the &lt;a href=&apos;http://www.activetrails.com/help/GoogleEarth.cfm&apos;&gt;ActiveTrails Network Link&lt;/a&gt;. Peek at the &lt;a href=&apos;http://earth.google.com/intl/en/userguide/v4/flightsim/index.html&apos;&gt;instructions&lt;/a&gt; and go play with it.
&lt;img src=&quot;http://sam.curren.ws/images//googleearthflightsimnetworklink.jpg&quot;/&gt; 
				</description>
				
				<category>Web-Applications</category>				
				
				<category>Development</category>				
				
				<category>ColdFusion</category>				
				
				<category>Technology</category>				
				
				<pubDate>Fri, 31 Aug 2007 19:06:00-0700</pubDate>
				<guid>http://sam.curren.ws/index.cfm/2007/8/31/Network-Links-in-Google-Earth-Flight-Simulator</guid>
				
			</item>
			</channel></rss>