<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>RSS feed for InstantSpot site Rushing to Judgement</title><link>http://erichk.instantspot.com</link><description>The Blog of Eric H. Knipp</description><language>en-us</language><copyright>This work is Copyright &#xA9; 2009 by Rushing to Judgement</copyright><generator>RSSVille ColdFusion FeedMaker, version 1.0</generator><pubDate>Sat, 21 Nov 2009 10:57:23 GMT</pubDate><item><title>First Month at Gartner Completed!</title><link>http://erichk.instantspot.com/blog/2009/02/25/First-Month-at-Gartner-Completed</link><description>Just wrapped up my first month.  Some quick thoughts.</description><pubDate>Thu, 26 Feb 2009 00:21:00 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2009/02/25/First-Month-at-Gartner-Completed</guid><category>Gartner</category></item><item><title>Personal Update ..</title><link>http://erichk.instantspot.com/blog/2009/02/05/Personal-Update-</link><description>What&apos;s new since my last post, ages ago.</description><pubDate>Thu, 05 Feb 2009 16:32:00 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2009/02/05/Personal-Update-</guid><category>General,MBA,Vinepix</category></item><item><title>Beer from a fire hose</title><link>http://erichk.instantspot.com/blog/2008/08/04/Beer-from-a-fire-hose</link><description>Scrambled thoughts as I am about to embark on my MBA journey ..</description><pubDate>Tue, 05 Aug 2008 04:09:00 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2008/08/04/Beer-from-a-fire-hose</guid><category>MBA</category></item><item><title>ColdFusion &amp; Log4j Part 3 - Custom Attributes and Mapped Diagnostic Context</title><link>http://erichk.instantspot.com/blog/2008/06/27/ColdFusion--Log4j-Part-3--Custom-Attributes-and-Mapped-Diagnostic-Context</link><description>In this article I show you how to customize Log4j output from ColdFusion by using a Mapped Diagnostic Context.</description><pubDate>Sat, 28 Jun 2008 00:40:00 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2008/06/27/ColdFusion--Log4j-Part-3--Custom-Attributes-and-Mapped-Diagnostic-Context</guid><category>ColdFusion,Log4j</category></item><item><title>ColdFusion &amp; Log4j Part 2 - Writing Logs to a Database</title><link>http://erichk.instantspot.com/blog/2008/06/23/ColdFusion--Log4j-Part-2--Writing-Logs-to-a-Database</link><description>In my first post I introduced you to Log4j and the great open-source effort CFLog4j.  This post will show you how to log to a database instead of writing those logs to disk.</description><pubDate>Mon, 23 Jun 2008 18:40:00 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2008/06/23/ColdFusion--Log4j-Part-2--Writing-Logs-to-a-Database</guid><category>ColdFusion,Log4j</category></item><item><title>ColdFusion and Log4j</title><link>http://erichk.instantspot.com/blog/2008/06/18/ColdFusion-and-Log4j</link><description>You may know that ColdFusion uses Log4j under the hood to power server logs and the CFLog tag.  While CF makes it easy to do simple logging, more advanced features can be unlocked with a little bit of effort.</description><pubDate>Wed, 18 Jun 2008 23:07:00 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2008/06/18/ColdFusion-and-Log4j</guid><category>ColdFusion,Log4j</category></item><item><title>&lt;cffunction&gt; return type confusion</title><link>http://erichk.instantspot.com/blog/2008/06/11/cffunction-return-type-confusion</link><description>What is the &quot;normal&quot; behavior when a ColdFusion function with a return type defined completes without returning anything?</description><pubDate>Wed, 11 Jun 2008 18:26:00 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2008/06/11/cffunction-return-type-confusion</guid><category>ColdFusion</category></item><item><title>Transfer vs Reactor Performance</title><link>http://erichk.instantspot.com/blog/2008/06/10/Transfer-vs-Reactor-Performance</link><description>I was surprised to find out that Reactor is significantly slower for some simple operations.</description><pubDate>Tue, 10 Jun 2008 18:59:00 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2008/06/10/Transfer-vs-Reactor-Performance</guid><category>ColdFusion</category></item><item><title>Finished my SMU PMBA application.</title><link>http://erichk.instantspot.com/blog/2008/06/06/Finished-my-SMU-PMBA-application</link><description>Some of you may know that I have been mulling this option over for some time.</description><pubDate>Sat, 07 Jun 2008 00:36:00 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2008/06/06/Finished-my-SMU-PMBA-application</guid><category>MBA</category></item><item><title>Mach-II Input Sanitation</title><link>http://erichk.instantspot.com/blog/2008/01/24/MachII-Input-Sanitation</link><description>How to easily prevent most cross-site scripting attacks in your Mach-II application</description><pubDate>Thu, 24 Jan 2008 17:30:00 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2008/01/24/MachII-Input-Sanitation</guid><category>ColdFusion</category></item><item><title>ColdFusion 8 Gotcha</title><link>http://erichk.instantspot.com/blog/2007/12/04/ColdFusion-8-Gotcha</link><description>&lt;p&gt;  Well, sort of a gotcha.&amp;nbsp; It is actually a new feature that can cause you some grief depending on how you have done things in the past.  &lt;/p&gt;  &lt;p&gt;  The application I am working on was started in CFMX7, but since 8 shipped before we went live I was able to talk my boss into upgrading.&amp;nbsp; Probably 80% of the code was complete before we upgraded so we were not able to take full advantage of CF8, but of course like any good developer I have been refactoring to CF8 as time permits depending on where I am working in the system.  &lt;/p&gt;  &lt;p&gt;  This is a fully OO system so we are using a lot of different design patterns, one of them being the facade pattern, which is implemented over the session among other places.&amp;nbsp; Our session facade is pretty simple and handles all reads and writes to and from the session.&amp;nbsp;&amp;nbsp; For example, if you wanted to put and get some variable called foo:  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;[codeshare deccd609]  &lt;/p&gt;  &lt;p&gt;  The way our sessionFacade works is that you can do a put(key, value), get(key), or delete(key).&amp;nbsp; At that point it acts pretty much how you would expect.&amp;nbsp; In order to keep you from accidentally borking a copy of what is in the session, the sessionFacade attempts to return by &lt;em&gt;value&lt;/em&gt;. &amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  Pre-CF8, you could do a duplicate on anything that wasn&amp;#39;t some kind of object.&amp;nbsp; Structs, arrays, and simple values are easy to duplicate, objects, not so much.&amp;nbsp; It would have been possible to write some kind of custom object duplicator but that was more effort than I wanted to go through, so the sessionFacade just did a test to see if anything being returned was an object (or contained an object), and if so, returned by &lt;em&gt;reference&lt;/em&gt; instead of by &lt;em&gt;value&lt;/em&gt;.&amp;nbsp; This was no big deal as long as you knew enough about the sessionFacade to be careful how you treat those references ..  &lt;/p&gt;  &lt;p&gt;  Well, as it turns out, the miracle of encapsulation failed in this case and some enterprising developer realized that since objects were being returned by reference instead of by value, some interesting things were possible.&amp;nbsp; This enterprising developer just used the reference returned by the get function instead of making a local reference to the object.  &lt;/p&gt;  &lt;p&gt;  No big deal right?&amp;nbsp; Except that once I realized it (I was working on something that used sessionFacade for some other purpose), I went ahead and &amp;quot;fixed&amp;quot; sessionFacade to return everything by value, as CF8 allows duplicate() to be called on objects, too.&amp;nbsp; Should have worked fine as long as nobody was treating the reference passed by the get() method as a reference .. whoops.  &lt;/p&gt;  &lt;p&gt;  Ultimately this led to a number of difficult-to-figure out bugs; every time the get() method was called and the resulting reference used to set some property, a different copy of the object was being set (since a new copy was created via duplicate() every time).  &lt;/p&gt;  &lt;p&gt;  The moral of the story:&amp;nbsp; CF8&amp;#39;s improved duplicate() function is great but if you are working with facades or factories be careful that you are treating the returned reference by value if you choose to alter the implementation of the interface.&amp;nbsp;  &lt;/p&gt;  </description><pubDate>Tue, 04 Dec 2007 14:44:58 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2007/12/04/ColdFusion-8-Gotcha</guid><category>ColdFusion</category></item><item><title>Mach-II 1.5 and Transfer</title><link>http://erichk.instantspot.com/blog/2007/10/12/MachII-15-and-Transfer</link><description>&amp;nbsp;&amp;nbsp; &amp;nbsp;  &lt;p&gt;  I am working on a little side project to help me dominate my fantasy football leagues.  I know I am only about six weeks late in getting this thing on rails, but its for fun and I only have so much time.  Before I continue this post, I should preface it by stating that I&amp;#39;m only going to address the integration of Mach-II and Transfer from a basic level; what you read here describes what I have found to be a clean way to access Transfer objects from within Mach-II.   &lt;/p&gt;  &lt;p&gt;  At my main gig. we are using Reactor pretty heavily, and have not had any time to play around with Transfer.  Truth be told, none of us are familiar enough with Transfer to really be able to swap it in for Reactor quickly (not to mention the regression testing we&amp;#39;d have to do).  Although my little FFL project probably isn&amp;#39;t ideally suited for Transfer (I don&amp;#39;t expect much transactional work, mostly data mining - so lots of stored procedures and such), I decided this would be a good time for me to get Transfer into my toolbox.  &lt;/p&gt;  &lt;p&gt;  I started developing my application with the Mach-II 1.5 beta, and as luck would have it the final version shipped just this past week I believe.  The Mach-II guys have done a hell of a job adding new features to make the framework more powerful and easier to use.    &lt;/p&gt;  &lt;p&gt;  In the past, one of the things that annoyed me about Mach-II was the inability to handle complex data types during application initialization in what I perceived to be a &amp;quot;clean&amp;quot; way.  I had to stack up hokey plugins that would do this weird initialization stuff, which kind of obfuscated the application even more (for new developers, the mach-ii.xml config file alone is enough to inspire panic).  I didn&amp;#39;t notice it in the beta release (it was probably there), but there&amp;#39;s a new feature in 1.5 that is expressly designed to make this part of life with Mach-II easier.  &lt;/p&gt;  &lt;p&gt;  Before I learned about this feature, I&amp;#39;d been setting up my TransferFactory in onApplicationStart() and copying it into the application scope.  This was okay, but it didn&amp;#39;t help me keep all the configuration details in one place which is really my preference.  I knew that my alternative was the hokey plugin method I talked about earlier, and I definitely liked that even less.  &lt;/p&gt;  &lt;p&gt;  Mach-II 1.5 introduces the Property object, which is a new framework object, comparable to Plugins, Filters, and Listeners.  The Property object is referenced from the  section of the mach-ii.xml configuration file, and allows the inclusion of a programmable Property component that extends MachII.framework.Property.  Like all Mach-II objects you can write a configure() method to do any necessary initialization, as well as write other methods to do stuff.  Which, in my view is where this becomes an ideal place to integrate with Transfer, or possibly other frameworks that you&amp;#39;d like to shoehorn into your Mach-II app.  &lt;/p&gt;  &lt;p&gt;  Because I am not getting into a lot of Transfer details here, I&amp;#39;d like to jump into the code that shows how to set this up (its really quite simple). &amp;nbsp;I apologize for the code formatting, but CodeShare is not working right now.  &lt;/p&gt;  &lt;p&gt;  First, we have a snippet from my mach-ii.xml configuration file.  Most of this looks pretty familiar, with the exception of the last line, which references a custom Property component that I have written.  I still don&amp;#39;t know if I like the name of this object, but basically my intent is to use it as a gunny sack containing references to the stuff I really want, so I guess that ComponentBag will do for now .. I&amp;#39;m open to alternatives (actually now that I think of it, GunnySack sounds not too shabby, either).   As with any other framework object you write yourself, you specify a type that names the full path to the CFC.  &lt;/p&gt;  &lt;p&gt;  &lt;font face=&quot;arial,helvetica,sans-serif&quot; size=&quot;1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;properties&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;pathToTransferDatasourceConfig&amp;quot; value=&amp;quot;/stats/config/datasource.xml&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;pathToTransferConfig&amp;quot; value=&amp;quot;/stats/config/transfer.xml&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;pathToTransferDefinitions&amp;quot; value=&amp;quot;/stats/definitions&amp;quot; /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name=&amp;quot;componentBag&amp;quot; type=&amp;quot;stats.properties.ComponentBag&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/properties&amp;gt;&amp;nbsp;&lt;/font&gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  Second, is my component, which is pretty small as all I&amp;#39;m doing right now is integrating with Transfer.  I realize that coupling the component directly to the Transfer API is not the &amp;quot;ideal&amp;quot; thing to do, which is why ColdSpring integration will come later (this is a subject for another article but honestly there are tons of great ColdSpring references available already).   As you can see, my configure() method simply creates and initializes the TransferFactory, using properties I defined in the mach-ii.xml configuration file.  I suppose that this proves that simple properties in the configuration file are processed prior to the new Property component type.  &lt;/p&gt;  &lt;p&gt;  &lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&amp;lt;cfcomponent displayname=&amp;quot;ComponentBag&amp;quot; extends=&amp;quot;MachII.framework.Property&amp;quot;&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cffunction name=&amp;quot;configure&amp;quot; access=&amp;quot;public&amp;quot; output=&amp;quot;false&amp;quot; returntype=&amp;quot;void&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset variables.instance = structNew() /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--- Instantiate the TransferFactory and cache it ---&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset variables.instance.transferFactory = &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; createObject(&amp;quot;component&amp;quot;, &amp;quot;transfer.TransferFactory&amp;quot;).init( &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; datasourcePath=appManager.getPropertyManager().getProperty(&amp;quot;pathToTransferDatasourceConfig&amp;quot;), &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; configPath=appManager.getPropertyManager().getProperty(&amp;quot;pathToTransferConfig&amp;quot;), &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; definitionPath=appManager.getPropertyManager().getProperty(&amp;quot;pathToTransferDefinitions&amp;quot;) ) /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cffunction&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cffunction name=&amp;quot;getTransfer&amp;quot; access=&amp;quot;public&amp;quot; output=&amp;quot;false&amp;quot; returntype=&amp;quot;transfer.com.Transfer&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfreturn variables.instance.transferFactory.getTransfer() /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cffunction&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;/cfcomponent&amp;gt;&amp;nbsp;&lt;/font&gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  Finally, I&amp;#39;m showing you where I use the magical ComponentBag to access the Transfer object.  As with all Mach-II framework objects, the PropertyManager can be accessed from within the object as you see here.  From there it is a simple matter to pull out the custom component and reference methods or values pertaining to it.  &lt;/p&gt;  &lt;p&gt;  &lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;&amp;lt;cfcomponent displayname=&amp;quot;FileUploadListener&amp;quot; extends=&amp;quot;MachII.framework.listener&amp;quot;&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cffunction name=&amp;quot;uploadTeamFile&amp;quot; access=&amp;quot;public&amp;quot; output=&amp;quot;false&amp;quot; returntype=&amp;quot;void&amp;quot;&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfargument name=&amp;quot;event&amp;quot; type=&amp;quot;MachII.framework.event&amp;quot; required=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;cfset var importer = createObject(&amp;quot;component&amp;quot;, &amp;quot;stats.model.Import&amp;quot;).init(&lt;/font&gt;  &lt;/p&gt;  &lt;p&gt;  &lt;font face=&quot;arial,helvetica,sans-serif&quot;&gt;appManager.getPropertyManager().getProperty(&amp;quot;componentBag&amp;quot;).getTransfer()) /&amp;gt;&lt;br /&gt;  &lt;br /&gt;  ...&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/cffunction&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;/cfcomponent&amp;gt;&amp;nbsp;&lt;/font&gt;  &lt;/p&gt;  &lt;p&gt;  Well, that&amp;#39;s about it.  I have a few other items I need to write up sometime soon, including how to access web services secured with mutual SSL authentication from ColdFusion, as well as some topics on ColdFusion and WebSphere MQ integration.  I figure by posting it here first I am holding myself more accountable for actually writing that content, in some weird way.&lt;br /&gt;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;  &lt;/p&gt;  </description><pubDate>Sat, 13 Oct 2007 00:28:55 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2007/10/12/MachII-15-and-Transfer</guid><category>ColdFusion</category></item><item><title>MAX Redux</title><link>http://erichk.instantspot.com/blog/2007/10/05/MAX-Redux</link><description>&lt;p&gt;  This was my second MAX.&amp;nbsp; I attended the event in Anaheim in 2005 in the pre-Adobe days, and really enjoyed it (especially the great party at California Experience on Tuesday).&amp;nbsp; Because I was transitioning into consulting work about this time last year, I had to miss MAX 2006 Vegas.&amp;nbsp; I decided early this year that I would not make the same mistake again!&amp;nbsp; So, last Sunday after driving back from a demoralizing time watching Texas get railed by K-State 41-21, it was off to MAX 2007 Chicago style.  &lt;/p&gt;  &lt;p&gt;  Some of you know that I used to work for Unitrin, with several cool cats including well-known blogger &lt;a href=&quot;http://iknowkungfoo.com/blog/&quot; target=&quot;_blank&quot; title=&quot;Adrian&amp;#39;s Blog&quot;&gt;Adrian Moreno&lt;/a&gt;.&amp;nbsp; I was able to hook up with some of those folks at this year&amp;#39;s MAX, which made for a fun time as I was able to catch up with people I don&amp;#39;t see every day anymore (sniff).&amp;nbsp; Its weird sometimes how it takes an out-of-town trip to reconnect with people who only live across town .. but I digress.  &lt;/p&gt;  &lt;p&gt;  As &lt;a href=&quot;http://corfield.org/blog/index.cfm/do/blog.entry/entry/MAX_Day_Three&quot;&gt;Sean&lt;/a&gt; mentioned, MAX was really huge this year, in the massive West wing of the McCormick center.&amp;nbsp; This is a great facility and was definitely up to the task of accommodating ~4000 Adobe fanatics.&amp;nbsp; There were a ton of sessions and I had an opportunity to be exposed to some things that I wouldn&amp;#39;t otherwise see .. and isn&amp;#39;t that the point of going to an event like MAX?  &lt;/p&gt;  &lt;p&gt;  As usual, I can&amp;#39;t strongly recommend the ColdFusion sessions as they seem to be targeted at more beginner-level folks.&amp;nbsp; Dave Watts of Fig Leaf did his best to turn a talk about new features of ColdFusion 8 into an &amp;quot;optimizing CF8 applications&amp;quot; presentation, but it didn&amp;#39;t work out despite his best efforts.&amp;nbsp; The other CF presentations I went to were &lt;em&gt;generally&lt;/em&gt; not much better ..  &lt;/p&gt;  &lt;p&gt;  The most enjoyable session I attended had to do with a CF/Flex app launched by the interactive learning technology team at the Wharton Business School that provides a &amp;quot;fast twitch&amp;quot; trading interface similar to what traders at top Wall Street equity trading firms use.&amp;nbsp; This session was interesting because the presenters did a good job hitting all the business and technology points quickly and succinctly, and also because the topic ties together some of my favorite subjects - technology, finance, and game theory.&amp;nbsp; A common use of the application is to put 40-50 students into a mock &amp;quot;trading room&amp;quot;, each with a little bit of information as a hint about future possibilities with a particular equity (or market).&amp;nbsp; Subsequently, trading begins and the students must use their knowledge of future likely market events along with their understanding of trading patterns to develop a profitable trading strategy - and are then graded on it!&amp;nbsp; Wharton has also made this platform available to several other universities, both to enhance the prestige of the Wharton brand and to provide better learning tools to students elsewhere.&amp;nbsp; The developers from Wharton were visibly enthusiastic about what they are doing, which was very cool - it is inspiring to see people love what they do, and something we don&amp;#39;t get to see enough of these days.  &lt;/p&gt;  &lt;p&gt;  My second-favorite session was Dave Bowers&amp;#39; presentation on Far Cry Core.&amp;nbsp; I looked into Far Cry as a CMS solution a couple of years ago, but was intimidated by what seemed like a steep learning curve, so I sort of shelfed that effort and never came back.&amp;nbsp; Boy am I missing out!&amp;nbsp; Far Cry is not just a CMS, it is a full-stack application framework providing everything from generated administrative consoles to security model to ORM layer .. really neat stuff.&amp;nbsp; As a seasoned Mach-II pro I am a little hesitant to switch to a &amp;quot;kitchen sink&amp;quot; package like this but seeing what Dave was able to crank out in just a few minutes was truly amazing, and its obvious to me that I need to find some time to invest in this thing.&amp;nbsp; The Far Cry team has put together a 120-page developer course to get new developers up to speed quickly, so I will probably start there.  &lt;/p&gt;  &lt;p&gt;  Finally, the MAX party was a blast this year.&amp;nbsp; The company always seems to pull out the stops and do something unexpected.&amp;nbsp; At this year&amp;#39;s party, one huge room at the convention center was converted into a party area, and split into several sections.&amp;nbsp; The featured entertainment included breakdancers on a big graffiti-painted stage, professional skateboarders and freestyle bikers performing stunts on a giant half pipe, and a lounge act that specialized in performing numbers you&amp;#39;d never expect to hear from a lounge band .. hearing the singer belt out classics from Nirvana, Nine Inch Nails and Sir Mix-A-Lot caused waves of laughter in the crowd .. these guys were really &lt;em&gt;good&lt;/em&gt;.&amp;nbsp;&amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  I&amp;#39;ve already decided to attend MAX again next year - its just too good of an opportunity to see some great new technology and visit with people I don&amp;#39;t get to see often enough.&amp;nbsp; Hope to see you there!&amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;  &lt;/p&gt;  </description><pubDate>Fri, 05 Oct 2007 20:12:31 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2007/10/05/MAX-Redux</guid><category>General</category></item><item><title>Licking my Chops for Scorpio</title><link>http://erichk.instantspot.com/blog/2007/04/30/Licking-my-Chops-for-Scorpio</link><description>&lt;p&gt;  As any good DFWCFUGer (or anybody who reads Dave Shuck&amp;#39;s blog) knows, Ben Forta will be in town tonight to talk about the new features in the upcoming release of ColdFusion 8, or Scorpio.&amp;nbsp; When I heard that Ben was coming to town, I asked if he&amp;#39;d be able to make a stop at my client downtown.&amp;nbsp; He had time in his schedule and was gracious enough to make a stop and tune up for this evening&amp;#39;s presentation (which I will also be attending).  &lt;/p&gt;  &lt;p&gt;  In a nutshell - make sure you attend tonight, even if you&amp;#39;re getting the &amp;quot;its five o&amp;#39;clock and I really just want to go home now&amp;quot; blues.&amp;nbsp; We&amp;#39;ve all read about the &amp;quot;big ticket&amp;quot; items in Scorpio - you know, &amp;lt;cfimage&amp;gt; and its associated granular functions, AJAX widgets, and big improvements to server monitoring, debugging, and administration (as well as a host of other &amp;quot;big deal&amp;quot; type items).&amp;nbsp; While I am excited about this stuff, its already known to me and wasn&amp;#39;t a big surprise when Ben started to explain the details.  &lt;/p&gt;  &lt;p&gt;  In my opinion, what&amp;#39;s even more interesting than the big ticket features are the sheer number of small yet important changes in Scorpio. &amp;nbsp; For example, we can now use javascript-style operators and javascript-style implicit array and structure creation.&amp;nbsp; One of the things that&amp;#39;s always annoyed me about CF is the need to use EQ, NEQ, etc.&amp;nbsp; It always felt like amateur hour with that stuff (I know that&amp;#39;s probably a personal problem).&amp;nbsp; As of MX8, we can start using javascript-style operators like normal people.  &lt;/p&gt;  &lt;p&gt;  File I/O gets a noticeable set of upgrades.&amp;nbsp; I&amp;#39;ve worked with &amp;lt;cffile&amp;gt; many times in text processing and always found it to be slow and kludgy to do what I needed.&amp;nbsp; How about something like this:  &lt;/p&gt;  &lt;p&gt;  &amp;lt;cfloop file=&amp;quot;myfile.txt&amp;quot;&amp;gt;do some stuff ...&amp;lt;/cfloop&amp;gt;&amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  Are you kidding me??&amp;nbsp; That&amp;#39;s right, we don&amp;#39;t have to load the file into a buffer ahead of time, and what&amp;#39;s more, we also get a slew of new file functions to play with, so that we have the ability to control things at a granular level.   &lt;/p&gt;  &lt;p&gt;  CFC&amp;#39;s are now fully serializable.&amp;nbsp; We can use query caching with &amp;lt;cfqueryparam&amp;gt; (!!).&amp;nbsp; We get to write our own multithreaded CF code with &amp;lt;cfthread&amp;gt;.&amp;nbsp; We get native RSS feed consumption and generation.&amp;nbsp; And so much more. &amp;nbsp; The group threw many questions at Ben and he responded to every one with a favorable answer for CF - if it isn&amp;#39;t in there in 8, they&amp;#39;re probably working on it for 9 already.  &lt;/p&gt;  &lt;p&gt;  Like I said at the start - in a nutshell, don&amp;#39;t miss tonight&amp;#39;s meeting!&amp;nbsp; There&amp;#39;s no question in my mind that Scorpio is the best release of ColdFusion to date, and I think that it has the potential to redefine ColdFusion&amp;#39;s standing relative to other technologies in our field.&amp;nbsp;  &lt;/p&gt;  </description><pubDate>Mon, 30 Apr 2007 19:28:39 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2007/04/30/Licking-my-Chops-for-Scorpio</guid><category>ColdFusion</category></item><item><title>First Post!</title><link>http://erichk.instantspot.com/blog/2007/03/23/First-Post</link><description>&lt;p&gt;  Hard to believe I&amp;#39;ve held off creating a blog for this long.&amp;nbsp; Thanks Dave &amp;amp; Ryan for making this so easy.  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  Eric&amp;nbsp;  &lt;/p&gt;  &lt;p&gt;  &amp;nbsp;&amp;nbsp;  &lt;/p&gt;  </description><pubDate>Fri, 23 Mar 2007 18:31:34 GMT</pubDate><guid>http://erichk.instantspot.com/blog/2007/03/23/First-Post</guid><category>General</category></item></channel></rss>