<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>RSS feed for InstantSpot site cfZen</title><link>http://cfzen.instantspot.com</link><description>Zen moments in a ColdFusion life</description><language>en-us</language><copyright>This work is Copyright &#xA9; 2009 by cfZen</copyright><generator>RSSVille ColdFusion FeedMaker, version 1.0</generator><pubDate>Sat, 21 Nov 2009 12:07:49 GMT</pubDate><item><title>Top 10 Architecture Scalability Mistakes Made in ColdFusion</title><link>http://cfzen.instantspot.com/blog/2009/08/08/Top-10-Architecture-Scalability-Mistakes-Made-in-ColdFusion</link><description>&lt;p&gt;This is a focus on architecture design mistakes I&apos;ve seen made too often over the years by CF developers building ColdFusion architectures. Often times, the codebase and system started small and grew too fast, such that the original developer/architect didn&apos;t have the time or experience to scale the system up with the demands of high-load applications.&lt;/p&gt; &lt;ol&gt;     &lt;li&gt;Not dedicating enough time and resources on optimizing the database:&lt;br /&gt;     &lt;br /&gt;     Too often, there are smart, but unqualified programmers/developers designing and maintaining the database.&amp;nbsp; A qualified/certified DBA, even part-time, is well worth the investment. You need one who can profile your database, tune all the server and individual database settings, recomming index changes, be responsible for DB design and integrity, regular maintenance, set up replication/failover/clustering, and will proactively monitor your database to let you know what problems need attention in relationship to your applications.&lt;/li&gt;     &lt;li&gt;Not dedicating enough time and resources on optimizing queries:&lt;br /&gt;     &lt;br /&gt;     Again, developers tend to throw themselves into the role of writing all the queries, but don&apos;t necessarily think about the performance/scalability issues of writing non-optimal queries.&amp;nbsp; Often times a DBA who is qualified for all the Database Server stuff (see #1 above) isn&apos;t the same type of DBA who can optimize your queries.&amp;nbsp; You need someone who can run the queries with explain plans, and then can make recommendations on improvements.&amp;nbsp; These improvements pay off immensely!&lt;/li&gt;     &lt;li&gt;Coupling all parts of the system into one mega-application, instead of separate applications&lt;br /&gt;     &lt;br /&gt;     Usually they start out as fine: clever little applications that &amp;quot;do the job&amp;quot;. They may have started in the CF 4 or 5 days, and grow and grow over the years until they&apos;re a mass of spaghetti code.&amp;nbsp; It may never occur to the developers that as the app gets bigger that not everything belongs together any more.&amp;nbsp; It will take some work, but it&apos;s important for long-term stability and scalability that you de-couple big chunks into smaller applications that run independent from the original beast.&amp;nbsp; Scheduled Tasks, Web Services, APIs, User Admin Areas, Reporting, file/image services, Search services, etc. should no longer be coupled to the main application.&amp;nbsp; Each of those parts should be broken out, so that each can be tuned optimally.&amp;nbsp; Do you want your whole system to start bottlenecking because Search or Web Services become slow or go down?&amp;nbsp; If they&apos;re decoupled, you don&apos;t have that problem.&lt;/li&gt;     &lt;li&gt;Not using a good &amp;quot;shared&amp;quot; file system scalable for high numbers of file writes&lt;br /&gt;     &lt;br /&gt;     When there are multiple physical servers in your cluster (if applicable), you may want a single location to save files.&amp;nbsp; No-no&apos;s here are mapped drives/mounts to a non-dedicated server (such as a drive on your database server, some external drive, etc.).&amp;nbsp; A good NAS and/or SAN solution with failover scales better as file writes become higher over time.&amp;nbsp; Cloud Computing solutions are becoming big now, too, but I haven&apos;t tested enough in this area to make sound recommendations. I&apos;m sure other with more experience can tell us.&amp;nbsp; Comments?&lt;/li&gt;     &lt;li&gt;Not tuning the JVM&lt;br /&gt;     &lt;br /&gt;     Many articles have already been written on this subject, so I won&apos;t go into it.&amp;nbsp; If you&apos;re having performance problems and you don&apos;t know how to tune your JVM, get help from one of the many articles out there, hire an expert, or get Adobe Platinum support for CF.&lt;/li&gt;     &lt;li&gt;Not tuning Request settings in the ColdFusion Administrator&lt;br /&gt;     &lt;br /&gt;     See #5 above.&lt;/li&gt;     &lt;li&gt;Not making good use of Multiple Instances&lt;br /&gt;     &lt;br /&gt;     When you de-couple areas of your application (see #3), often it&apos;s wise to put your new applications into separate CF instances.&amp;nbsp; For instance, all heavy tasks (Scheduled Tasks and other &amp;quot;batch&amp;quot; type processes) should run on a separate instance.&amp;nbsp; You don&apos;t want to know how many times I&apos;ve seen a Scheduled Task bring the entire infrastructure to it&apos;s knees.&lt;/li&gt;     &lt;li&gt;Not using CF Monitoring tools, such as SeeFusion, CF8 Server Monitor, and/or FusiontReactor&lt;br /&gt;     &lt;br /&gt;     Get familiar with at least 2 of these, and hire an expert to help you get up to speed on them more quickly.&amp;nbsp; These save your butt!&lt;/li&gt;     &lt;li&gt;Trying to recreate the &amp;quot;holy grail&amp;quot; reporting system from scratch&lt;br /&gt;     &lt;br /&gt;     First, any reporting system should be a prime candidate for de-coupling.&amp;nbsp; And reports that come from the database should not be running against your &amp;quot;write&amp;quot; (master) database, but rather against your &amp;quot;read-only&amp;quot; (slave) database, or else you&apos;ll have a lot of bottlenecks on your hands as users create massive reports reading data while other users are trying to simultaneously write data via the rest of the application.&lt;br /&gt;     &lt;br /&gt;     But secondly, look for reporting solutions that are already available.&amp;nbsp; Most of the time users don&apos;t really need *real-time* reports, and off-line/archived data lends itself better to the more complex reports that users start to request over time (allowing Excel exports makes a lot of people happy, cuz they know how to generate reports &amp;quot;the way they like them&amp;quot; in familiar Excel.&amp;nbsp; Also, don&apos;t write a Report UI that allows users to request *too many* records - your milage will vary, but it&apos;s almost never a good idea to allow reports that have no filters, such that they can just *get everything* all at once.&amp;nbsp; Few web apps are built for handling that much data, so find other solutions.&lt;/li&gt;     &lt;li&gt;Not taking advantage of various caching capabilities:&lt;br /&gt;     &lt;br /&gt;     We all know (hopefully) to cache queries where possible, but... do you use the Application/Server scope where appropriate, and to use cfcache (or other 3rd party CF cache tags/CFCs/frameworks) in areas that rarely change?&amp;nbsp; Do you come up with caching strategies for data, so that it can persist in the Application/Server scope without going back to the dB unnecessarily?&amp;nbsp; Could other data/files be cached to disk?&amp;nbsp; Can you use Verity (or Lucene/Solr) for searches instead of pulling directly from the database all the time?&lt;/li&gt; &lt;/ol&gt;</description><pubDate>Sat, 08 Aug 2009 05:56:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2009/08/08/Top-10-Architecture-Scalability-Mistakes-Made-in-ColdFusion</guid><category>ColdFusion,Software,MySQL</category></item><item><title>OPTIMIZE all MySQL database tables via ColdFusion</title><link>http://cfzen.instantspot.com/blog/2009/06/29/OPTIMIZE-all-MySQL-database-tables-via-ColdFusion</link><description>&lt;p&gt;Ever want to run a script that does an OPTIMIZE of all tables in your database? First off, you can do this with a shell script or cron job with something like: &amp;quot;&lt;code&gt;mysqlcheck -u root -p --auto-repair --check --optimize --all-databases&lt;/code&gt;&amp;quot;&lt;/p&gt; &lt;p&gt;But what if you, say, don&apos;t have a full-time DBA on staff, and want to run these on a schedule which you can easily control with ColdFusion? That was our situation, and so here&apos;s what I came up with. We ran it last weekend during our scheduled &amp;quot;maintenance window&amp;quot; and it took about 90 minutes with no downtime on a MySQL 5.1 18G database&lt;/p&gt; &lt;p&gt;(disclaimer: the speed of this process may vary, depending on numerous variables such as hardware, memory, version of MySQL, etc.)&lt;/p&gt; &lt;p&gt;&lt;br /&gt; &lt;div class=&quot;code&quot; &gt;&lt;pre&gt;&amp;lt;!--- set these according to your database size: 14400 and 1800 were used after extensive testing  on a system with 8G ram and quad core in 2009 for an 18G database; you can easily try different  values here by trying them in the URL  (ex: /OPTIMIZE_ALL_DB_tables.cfm?queryTimeout=5&amp;amp;numOfTables=5) ---&amp;gt; &amp;lt;cfparam name=&amp;quot;URL.RequestTimeout&amp;quot; default=&amp;quot;14400&amp;quot;&amp;gt; &amp;lt;cfparam name=&amp;quot;URL.queryTimeout&amp;quot; default=&amp;quot;1800&amp;quot;&amp;gt; &amp;lt;cfparam name=&amp;quot;URL.myDatasource&amp;quot; default=&amp;quot;my_database&amp;quot;&amp;gt; &amp;lt;cfparam name=&amp;quot;URL.numOfTables&amp;quot; default=&amp;quot;1000000&amp;quot;&amp;gt;  &amp;lt;!--- set u/p to one that has permissions to run OPTIMIZE &amp;amp; FLUSH on your tables ---&amp;gt; &amp;lt;cfset Variables.myUsername = &amp;quot;db_user&amp;quot;&amp;gt; &amp;lt;cfset Variables.myPass = &amp;quot;my_password&amp;quot;&amp;gt; &amp;lt;cfset Variables.toAddresses = &amp;quot;webmaster@mydomain.com;aaron@mydomain.com&amp;quot;&amp;gt; &amp;lt;cfset Variables.fromAddress = &amp;quot;webmaster@mydomain.com&amp;quot;&amp;gt;  &amp;lt;cfsetting requesttimeout=&amp;quot;#URL.RequestTimeout#&amp;quot;&amp;gt;   &amp;lt;!--- get host and instance if they don&apos;t already exist ---&amp;gt; &amp;lt;cfif NOT IsDefined(&amp;quot;Server.hostName&amp;quot;)&amp;gt;   &amp;lt;cftry&amp;gt;   &amp;lt;cfset local.oInetAddress = CreateObject(&amp;quot;java&amp;quot;, &amp;quot;java.net.InetAddress&amp;quot;)&amp;gt;   &amp;lt;cfset Server.hostName = local.oInetAddress.getLocalHost().getHostName()&amp;gt;    &amp;lt;cfcatch type=&amp;quot;application&amp;quot;&amp;gt;    &amp;lt;cfset Server.hostName = &amp;quot;Could not determine with java.net.InetAddress&amp;quot;&amp;gt;   &amp;lt;/cfcatch&amp;gt;  &amp;lt;/cftry&amp;gt;  &amp;lt;/cfif&amp;gt;  &amp;lt;cfif NOT IsDefined(&amp;quot;Server.instanceName&amp;quot;)&amp;gt;   &amp;lt;cftry&amp;gt;   &amp;lt;cfset local.oJRun = CreateObject(&amp;quot;Java&amp;quot;, &amp;quot;jrunx.kernel.JRun&amp;quot;)&amp;gt;   &amp;lt;cfset Server.instanceName = local.oJRun.getServerName()&amp;gt;    &amp;lt;cfcatch type=&amp;quot;application&amp;quot;&amp;gt;    &amp;lt;cfset Server.instanceName = &amp;quot;Could not determine with jrunx.kernel.JRun&amp;quot;&amp;gt;   &amp;lt;/cfcatch&amp;gt;  &amp;lt;/cftry&amp;gt;  &amp;lt;/cfif&amp;gt;    &amp;lt;cfquery name=&amp;quot;rsAllTables&amp;quot;   datasource=&amp;quot;#URL.myDatasource#&amp;quot;   username=&amp;quot;#Variables.myUsername#&amp;quot;   password=&amp;quot;#Variables.myPass#&amp;quot;&amp;gt;  SHOW TABLES IN peoplexs_test; &amp;lt;/cfquery&amp;gt;  &amp;lt;!--- &amp;lt;cfdump var=&amp;quot;#rsAllTables#&amp;quot; format=&amp;quot;text&amp;quot;&amp;gt; ---&amp;gt; &amp;lt;cfset processInfo = &amp;quot;&amp;quot;&amp;gt;  &amp;lt;cfoutput query=&amp;quot;rsAllTables&amp;quot; maxrows=&amp;quot;#URL.numOfTables#&amp;quot;&amp;gt;   &amp;lt;cfset dbErrorInfo = &amp;quot;&amp;quot;&amp;gt;  &amp;lt;cfset anyErrorInfo = &amp;quot;&amp;quot;&amp;gt;  &amp;lt;cfset beginProcessInfo = &amp;quot;&amp;quot;&amp;gt;  &amp;lt;cfset endProcessInfo = &amp;quot;&amp;quot;&amp;gt;   &amp;lt;cfsavecontent variable=&amp;quot;beginProcessInfo&amp;quot;&amp;gt;  --- &amp;lt;strong&amp;gt;&amp;quot;OPTIMIZE TABLE #rsAllTables.TABLES_IN_PEOPLEXS_TEST#&amp;quot; started&amp;lt;/strong&amp;gt;... &amp;lt;br/&amp;gt;  &amp;lt;/cfsavecontent&amp;gt;  &amp;lt;cfset processInfo &amp;amp;= beginProcessInfo&amp;gt;   #beginProcessInfo#  &amp;lt;cfflush&amp;gt;   &amp;lt;cftry&amp;gt;    &amp;lt;cfquery name=&amp;quot;qOptimizeTable&amp;quot;     datasource=&amp;quot;peoplexs_test&amp;quot;     username=&amp;quot;#Variables.myUsername#&amp;quot;     password=&amp;quot;#Variables.myPass#&amp;quot;     timeout=&amp;quot;#URL.queryTimeout#&amp;quot;&amp;gt;    OPTIMIZE TABLE #rsAllTables.TABLES_IN_PEOPLEXS_TEST#;   &amp;lt;/cfquery&amp;gt;    &amp;lt;cfquery name=&amp;quot;qFlushTable&amp;quot;     datasource=&amp;quot;peoplexs_test&amp;quot;     username=&amp;quot;#Variables.myUsername#&amp;quot;     password=&amp;quot;#Variables.myPass#&amp;quot;&amp;gt;    FLUSH TABLE #rsAllTables.TABLES_IN_PEOPLEXS_TEST#;   &amp;lt;/cfquery&amp;gt;    &amp;lt;cfcatch type=&amp;quot;database&amp;quot;&amp;gt;    &amp;lt;cfsavecontent variable=&amp;quot;dbErrorInfo&amp;quot;&amp;gt;    &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;     Database ERROR: &amp;quot;#cfcatch.Cause.Message#&amp;quot; on     &amp;quot;#cfcatch.SQL#&amp;quot;    &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;    &amp;lt;/cfsavecontent&amp;gt;    &amp;lt;cfset processInfo &amp;amp;= dbErrorInfo&amp;gt;    #dbErrorInfo#   &amp;lt;/cfcatch&amp;gt;    &amp;lt;cfcatch type=&amp;quot;any&amp;quot;&amp;gt;    &amp;lt;cfsavecontent variable=&amp;quot;anyErrorInfo&amp;quot;&amp;gt;    &amp;lt;span style=&amp;quot;color:red;&amp;quot;&amp;gt;    &amp;lt;cfdump var=&amp;quot;#cfcatch#&amp;quot; format=&amp;quot;text&amp;quot;&amp;gt;    &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;    &amp;lt;/cfsavecontent&amp;gt;    &amp;lt;cfset processInfo &amp;amp;= anyErrorInfo&amp;gt;    #anyErrorInfo#   &amp;lt;/cfcatch&amp;gt;   &amp;lt;/cftry&amp;gt;   &amp;lt;cfsavecontent variable=&amp;quot;endProcessInfo&amp;quot;&amp;gt;  ------ done with #rsAllTables.TABLES_IN_PEOPLEXS_TEST#. &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;  &amp;lt;/cfsavecontent&amp;gt;   &amp;lt;cfset processInfo &amp;amp;= endProcessInfo&amp;gt;  #endProcessInfo#  &amp;lt;cfflush&amp;gt;  &amp;lt;/cfoutput&amp;gt;  &amp;lt;cfmail to=&amp;quot;#Variables.toAddresses#&amp;quot;         from=&amp;quot;#Variables.fromAddress#&amp;quot;         subject=&amp;quot;OPTIMIZE_ALL_DB_tables.cfm on #Server.hostName#/#Server.instanceName# at #DateFormat(Now(), &apos;yyyy-mm-dd&apos;)#&amp;quot;         type=&amp;quot;HTML&amp;quot;         server=&amp;quot;localhost&amp;quot;&amp;gt; &amp;lt;cfoutput&amp;gt;#Trim(processInfo)#&amp;lt;/cfoutput&amp;gt; &amp;lt;/cfmail&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</description><pubDate>Mon, 29 Jun 2009 20:46:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2009/06/29/OPTIMIZE-all-MySQL-database-tables-via-ColdFusion</guid><category>ColdFusion,MySQL</category></item><item><title>MultiCFAdmin Alpha 0.007 is on RIAForge.org now</title><link>http://cfzen.instantspot.com/blog/2009/06/03/MultiCFAdmin-Alpha-0007-is-on-RIAForgeorg-now</link><description>&lt;p&gt;Here&apos;s the link: &lt;a href=&quot;http://multicfadmin.riaforge.org/&quot; target=&quot;_blank&quot;&gt;http://multicfadmin.riaforge.org/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;span class=&quot;subhead&quot;&gt;Description:&lt;/span&gt;&lt;/p&gt; &lt;div class=&quot;copy&quot;&gt; &lt;p&gt;In this Alpha version 0.007, which allows connection to CF Admin API on local and remote CF instances, there are only a few features:&lt;br /&gt; &lt;br /&gt; 1) jQuery UI&lt;br /&gt; 2) ability to see basic stats of each CF8 Server Monitor API&lt;br /&gt; 3) ability to clear Template Cache for all instances&lt;br /&gt; 4) ability to toggle Trusted Cache for all instances&lt;br /&gt; 5) can configure multiple CF Admin URLs, passwords, and a sleep() time for how long MultiCFAdmin waits after Trusted Cache is changed&lt;/p&gt; &lt;p&gt;&lt;span class=&quot;subhead&quot;&gt;Requirements:&lt;/span&gt;&lt;/p&gt; &lt;div class=&quot;copy&quot;&gt;* ColdFusion 8.01 Enterprise or Developer, Multi-server&lt;br /&gt; * multiple CF instances other than cfusion (default)&lt;br /&gt; * access to jrun-web.xml configuration files on each instance&lt;/div&gt; &lt;/div&gt;</description><pubDate>Wed, 03 Jun 2009 05:51:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2009/06/03/MultiCFAdmin-Alpha-0007-is-on-RIAForgeorg-now</guid><category>ColdFusion,Software,MultiCFAdmin</category></item><item><title>Multi-CF Admin Alpha 0.02</title><link>http://cfzen.instantspot.com/blog/2009/05/08/MultiCF-Admin-Alpha-002</link><description>&lt;p&gt;Okay, this is pretty cool (at least I think so). &lt;a href=&quot;http://sites.google.com/site/aqlong/Home/MultiCFAdmin_002.zip?attredirects=0&quot;&gt;Here&apos;s the zip&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;How many of us with multiple instances in a cluster have wanted to be able to do things like clear the template cache for every instance in the cluster with *one* button?&lt;/p&gt; &lt;p&gt;Well, I have.&lt;/p&gt; &lt;p&gt;Now, I have an early alpha that is not much more than a proof-of-concept, but does exactly that.&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://content.screencast.com/users/aqlong/folders/Jing/media/ec9177a2-659d-440b-8e45-367887d69079/2009-05-08_1626.png&quot; /&gt;&lt;/p&gt; &lt;p&gt;and in a few seconds, it&apos;s all cleared (see below)...&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://content.screencast.com/users/aqlong/folders/Jing/media/0b471289-bb7a-411e-95bd-a7215b6a27ea/2009-05-08_1629.png&quot; /&gt;&lt;/p&gt; &lt;p&gt;Here&apos;s the readme.txt:&lt;/p&gt; &lt;p&gt;&lt;font face=&quot;Courier New&quot;&gt;Requirements:&lt;br /&gt; * ColdFusion 8.01 Enterprise or Developer, Multi-server&lt;br /&gt; * multiple CF instances other than cfusion (default)&lt;br /&gt; &lt;br /&gt; Installation:&lt;br /&gt; 1.) put /MultiCFAdmin folder at www root&lt;br /&gt; 2.) open jrun-web.xml file at [jrun_root]\servers\[instance_name]\cfusion.ear\cfusion.war\WEB-INF (you may need to create it by copying over from cfusion instance if it doesn&apos;t exist)&lt;br /&gt; 3.) add a line within the &lt;jrun-web-app&gt; XML block that points to where your WS files are, like this:&lt;br /&gt; &lt;virtual-mapping&gt;&lt;br /&gt;     &lt;resource-path&gt;/Webservices&lt;/resource-path&gt;&lt;br /&gt;     &lt;system-path&gt;/opt/jrun4/servers/cfusion/cfusion-ear/cfusion-war/MultiCFAdmin/Webservices&lt;/system-path&gt;&lt;br /&gt; &lt;/virtual-mapping&gt;&lt;br /&gt; &lt;br /&gt; 4.) NOTE: don&apos;t attempt to connect to the cfusion instance because it causes errors with the Web Service calls to try and connect from the same instance&lt;br /&gt; 5.) set environment info for Application.Environment in config/Environment.cfm&lt;br /&gt; 6.) set instance info in config/CFInstances.cfm&lt;/jrun-web-app&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://sites.google.com/site/aqlong/Home/MultiCFAdmin_002.zip?attredirects=0&quot;&gt;Here&apos;s the zip&lt;/a&gt; again.&lt;/p&gt; &lt;p&gt;Send me a tweet if you&apos;re interested in helping with the code: &lt;a href=&quot;http://twitter.com/aqlong&quot;&gt;http://twitter.com/aqlong&lt;/a&gt;&lt;/p&gt;</description><pubDate>Fri, 08 May 2009 21:14:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2009/05/08/MultiCF-Admin-Alpha-002</guid><category>ColdFusion,Software,MultiCFAdmin</category></item><item><title>Verity &quot;java.io.IOException: Read timed out&quot; error?</title><link>http://cfzen.instantspot.com/blog/2009/04/27/Verity-javaioIOException-Read-timed-out-error</link><description>An error occurred while performing an operation in the Search Engine library. Error switching collection offline.: com.verity.api.administration.ConfigurationException: java.io.IOException: Read timed out</description><pubDate>Mon, 27 Apr 2009 19:33:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2009/04/27/Verity-javaioIOException-Read-timed-out-error</guid><category>ColdFusion,Verity</category></item><item><title>I&apos;m on twitter now: aqlong</title><link>http://cfzen.instantspot.com/blog/2009/04/17/Im-on-twitter-now-aqlong</link><description>&lt;p&gt;If you care to follow me on twitter now, my account is aqlong&lt;/p&gt;</description><pubDate>Fri, 17 Apr 2009 16:01:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2009/04/17/Im-on-twitter-now-aqlong</guid><category>ColdFusion,Software</category></item><item><title>anyone use Nirvanix CloudNAS?</title><link>http://cfzen.instantspot.com/blog/2009/04/09/anyone-use-Nirvanix-CloudNAS</link><description>&lt;p&gt;I&apos;m looking for feedback, good or bad, on Nirvanix.&lt;/p&gt; &lt;p&gt;When looking at potential &amp;quot;cloud providers&amp;quot;, I was amazed to read about the CloudNAS solution that Nirvanix has, which gives your servers a way to mount Nirvanix cloud storage as a drive... too cool!&amp;nbsp;&lt;/p&gt; &lt;p&gt;It has the traditional advantages of &amp;quot;Global Virtualization, Unlimited Scalability, Continuous Availability, and a Usage Based Service Model.&amp;quot; - &lt;a href=&quot;http://www.nirvanix.com/resources.aspx#documentation&quot; target=&quot;_blank&quot;&gt;http://www.nirvanix.com/resources.aspx#documentation&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Anyone used the CloudNAS or heard of it?&lt;/p&gt;</description><pubDate>Thu, 09 Apr 2009 21:01:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2009/04/09/anyone-use-Nirvanix-CloudNAS</guid><category>ColdFusion,Software,cloud</category></item><item><title>Anyone running Axis 1.4 on a CF 8 or otherwise?</title><link>http://cfzen.instantspot.com/blog/2009/03/17/Anyone-running-Axis-14-on-a-CF-8-or-otherwise</link><description>&lt;p&gt;For those of you who have published SOAP Web Services in ColdFusion (Adobe CF 8, OpenBD, Railo, or other), are any of you using Axis 1.4?&lt;/p&gt; &lt;p&gt;My research shows CF 8 and OpenDB use Axis 1.2.x., and I&apos;m also trying to find out what Railo 3 uses.&amp;nbsp; My problem is that we have a legacy system that runs some Web Services that many 3rd party partners use to interact with our system constantly.&amp;nbsp; They have slow or non-existent development teams, so unfortunately forcing them to change their code to support a lower version of Axis is not an option.&amp;nbsp;&lt;/p&gt; &lt;p&gt;I&apos;ve had &lt;a href=&quot;http://tjordahl.blogspot.com/2005/09/upgrading-coldfusion-mx-7-to-axis-13.html&quot; target=&quot;_blank&quot;&gt;some discussions here&lt;/a&gt; with Tom Jordahl on trying to get 1.4 running on CF 8.01, but we haven&apos;t gotten anywhere yet.&amp;nbsp; So, has anyone else got it working on any flavor of CF?&lt;/p&gt; &lt;p&gt;(fingers and toes crossed)&lt;/p&gt;</description><pubDate>Tue, 17 Mar 2009 14:48:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2009/03/17/Anyone-running-Axis-14-on-a-CF-8-or-otherwise</guid><category>ColdFusion,Web Services</category></item><item><title>2 Web Developer job openings in the Netherlands</title><link>http://cfzen.instantspot.com/blog/2009/02/03/2-Web-Developer-job-openings-in-the-Netherlands</link><description>&lt;p&gt;At PeopleXS.com, we have 2 positions open for developers, and you and I can work together on some exciting projects.&amp;nbsp; See &lt;a href=&quot;http://www.peoplexs.com/comp/jobs.html&quot;&gt;http://www.peoplexs.com/comp/jobs.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;We will consider applicants from all over the world.&amp;nbsp; Heck, I&apos;m an American who was living in Austin, TX six months ago.&amp;nbsp; Here&apos;s the first job description:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;table width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot;&gt;     &lt;tbody&gt;         &lt;tr&gt;             &lt;td&gt;             &lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; class=&quot;DataTable&quot;&gt;                 &lt;tbody&gt;                     &lt;tr&gt;                         &lt;td valign=&quot;top&quot; class=&quot;Datafield&quot; colspan=&quot;3&quot;&gt;                         &lt;h1&gt;ColdFusion Developer&lt;/h1&gt;                         &lt;p&gt;We are currently looking for a ColdFusion developer to join our development team in Rijswijk ZH.&lt;/p&gt;                         &lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;                         &lt;p&gt;PeopleXS is an innovative high-tech Internet company specializing in on-demand recruitment systems. Although PeopleXS started up in 1999, we still have a strong start-up culture in which each initiative is encouraged. PeopleXS has a rapidly growing customer base in the Netherlands and internationally such as Capgemini, Randstad, Total, Abn Amro, Mexx and many others.&lt;/p&gt;                         &lt;p&gt;&lt;strong&gt;Responsibilities&lt;/strong&gt;:&lt;/p&gt;                         &lt;ul&gt;                             &lt;li&gt;Code applications and new features according to specifications&lt;/li&gt;                             &lt;li&gt;Enhance functionality and/or performance of applications as necessary&lt;/li&gt;                             &lt;li&gt;Assist in resolving application problems and defects&lt;/li&gt;                             &lt;li&gt;Research, identify, analyze, and fulfill requirements of users as specified by Product Management&lt;/li&gt;                             &lt;li&gt;Develop and maintain technical documentation and guidelines&lt;/li&gt;                             &lt;li&gt;Unit test code&lt;/li&gt;                             &lt;li&gt;Participate in peer code reviews&lt;/li&gt;                             &lt;li&gt;Research &amp;amp; Development with newest CF 8 Enterprise features, and possibly AIR and Flex&lt;/li&gt;                             &lt;li&gt;Participate in development team meetings&lt;/li&gt;                         &lt;/ul&gt;                         &lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt;&lt;/p&gt;                         &lt;/div&gt;                         &lt;ul&gt;                             &lt;li&gt;                             &lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;Knowledge of ColdFusion or prepared to learn ColdFusion&lt;/div&gt;                             &lt;/li&gt;                             &lt;li&gt;                             &lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;Good knowledge of (X)HTML, CSS and JavaScript&lt;/div&gt;                             &lt;/li&gt;                             &lt;li&gt;                             &lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;Good knowledge of the SQL language and relational databases&lt;/div&gt;                             &lt;/li&gt;                             &lt;li&gt;                             &lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;Familiarity with Web standards&lt;/div&gt;                             &lt;/li&gt;                             &lt;li&gt;                             &lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;                             &lt;p style=&quot;margin-bottom: 0cm;&quot;&gt;Good communication skills&lt;/p&gt;                             &lt;/div&gt;                             &lt;/li&gt;                             &lt;li&gt;                             &lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;                             &lt;p style=&quot;margin-bottom: 0cm;&quot;&gt;Team player who can also work independently&lt;/p&gt;                             &lt;/div&gt;                             &lt;/li&gt;                         &lt;/ul&gt;                         &lt;p&gt;It would be a plus if you have already had some experience in: Ajax, jQuery/ext-js, MySQL, SVN, XML, SOAP, Flex, Apache and Linux.&lt;/p&gt;                         &lt;div style=&quot;margin-bottom: 0cm;&quot;&gt;&lt;strong&gt;Benefits&lt;/strong&gt;:&lt;/div&gt;                         &lt;ul&gt;                             &lt;li&gt;New, high-quality DELL Laptop&lt;/li&gt;                             &lt;li&gt;Salary up to 3600 Euro (based on experience level)&lt;/li&gt;                             &lt;li&gt;Pension&lt;/li&gt;                             &lt;li&gt;25 days off&lt;/li&gt;                             &lt;li&gt;Work from home&lt;/li&gt;                             &lt;li&gt;Flexible work hours&lt;/li&gt;                             &lt;li&gt;32-40 hours per week&lt;/li&gt;                             &lt;li&gt;Daily lunch provided&lt;/li&gt;                             &lt;li&gt;Professional training classes available&lt;/li&gt;                             &lt;li&gt;Entire development team is sent to Adobe MAX Europe every year!&lt;/li&gt;                             &lt;li&gt;We work hard, but encourage a culture of fun&lt;/li&gt;                         &lt;/ul&gt;                         &lt;p&gt;You can develop yourself further in our company, like becaming Lead Developer or Lead Architect, but we also have opportunities in less technical areas such as Consultant or Product Manager.&lt;/p&gt;                         &lt;/td&gt;                     &lt;/tr&gt;                 &lt;/tbody&gt;             &lt;/table&gt;             &lt;/td&gt;         &lt;/tr&gt;         &lt;tr&gt;             &lt;td height=&quot;25&quot;&gt;&amp;nbsp;&lt;/td&gt;         &lt;/tr&gt;     &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;And the second:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h1&gt;Junior web developer&lt;/h1&gt; &lt;p&gt;We are currently looking for a Junior web developer to join our development team.&lt;/p&gt; &lt;p&gt;We are a young, high-tech and innovative company and although the company was founded already back in 1999 there is still a high start-up atmosphere in the team. We like it when things move fast and love to chase good ideas as a team. Just for the fun of it ! We have used (better: breathed) ColdFusion since version 4.0, really love it and value what it means for our company. Our idea of a good company-party would be to meet ColdFusion guru&apos;s and exchange ideas with fellow developers.&lt;/p&gt; &lt;p&gt;You will go through a trainee-program, called &amp;quot;Young professionals&amp;quot;, where we will teach you all you need to know about ColdFusion.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;ul&gt;     &lt;li&gt;good understanding of at least one Web scripting language, preferably ColdFusion,&lt;/li&gt;     &lt;li&gt;basic knowledge of (D)HTML, CSS and JavaScript,&lt;/li&gt;     &lt;li&gt;basic knowledge of the SQL language,&lt;/li&gt;     &lt;li&gt;at least 1 year experience designing dynamic web sites,&lt;/li&gt;     &lt;li&gt;familiarity with Web standards,&lt;/li&gt;     &lt;li&gt;good communication skills&lt;/li&gt;     &lt;li&gt;team player and also be able to work as an individual&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;It would be a plus if you already had some experience in: ColdFusion, Ajax, MySQL, SVN, XML, Linux, Apache and speak and write the Dutch language.&amp;nbsp;&lt;/p&gt; &lt;p&gt;You can develop yourself further in our company, like becaming Lead Developer or Lead Architect, but we also have opportunities in a less technical direction like Consultant or Product Manager.&lt;/p&gt;</description><pubDate>Tue, 03 Feb 2009 17:58:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2009/02/03/2-Web-Developer-job-openings-in-the-Netherlands</guid><category>ColdFusion,Jobs</category></item><item><title>Zen Web Software Management</title><link>http://cfzen.instantspot.com/blog/2008/12/19/Zen-Web-Software-Management</link><description>&lt;p&gt;I thought I&apos;d throw together a list of simple and basic (Zen) web software development &amp;quot;principles&amp;quot; that I try to keep in mind as I work on infrastructure, architecture, release process planning for my company, &lt;a target=&quot;_blank&quot; href=&quot;http://www.Peoplexs.com&quot;&gt;Peoplexs.com&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;DISCLAIMER: These are pretty high-level, may be obvious to many and cliche to others, but are worth mentioning because they are so often missed or ignored by very smart people and organizations.&lt;/p&gt; &lt;p&gt;&lt;br /&gt; (in no particular order)&lt;/p&gt; &lt;ol&gt;     &lt;li&gt;Communicate constantly, both upwards and downwards.&lt;/li&gt;     &lt;li&gt;Spend the highest percentage of time on design, UI, and detailed specifications, rather than on development.&lt;/li&gt;     &lt;li&gt;Under-promise, and over-deliver.&lt;/li&gt;     &lt;li&gt;Commit to, and invest in, professional QA Testing.&lt;/li&gt;     &lt;li&gt;The time to build automated tools (for testing, making builds, and releases) is well worth it in the end.&lt;/li&gt;     &lt;li&gt;Document, practice, and update your Disaster Recovery Plan.&lt;/li&gt;     &lt;li&gt;Lead Developers must manage expections for Product Managers at least as much as Product Managers manage the products.&lt;/li&gt;     &lt;li&gt;Use quality, time-tested, software for integrating release management, defect tracking, and project management such as Jira or FogBugz.&lt;/li&gt;     &lt;li&gt;Inform everyone as early as possible if project is running late.&lt;/li&gt;     &lt;li&gt;Adding more developers late in a project only makes it more late.&lt;/li&gt;     &lt;li&gt;Have Product Managers review, and then commit to, a final UI before development begins.&lt;/li&gt;     &lt;li&gt;Developers want and need time to do cool and fun work. Giving them some such will help motivation and productivity.&lt;/li&gt;     &lt;li&gt;Schedule in patch releases and archictural releases regularly, and at least 2 times per year if usage is growing quickly.&lt;/li&gt;     &lt;li&gt;Listen fully to all suggestions and criticism, without a defensive attitude.&lt;/li&gt;     &lt;li&gt;Be strong, and don&apos;t let a few clients dictate your long-term strategies.&lt;/li&gt;     &lt;li&gt;Invest in Technical Conferences and Training for your team.&lt;/li&gt;     &lt;li&gt;Empower every team member.&amp;nbsp; Give each person at least one specialty that he is &amp;quot;in charge of&amp;quot;.&lt;/li&gt;     &lt;li&gt;Trust your veterans, even after they make mistakes, as they are probably more upset at themselves than you are at them.&lt;/li&gt;     &lt;li&gt;Use something simple and flexible, like a Wiki, for internal documentation. And don&apos;t be too strict on *how* it&apos;s documented - you&apos;re lucky that there is *any*.&lt;/li&gt;     &lt;li&gt;Lead, don&apos;t push or drag.&lt;/li&gt;     &lt;li&gt;Celebrate, or at least acknowledge, significant accomplishments. It doesn&apos;t have to be a huge party.&amp;nbsp; Something as simple as a short, yet specific, thank you on IM will do nicely... or saying to one of the Executives, &amp;quot;Check out the creative and helpful widget that [Developer X] whipped up last Friday!&amp;quot; in front of a room full of co-workers (unless Developer X is extremely shy... which sounds like a mythical person to me ;)&lt;/li&gt;     &lt;li&gt;Keep your negative comments to private conversations as much as you can.&amp;nbsp; Publicly positive people are much more likely to be followed and liked.&amp;nbsp; Of course there&apos;s a fine line you must walk to keep from seeming like you&apos;re *two-faced*.&lt;/li&gt;     &lt;li&gt;A fun, exciting work environment begins with you, from within.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;I&apos;ll probably add to this list as I think of ramdom, appropriate items.&lt;/p&gt; &lt;p&gt;Peace.&lt;/p&gt;</description><pubDate>Fri, 19 Dec 2008 20:52:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2008/12/19/Zen-Web-Software-Management</guid><category>ColdFusion,Zen,Software</category></item><item><title>ColdFusion Developer opening in Holland</title><link>http://cfzen.instantspot.com/blog/2008/11/20/ColdFusion-Developer-opening-in-Holland</link><description>I&apos;ve been living and working in Holland for about 7 weeks now, and am loving every minute of it.  Come work with me and other top-notch CF developers on exciting projects that will keep you interested for the long-term.&lt;br /&gt; &lt;br /&gt; They have nice benefits, a fun working environment, and &quot;perks&quot; like getting to go to Adobe MAX Europe and to Luxembourg for a camping trip on company money.&lt;br /&gt; &lt;br /&gt; Come join me: http://peoplexs.com/comp/ColdFusionDevelopers.htm</description><pubDate>Thu, 20 Nov 2008 16:09:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2008/11/20/ColdFusion-Developer-opening-in-Holland</guid><category>ColdFusion,Jobs,Adobe MAX Europe</category></item><item><title>Who&apos;s gonna be a Adobe MAX Europe?</title><link>http://cfzen.instantspot.com/blog/2008/11/20/Whos-gonna-be-a-Adobe-MAX-Europe</link><description>If so, post anything (i mean anything) below, and maybe I can buy the first round :D&lt;br /&gt; &lt;br /&gt; I&apos;ve only been in Europe (Holland) a month and a half, and don&apos;t know any CF&apos;ers (other than 2 coworkers) in the area.  I&apos;m from Texas, so everything in Europe is &quot;in the area&quot; to me.  Let me know.</description><pubDate>Thu, 20 Nov 2008 16:05:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2008/11/20/Whos-gonna-be-a-Adobe-MAX-Europe</guid><category>ColdFusion,Adobe MAX Europe</category></item><item><title>how many bytes can a CF function be?</title><link>http://cfzen.instantspot.com/blog/2008/11/19/how-many-bytes-can-a-CF-function-be</link><description>Apparently, the answer is 65535 bytes.&lt;br/&gt; &lt;br/&gt; I had a huge laugh today when we got this error...&lt;br/&gt; &lt;br/&gt; &quot;500 cfReports2ecfc1683660545$funcRUN (Code of a method longer than 65535 bytes) cfReports2ecfc1683660545$funcRUN (Code of a method longer than 65535 bytes)&quot;&lt;br/&gt; &lt;br/&gt; ... when trying to run a function I had just refactored for some inherited code.  It had the dreaded problem that none of the function-local variables were scoped.  So, I dutifully added cfset Var local = StructNew() to the top of the function and spent about 4 hours prepending all relevant variables with &quot;local.&quot;&lt;br/&gt; &lt;br/&gt; then, we got this error and noticed the huge, complex function has 2189 lines of CF code.  I&apos;m guessing CF server was able to compile the code, but just isn&apos;t allowed to run a function larger than 65535 byte.&lt;br/&gt;   &lt;br/&gt; Has anyone else ever seen this?  (i did a short Google session, but didn&apos;t turn up anything)&lt;br/&gt; &lt;br/&gt; Yes, I know this function needs to be rewritten badly to shorter functions, yadda, yadda... but I couldn&apos;t help sharing.&lt;br/&gt;</description><pubDate>Wed, 19 Nov 2008 16:04:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2008/11/19/how-many-bytes-can-a-CF-function-be</guid><category>ColdFusion</category></item><item><title>An American CF developer&apos;s adventure to Holland (part 2)</title><link>http://cfzen.instantspot.com/blog/2008/11/16/An-American-CF-developers-adventure-to-Holland-part-2</link><description>&lt;p&gt;So, we made it to The Hague (Den Haag), The Netherlands and I have been loving it, both professionally and personally.  Here&apos;s our personal blog: http://longnion.blogspot.com.&lt;/p&gt;  &lt;p&gt;This is part 2 of my series on moving to, and working in, Holland.  Did you miss &lt;a target=&quot;_blank&quot; href=&quot;http://cfzen.instantspot.com/blog/2008/08/27/An-American-CF-developers-adventure-to-Holland-part-1&quot;&gt;part 1&lt;/a&gt;?&lt;/p&gt;  &lt;p&gt;How difficult is it to move to Holland?&lt;/p&gt;  &lt;p&gt;In short, quite difficult, but clearly not impossible.  What do you need?&lt;/p&gt;  &lt;ol&gt;      &lt;li&gt;a job.  I don&apos;t know how it would be possible without a job lined up, and coworkers who help a lot&lt;/li&gt;      &lt;li&gt;a passport.&lt;/li&gt;      &lt;li&gt;patience. The various government agencies make for lot&apos;s of red tape!  ugh!&lt;/li&gt;      &lt;li&gt;guts.&lt;/li&gt;      &lt;li&gt;plane ticket.&lt;/li&gt;      &lt;li&gt;place to live, preferrably fully-furnished, as many apartments are in Holland.&lt;/li&gt;      &lt;li&gt;a willingness to ask a lot of questions.&lt;/li&gt;      &lt;li&gt;The phrase, &quot;Spreekt u Engels?&quot;, to ask if they speak English... over 70% of Dutch people do!&lt;/li&gt;      &lt;li&gt;A GPS device - I liked the TomTom we used for the first month.&lt;/li&gt;      &lt;li&gt;Internet - I used Ziggo, but it was quite difficult to set up since their website and phone system is only in Dutch.  I had to bribe my coworkers to come over and help out a few times.&lt;/li&gt;      &lt;li&gt;I willingness to walk and take public transportation.  Between walking, trams, trains, and busses, I see no need for a car.  And with all the walking, I already lost probably 15 pounds in a month and a half!&lt;/li&gt;      &lt;li&gt;Tolerance of other cultures and of lot&apos;s of change.  I work with Dutch and Danish people, and one guy from Madagascar.  We are constantly learning new things about cultural, language, food, musical, and other differences - and it&apos;s open my eyes to worlds I never knew existed.&lt;/li&gt;      &lt;li&gt;Warm clothes and walking shoes.&lt;/li&gt;  &lt;/ol&gt;  &lt;p&gt; &lt;/p&gt;</description><pubDate>Sun, 16 Nov 2008 21:10:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2008/11/16/An-American-CF-developers-adventure-to-Holland-part-2</guid><category>ColdFusion,Jobs</category></item><item><title>An American CF developer&apos;s adventure to Holland (part 1)</title><link>http://cfzen.instantspot.com/blog/2008/08/27/An-American-CF-developers-adventure-to-Holland-part-1</link><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I&apos;ve resigned my &lt;a href=&quot;http://cfzen.instantspot.com/blog/2008/08/26/Experienced-CF-Developer-needed&quot; title=&quot;inquire about my old job&quot;&gt;current position&lt;/a&gt; to move to Holland to work at PeopleXS.com as the Lead CF Developer. So, this is part 1 of the following blog series I plan to write.&lt;/p&gt; &lt;ol&gt;     &lt;li&gt;How does one decide to completely uproot one&apos;s family, home, and job to dare move to a country on another continent?&lt;/li&gt;     &lt;li&gt;How difficult is it to move to Holland?&lt;/li&gt;     &lt;li&gt;What is it like to live in Holland as an American expat?&lt;/li&gt;     &lt;li&gt;How is being a Web Developer different in Holland than in America?&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Obviously, parts 2-4 will have to wait until I get to Holland.&amp;nbsp; And if there&apos;s interest in the subject, I may write additional related entries.&lt;/p&gt; &lt;h3&gt;&lt;strong&gt;Part 1:&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;&lt;em&gt;How did I decide to completely uproot my family, home, and job to dare move to a country on another continent?&lt;/em&gt; &lt;strong&gt;Not easily!&lt;/strong&gt;&lt;br /&gt; &lt;br /&gt; While reading through blogs (I forget which one), I noticed a blog that described a Lead CF Developer position for PeopleXS.com. BTW - there&apos;s still some &lt;a href=&quot;http://peoplexs.com/comp/ColdFusionDevelopers.htm&quot;&gt;openings for additional developers&lt;/a&gt;. I emailed it to myself to look over later, as I had always been curious about what it would be like to live in Europe (especially a progressive, liberal country like the Netherlands).&amp;nbsp; A week later, I finally got around to emailing my resume in.&lt;/p&gt; &lt;p&gt;PeopleXS was glad I had applied, was open to hiring developers from outside the country, and really piqued my interest. So, the next evening at&amp;nbsp; the dinner table at home, not expecting a good reaction from my wife, I tried to casually mentioned that I had found an &amp;quot;interesting opportunity&amp;quot; in Holland. Without blinking she smiled and said, &amp;quot;let&apos;s do it!&amp;quot;&lt;/p&gt; &lt;p&gt;.... (back to earth) ....&lt;/p&gt; &lt;p&gt;I was completely floored by her reaction, but love her all the more for it.&amp;nbsp; I hadn&apos;t even told her anything about it really, so obviously we had a lot more &amp;quot;figuring out&amp;quot; to do, but it gave me enough of a boost to forge onward.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Where? &lt;/em&gt;The Hague&lt;/p&gt; &lt;p&gt;&lt;em&gt;When? &lt;/em&gt;October 1st&lt;/p&gt; &lt;p&gt;&lt;em&gt;Who?&lt;/em&gt; me, my wife, and 2-year old son&lt;/p&gt; &lt;p&gt;&lt;em&gt;What?&lt;/em&gt; Lead Developer of a small team of CF developers and a QA team that will expand to meet the needs of a fast-growing SaaS company.&lt;/p&gt; &lt;p&gt;&lt;em&gt;How? &lt;/em&gt;Fly us to The Hague a few days early to get set up in temporary housing before my first day on the job.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Paid time off?&lt;/em&gt; 5 weeks, instead of 2 weeks here at most jobs in the US&lt;/p&gt; &lt;p&gt;&lt;em&gt;Transportation?&lt;/em&gt; bikes and public transit (see video below)&lt;/p&gt; &lt;p&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt; &lt;param value=&quot;http://www.youtube.com/v/qk6YxhKH590&amp;hl=en&amp;fs=1&quot; name=&quot;movie&quot; /&gt; &lt;param value=&quot;true&quot; name=&quot;allowFullScreen&quot; /&gt;&lt;embed width=&quot;425&quot; height=&quot;344&quot; allowfullscreen=&quot;true&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://www.youtube.com/v/qk6YxhKH590&amp;hl=en&amp;fs=1&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;How long?&lt;/em&gt; indefinitely - as long as I like the country and job&lt;/p&gt; &lt;p&gt;But what about everything I have to leave behind? Family? Job? House? Friends? Material things? Austin, the live music capital of the world, for God&apos;s sake?!!&lt;/p&gt; &lt;ul&gt;     &lt;li&gt;&lt;strong&gt;Family and friends&lt;/strong&gt; - this is obviously the most difficult, and it really hasn&apos;t &amp;quot;set in&amp;quot;, yet.&amp;nbsp; But I&apos;m sure we&apos;ll get very emotional as it gets closer, and we say our last good-byes. And our families took the news much better than expected, and have been very supportive.&amp;nbsp; Not to mention we&apos;ll use much of our vacation/holiday time to visit the US as much as we can.&lt;/li&gt;     &lt;li&gt;&lt;strong&gt;House &lt;/strong&gt;- in the process of being sold.&amp;nbsp; (cross your fingers)&lt;/li&gt;     &lt;li&gt;&lt;strong&gt;Job &lt;/strong&gt;- also pretty scary, since I had a very solid, stable job in a fast growing company.&amp;nbsp; I may look back in a few months and think, &amp;quot;what the hell did I do?!!!&amp;quot;&lt;/li&gt;     &lt;li&gt;&lt;strong&gt;Austin &lt;/strong&gt;- yes, it&apos;s where I grew up and I love it.&amp;nbsp; But still it&apos;s in *Texas*.&amp;nbsp; I don&apos;t want to look back at my life, when I&apos;m barely able to lift my own head, and wonder why I spent my entire in one place.&amp;nbsp; I&apos;d like to think I&apos;m a bit adventurous at heart.&amp;nbsp; We&apos;ll see if I can handle a real adventure...&lt;/li&gt;     &lt;li&gt;&lt;strong&gt;Material things &lt;/strong&gt;- aside from a few personal items, gifts, and family stuff, I&apos;m honestly not really *attached* to much that I own, man.&amp;nbsp; My hippie parents passed this attribute to me, and I guess it&apos;s finally paying off.&amp;nbsp; ;-)&amp;nbsp; [er, oh wait - I can&apos;t really bare to give up my Wii and Wii Fit, though... and maybe it&apos;ll be a way to lure a few Dutch people to be my friends...&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;After over a month of interviewing, long strings of emails to PeopleXS, mulling it over and over with my wife, and rationalizing that this was &amp;quot;too big of an opportunity to pass up&amp;quot;, we took the plunge and I accepted the position.&amp;nbsp; Only patience, positivity (is that the right word?), hard work, and an open mind will keep us on the right track for this crazy ride.&amp;nbsp; Let me know if you think I&apos;m crazy, or if you have any questions?&lt;/p&gt; &lt;p&gt;&lt;em&gt;What does &amp;quot;The Hague/Den Haag&amp;quot; look like?&lt;/em&gt; see this video&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt; &lt;param value=&quot;http://www.youtube.com/v/1gibh_Vjaco&amp;amp;hl=en&amp;amp;fs=1&quot; name=&quot;movie&quot; /&gt; &lt;param value=&quot;true&quot; name=&quot;allowFullScreen&quot; /&gt;&lt;embed width=&quot;425&quot; height=&quot;344&quot; allowfullscreen=&quot;true&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://www.youtube.com/v/1gibh_Vjaco&amp;amp;hl=en&amp;amp;fs=1&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;</description><pubDate>Wed, 27 Aug 2008 14:47:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2008/08/27/An-American-CF-developers-adventure-to-Holland-part-1</guid><category>ColdFusion,Jobs</category></item><item><title>Experienced CF Developer needed</title><link>http://cfzen.instantspot.com/blog/2008/08/26/Experienced-CF-Developer-needed</link><description>&lt;p&gt;My job is up for grabs, and it&apos;s the best development job I&apos;ve ever had (and I&apos;ve had quite a few ;-).&lt;/p&gt; &lt;p&gt;I&apos;m *only* leaving it because I&apos;m moving to Holland (more on that in another post). I have no complaints, but want to make it clear that the job is for people who want to work in a small &quot;.com style&quot; team.  The owners are so nice to work for, and it&apos;s truly been a pleasure to have the freedom to design the code creatively, use the new &quot;Enterprise&quot; CF 8 features, see my work directly increase revenue, and get things done quickly without corporate red tape and umpteen levels of middle-management. Below is the job description.&lt;/p&gt; &lt;p&gt;&quot;We are looking hard for an experienced ColdFusion Developer opening we have to fill immediately. This would be for the lead programmer for the LandsofAmerica.com Network which is the nation&apos;s largest rural real estate website. We have many cutting-edge applications we are working on and implementing with the latest in ColdFusion 8 in exciting and new ways.   &lt;br /&gt; &lt;br /&gt; This position needs experience in high traffic websites to manage our 16 million page views across 300 websites including a new partner that has the potential to add another 30% to our traffic numbers in the next 3 months. We have started powering the Farm &amp;amp; Ranch sections on the Houston Chronicle and Texas Monthly as well as new Hearst properties soon. High traffic website management as well as web server/database server optimization experience is a must. Work experience with CF8 and SQL Server 2005 is a big plus.   &lt;br /&gt; &lt;br /&gt; We are a hard working, small team that gets things done quick and can see results fast. It&apos;s a lot of fun! We are growing at a phenomenal rate with our number of listings at 63,000 and just two years ago they were at 2,500. &lt;br /&gt; &lt;br /&gt; If you are interested please send your resume and any work you&apos;ve done in the past two years. A detailed description of the exact work done will be very beneficial in moving this process forward ASAP. If you know of anyone this opportunity might sound interesting to, please forward this on to them.   &lt;br /&gt; &lt;br /&gt; Great pay, full health coverage, and monthly bonuses. &quot;&lt;/p&gt; &lt;p&gt;send resumes to &lt;a href=&quot;mailto:allen@landsofamerica.com&quot;&gt;allen@landsofamerica.com&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 26 Aug 2008 14:12:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2008/08/26/Experienced-CF-Developer-needed</guid><category>ColdFusion,SQL Server 2005,Jobs</category></item><item><title>RegEx to find SQL in code without CFQueryParam</title><link>http://cfzen.instantspot.com/blog/2008/07/16/RegEx-to-find-SQL-in-code-without-CFQueryParam</link><description>&lt;p&gt;I know it&apos;s far from perfect (that&apos;s partly why I&apos;m posting - so you can show me the light), but here&apos;s a RegEx I&apos;m using in Eclipse to find all the places in our code where we didn&apos;t use CFQueryParam around variables (shame, shame).  Please let me know if you see ways to improve it.&lt;/p&gt; &lt;p&gt;&lt;div class=&quot;code&quot; &gt;&lt;pre&gt;\s+(where|set)\s+[a-z_\.]+\s+(like|\=)\s+&apos;?%?#[a-z&amp;quot;_&apos;\.\(\)\+\/]+#%?&apos;?&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt;And can someone help me figure out how&amp;nbsp; to make this Regex include CF variables passed in to INSERT statements?&lt;/p&gt; &lt;p&gt;TIA&lt;/p&gt;</description><pubDate>Wed, 16 Jul 2008 20:35:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2008/07/16/RegEx-to-find-SQL-in-code-without-CFQueryParam</guid><category>ColdFusion,CFEclipse,Regex</category></item><item><title>Paginating Records in CF with One SQL Server 2005 call (update 1)</title><link>http://cfzen.instantspot.com/blog/2008/06/09/Paginating-Records-in-CF-with-One-SQL-Server-2005-call-update-1</link><description>&lt;p&gt;I&apos;ve been meaning to update folks on the excellent use I&apos;ve been getting out of this way of paginating records with SQL Server 2005 via CF, and James Allen&apos;s comment today gave me an excuse to finally update folks:&lt;/p&gt; &lt;ol&gt;     &lt;li&gt;Note that I&apos;ve been using this method in production at www.LandsofAmerica.com - see some &lt;a href=&quot;http://www.landsofamerica.com/america/land-for-sale/index.cfm?PageNum=7&amp;amp;sqft=0&amp;amp;sqft=10000000&amp;amp;Price=0&amp;amp;Price=10000000000&amp;amp;GetRes=Search+for+Property&quot;&gt;example search results&lt;/a&gt;, as well as all our sister sites: www.landsofTexas.com, www.landsofCalifornia.com, etc.  Our combined network gets upwards of 15 ColdFusion requests per second, and this dynamic stored procedure has held up extremely well, despite the enormous load and wide variety of possible WHERE clauses in the search.&lt;/li&gt;     &lt;li&gt;And now to answer James&apos;s comment, &amp;quot;I&apos;ve been using your SP extensively around my new site and it&apos;s working great. However, I am now tring to get it to work with a table join and I just can&apos;t get it to work with a table or alias prefix (in the columns parameter).&amp;quot; - The &amp;quot;sample DAO CFC method&amp;quot; code below should give you what you need to fix the issue you refer to.  :)&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;First, the Stored Procedure SQL again:&lt;/p&gt; &lt;p&gt;&lt;div class=&quot;code&quot; &gt;&lt;pre&gt;USE [propertyControlCenter] GO /****** Object:  StoredProcedure [dbo].[sproc_pagination]    Script Date: 06/09/2008 11:28:30 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==================================================  -- Author:        Aaron Longnion  -- Create date: 10/18/2007  -- Description:    A gereral-use way of dynamically  --        creating SQL to easily paginate the results;  --        also includes a total record count based on  --        the search criteria in the WHERE clause  -- ==================================================  CREATE PROCEDURE [dbo].[sproc_pagination]      -- Add the parameters for the stored procedure here      @SqlColumns VARCHAR(MAX),      @SqlFriendlyColumns VARCHAR(MAX),      @SqlTableClause VARCHAR(MAX),      @StartRow INT,      @EndRow INT,      @SqlWhere VARCHAR(MAX),      @SqlRowNumOrderBy VARCHAR(MAX),      @SqlOuterOrderBy VARCHAR(MAX)  AS  DECLARE @rsSQL NVARCHAR(MAX)  DECLARE @rcSQL NVARCHAR(MAX)  BEGIN      -- SET NOCOUNT ON added to prevent extra result sets from      -- interfering with SELECT statements.      SET NOCOUNT ON;      -- build pagination SQL, using StartRow and EndRow to determine      -- which results to output      SET @rsSQL = N&apos; WITH tempTable AS ( &apos; +          N&apos; SELECT &apos; +              @SqlColumns +          N&apos; , ROW_NUMBER() OVER(ORDER BY &apos; +              @SqlRowNumOrderBy +          N&apos; ) AS RowNumber &apos; +          N&apos; FROM &apos; +              @SqlTableClause      IF @SqlWhere + &apos;&apos; &amp;lt;&amp;gt; &apos;&apos;          BEGIN              SET @rsSQL = @rsSQL +                                   N&apos; WHERE &apos; +                      @SqlWhere          END      SET @rsSQL = @rsSQL +          N&apos; ) SELECT &apos; +              @SqlFriendlyColumns +          N&apos; FROM tempTable &apos; +          N&apos; WHERE RowNumber &amp;gt;= &apos; +              CAST(@StartRow AS NVARCHAR(32)) +          N&apos; AND RowNumber &amp;lt;= &apos; +              CAST(@EndRow AS NVARCHAR(32)) +          N&apos; ORDER BY &apos; +              @SqlOuterOrderBy            -- uncomment PRINT to debug      --PRINT @rsSQL      EXEC sp_executesql @rsSQL      -- build second recordset simple for the count      SET @rcSQL =              N&apos;SELECT COUNT(*) AS CountAll FROM &apos; +                  @SqlTableClause      IF @SqlWhere + &apos;&apos; &amp;lt;&amp;gt; &apos;&apos;          BEGIN              SET @rcSQL = @rcSQL +                                   N&apos; WHERE &apos; +                      @SqlWhere          END            EXEC sp_executesql  @rcSQL          SET NOCOUNT OFF;  END   PRINT &apos;sproc_pagination created&apos;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt;Second, some sample Gateway CFC method code:&lt;/p&gt; &lt;p&gt;&lt;div class=&quot;code&quot; &gt;&lt;pre&gt; &amp;lt;cffunction name=&amp;quot;searchInventory&amp;quot;     output=&amp;quot;false&amp;quot;     access=&amp;quot;public&amp;quot;     returntype=&amp;quot;struct&amp;quot;     hint=&amp;quot;Returns total count and recordset based on search criteria&amp;quot;&amp;gt;    &amp;lt;cfargument name=&amp;quot;SearchCrit&amp;quot;      required=&amp;quot;true&amp;quot;      type=&amp;quot;struct&amp;quot;      hint=&amp;quot;Search criteria, usually passed in from the URL scope&amp;quot; /&amp;gt;    &amp;lt;cfset var retStruct = StructNew() /&amp;gt;    &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.SiteStateID&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.State_ID&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.Region_ID&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.County_ID&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.Style&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.Style_ID&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.SqFt&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.Price&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.AuctionDateStart&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;#DateFormat(Now(), &apos;yyyy-mm-dd&apos;)#&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.AuctionDateEnd&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.ListingType&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.PageNum&amp;quot; type=&amp;quot;numeric&amp;quot; default=&amp;quot;1&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.RecordsPerPage&amp;quot; type=&amp;quot;numeric&amp;quot; default=&amp;quot;15&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.sortby&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;sqft&amp;quot; /&amp;gt;   &amp;lt;cfparam name=&amp;quot;Arguments.SearchCrit.sortbyDirection&amp;quot; type=&amp;quot;string&amp;quot; default=&amp;quot;DESC&amp;quot; /&amp;gt;    &amp;lt;!--- derive start and end rows ---&amp;gt;   &amp;lt;cfset Arguments.StartRow = ( (Arguments.SearchCrit.PageNum-1) * Arguments.SearchCrit.RecordsPerPage )+1 /&amp;gt;   &amp;lt;cfset Arguments.EndRow = (Arguments.StartRow + Arguments.SearchCrit.RecordsPerPage)-1 /&amp;gt;    &amp;lt;cfset retStruct = DAO.searchInventory( ArgumentCollection=Arguments ) /&amp;gt;    &amp;lt;cfset retStruct.PagingData = Server.Utilities.Toolbox.getPagingLinks(                RecordsPerPage = Arguments.SearchCrit.RecordsPerPage                , RecordCount = retStruct.RC                , NumberOfLinks = 10                , RecordLimit = 1000000                , QSItemsToStrip = &amp;quot;messageCode,searchIt&amp;quot;                ) /&amp;gt;    &amp;lt;cfreturn retStruct /&amp;gt;   &amp;lt;/cffunction&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt; Third, a sample DAO CFC method. &lt;strong&gt;This is the key: see how the &amp;quot;friendly&amp;quot; (no table aliases) names of the columns are in the &amp;quot;local.SqlFriendlyCols&amp;quot; section.  Notice how the column names in the &amp;quot;local.SqlCols&amp;quot; clause contain references to table aliases in &amp;quot;local.SqlTableClause&amp;quot;.  &lt;/strong&gt;The only caveat for this, which I haven&apos;t found a work-around yet, is that you&apos;ll get an &amp;quot;ambiguous column&amp;quot; SQL error if you have a JOIN and try to sort by a column that does not have a unique name :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;div class=&quot;code&quot; &gt;&lt;pre&gt; &amp;lt;cffunction name=&amp;quot;searchInventory&amp;quot; access=&amp;quot;package&amp;quot; output=&amp;quot;false&amp;quot; returntype=&amp;quot;struct&amp;quot;&amp;gt;    &amp;lt;cfset Var local = StructNew()&amp;gt;    &amp;lt;!--- columns ---&amp;gt;         &amp;lt;cfsavecontent variable=&amp;quot;local.SqlCols&amp;quot;&amp;gt;             I.listing_city,    ST.State_name,    ST.State_shortCode,    S.listing_type,    I.listing_price,    I.listing_photo,    I.listing_id,    I.listing_state_id,    I.listing_lot_size,    I.listing_county_id,    C.county_name         &amp;lt;/cfsavecontent&amp;gt;    &amp;lt;!--- friendly cols (if no JOINs/aliased table names, inherit from SqlCols above) ---&amp;gt;         &amp;lt;cfsavecontent variable=&amp;quot;local.SqlFriendlyCols&amp;quot;&amp;gt;             listing_city,    State_name,    State_shortCode,    listing_type,    listing_price,    listing_photo,    listing_id,    listing_state_id,    listing_lot_size,    listing_county_id,    county_name         &amp;lt;/cfsavecontent&amp;gt;    &amp;lt;!--- tables ---&amp;gt;   &amp;lt;cfsavecontent variable=&amp;quot;local.SqlTableClause&amp;quot;&amp;gt;     listing_(nolock) I    INNER JOIN     listing_types(NOLOCK) S     ON S.listing_type_ID = I.listing_type_ID    INNER JOIN     counties(nolock) C     ON C.County_ID = I.listing_County_ID    INNER JOIN     states(NOLOCK) ST     ON ST.State_ID = I.listing_State_ID      &amp;lt;/cfsavecontent&amp;gt;    &amp;lt;!--- conditions ---&amp;gt;         &amp;lt;cfoutput&amp;gt;             &amp;lt;cfsavecontent variable=&amp;quot;local.SqlWhere&amp;quot;&amp;gt;     I.listing_Active = 1     AND I.listing_Acct_Active = 1     AND I.listing_Status = 0     &amp;lt;!--- dynamic info ---&amp;gt;     &amp;lt;cfif Len(Arguments.SearchCrit.siteStateID)&amp;gt;      AND I.listing_state_id = #Arguments.SearchCrit.siteStateID#     &amp;lt;/cfif&amp;gt;     &amp;lt;cfif ListLen(Arguments.SearchCrit.State_ID)&amp;gt;      AND I.listing_state_id IN(#Arguments.SearchCrit.State_ID#)     &amp;lt;/cfif&amp;gt;     &amp;lt;cfif ListLen(Arguments.SearchCrit.Region_ID)&amp;gt;      AND C.listing_Region_id IN(#Arguments.SearchCrit.Region_ID#)     &amp;lt;/cfif&amp;gt;     &amp;lt;cfif ListLen(Arguments.SearchCrit.County_ID)&amp;gt;      AND I.listing_County_id IN(#Arguments.SearchCrit.County_ID#)     &amp;lt;/cfif&amp;gt;     &amp;lt;cfif ListLen(Arguments.SearchCrit.listing_type)&amp;gt;      AND S.listing_type_id IN(#Arguments.SearchCrit.listing_type#)     &amp;lt;cfelseif ListLen(Arguments.SearchCrit.listing_type_ID)&amp;gt;      AND S.listing_type_id IN(#Arguments.SearchCrit.listing_type_ID#)     &amp;lt;/cfif&amp;gt;     &amp;lt;cfif ListLen(Arguments.SearchCrit.SqFt)&amp;gt;      AND I.listing_size &amp;gt;= #Val(ListFirst(Arguments.SearchCrit.listing_size))#      AND I.listing_lot_size &amp;lt;= #Val(ListLast(Arguments.SearchCrit.listing_size))#     &amp;lt;/cfif&amp;gt;          &amp;lt;cfif ListLen(Arguments.SearchCrit.listing_Price)&amp;gt;      AND I.listing_Price &amp;gt;= #Val(ListFirst(Arguments.SearchCrit.listing_Price))#      AND I.listing_Price &amp;lt;= #Val(ListLast(Arguments.SearchCrit.listing_Price))#     &amp;lt;/cfif&amp;gt;             &amp;lt;/cfsavecontent&amp;gt;         &amp;lt;/cfoutput&amp;gt;    &amp;lt;!--- order ---&amp;gt;   &amp;lt;cfoutput&amp;gt;          &amp;lt;cfsavecontent variable=&amp;quot;local.SqlRowNumOrderBy&amp;quot;&amp;gt;              #Arguments.SearchCrit.sortby# #Arguments.SearchCrit.sortbyDirection#          &amp;lt;/cfsavecontent&amp;gt;    &amp;lt;!--- used for order column that has an alias prefix ---&amp;gt;          &amp;lt;cfsavecontent variable=&amp;quot;local.SqlOuterOrderBy&amp;quot;&amp;gt;              #ListLast(local.SqlRowNumOrderBy, &amp;quot;.&amp;quot;)#          &amp;lt;/cfsavecontent&amp;gt;   &amp;lt;/cfoutput&amp;gt;    &amp;lt;!--- dynamically get the data based on the SQL built above ---&amp;gt;         &amp;lt;cfset local.returnStruct = Server.DAO.Common.getPaginatedData( SqlCols = local.SqlCols,                   SqlFriendlyCols = local.SqlFriendlyCols,                   SqlTableClause = local.SqlTableClause,                   StartRow = Arguments.StartRow,                   EndRow = Arguments.EndRow,                   SqlWhere = local.SqlWhere,                   SqlRowNumOrderBy = local.SqlRowNumOrderBy,                   SqlOuterOrderBy = local.SqlOuterOrderBy ) /&amp;gt;    &amp;lt;cfreturn local.returnStruct /&amp;gt;   &amp;lt;/cffunction&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt; And finally, the getPaginatedData() method:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;div class=&quot;code&quot; &gt;&lt;pre&gt; &amp;lt;cffunction name=&amp;quot;getPaginatedData&amp;quot; access=&amp;quot;public&amp;quot; output=&amp;quot;false&amp;quot; returntype=&amp;quot;struct&amp;quot; hint=&amp;quot;generic way to get pagination data from the dB&amp;quot;&amp;gt;    &amp;lt;cfargument name=&amp;quot;SqlCols&amp;quot;      type=&amp;quot;string&amp;quot;      required=&amp;quot;true&amp;quot;      hint=&amp;quot;list of table columns (&apos;col1, col2, col3&apos;, &apos;a.col1, b.col2, c.col3&apos;, or &apos;a.col1 AS acol, b.col2 AS bcol, (SELECT c.col3 FROM c_table) AS subCol3&apos; are all acceptable&amp;quot; /&amp;gt;    &amp;lt;cfargument name=&amp;quot;SqlFriendlyCols&amp;quot;      type=&amp;quot;string&amp;quot;      required=&amp;quot;true&amp;quot;      hint=&amp;quot;list of table columns (&apos;col1, col2, col3&apos; is acceptable&amp;quot; /&amp;gt;    &amp;lt;cfargument name=&amp;quot;SqlTableClause&amp;quot;      type=&amp;quot;string&amp;quot;      required=&amp;quot;true&amp;quot;      hint=&amp;quot;list of table columns (most JOINs and sub-SELECTs are acceptable&amp;quot; /&amp;gt;    &amp;lt;cfargument name=&amp;quot;StartRow&amp;quot;      type=&amp;quot;numeric&amp;quot;      required=&amp;quot;true&amp;quot;      hint=&amp;quot;beginning row number to display&amp;quot; /&amp;gt;   &amp;lt;cfargument name=&amp;quot;EndRow&amp;quot;      type=&amp;quot;string&amp;quot;      required=&amp;quot;true&amp;quot;      hint=&amp;quot;last row number to display &amp;quot; /&amp;gt;    &amp;lt;cfargument name=&amp;quot;SqlWhere&amp;quot;      type=&amp;quot;string&amp;quot;      required=&amp;quot;true&amp;quot;      hint=&amp;quot;WHERE clause filters&amp;quot; /&amp;gt;    &amp;lt;cfargument name=&amp;quot;SqlRowNumOrderBy&amp;quot;      type=&amp;quot;string&amp;quot;      required=&amp;quot;true&amp;quot;      hint=&amp;quot;usually the PK of the primary table&amp;quot; /&amp;gt;    &amp;lt;cfargument name=&amp;quot;SqlOuterOrderBy&amp;quot;      type=&amp;quot;string&amp;quot;      required=&amp;quot;true&amp;quot;      hint=&amp;quot;chose from the columns from SqlFriendlyCols&amp;quot; /&amp;gt;    &amp;lt;cfset var returnStruct = StructNew() /&amp;gt;    &amp;lt;cfstoredproc procedure=&amp;quot;sproc_pagination&amp;quot; datasource=&amp;quot;#Variables.DSNs.primary#&amp;quot;&amp;gt;     &amp;lt;cfprocparam type=&amp;quot;In&amp;quot; cfsqltype=&amp;quot;CF_SQL_VARCHAR&amp;quot; dbvarname=&amp;quot;SqlColumns&amp;quot; value=&amp;quot;#Trim(Arguments.SqlCols)#&amp;quot;&amp;gt;    &amp;lt;cfprocparam type=&amp;quot;In&amp;quot; cfsqltype=&amp;quot;CF_SQL_VARCHAR&amp;quot; dbvarname=&amp;quot;SqlFriendlyColumns&amp;quot; value=&amp;quot;#Trim(Arguments.SqlFriendlyCols)#&amp;quot;&amp;gt;    &amp;lt;cfprocparam type=&amp;quot;In&amp;quot; cfsqltype=&amp;quot;CF_SQL_VARCHAR&amp;quot; dbvarname=&amp;quot;SqlTableClause&amp;quot; value=&amp;quot;#Trim(Arguments.SqlTableClause)#&amp;quot;&amp;gt;    &amp;lt;cfprocparam type=&amp;quot;In&amp;quot; cfsqltype=&amp;quot;CF_SQL_INTEGER&amp;quot; dbvarname=&amp;quot;SqlStartRow&amp;quot; value=&amp;quot;#Arguments.StartRow#&amp;quot;&amp;gt;    &amp;lt;cfprocparam type=&amp;quot;In&amp;quot; cfsqltype=&amp;quot;CF_SQL_INTEGER&amp;quot; dbvarname=&amp;quot;EndRow&amp;quot; value=&amp;quot;#Arguments.EndRow#&amp;quot;&amp;gt;    &amp;lt;cfprocparam type=&amp;quot;In&amp;quot; cfsqltype=&amp;quot;CF_SQL_VARCHAR&amp;quot; dbvarname=&amp;quot;SqlWhere&amp;quot; value=&amp;quot;#Trim(Arguments.SqlWhere)#&amp;quot;&amp;gt;    &amp;lt;cfprocparam type=&amp;quot;In&amp;quot; cfsqltype=&amp;quot;CF_SQL_VARCHAR&amp;quot; dbvarname=&amp;quot;SqlRowNumOrderBy&amp;quot; value=&amp;quot;#Trim(Arguments.SqlRowNumOrderBy)#&amp;quot;&amp;gt;    &amp;lt;cfprocparam type=&amp;quot;In&amp;quot; cfsqltype=&amp;quot;CF_SQL_VARCHAR&amp;quot; dbvarname=&amp;quot;SqlOuterOrderBy&amp;quot; value=&amp;quot;#Trim(Arguments.SqlOuterOrderBy)#&amp;quot;&amp;gt;    &amp;lt;!--- return data + count ---&amp;gt;    &amp;lt;cfprocresult name=&amp;quot;rs&amp;quot; resultset=&amp;quot;1&amp;quot;&amp;gt;    &amp;lt;cfprocresult name=&amp;quot;recordcount&amp;quot; resultset=&amp;quot;2&amp;quot;&amp;gt;          &amp;lt;/cfstoredproc&amp;gt;    &amp;lt;cfset returnStruct.rs = rs /&amp;gt;         &amp;lt;cfset returnStruct.rc = recordcount.countAll /&amp;gt;    &amp;lt;cfreturn returnStruct /&amp;gt;   &amp;lt;/cffunction&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Let me know what you think.&lt;/p&gt; &lt;p&gt;&lt;div class=&quot;code&quot; &gt;&lt;pre&gt; &amp;lt;cffunction name=&amp;quot;searchInventory&amp;quot; access=&amp;quot;package&amp;quot; output=&amp;quot;false&amp;quot; returntype=&amp;quot;struct&amp;quot;&amp;gt;    &amp;lt;cfset Var local = StructNew()&amp;gt;    &amp;lt;!--- columns ---&amp;gt;         &amp;lt;cfsavecontent variable=&amp;quot;local.SqlCols&amp;quot;&amp;gt;             I.listing_city,    ST.State_name,    ST.State_shortCode,    S.listing_type,    I.listing_price,    I.listing_photo,    I.listing_id,    I.listing_state_id,    I.listing_lot_size,    I.listing_county_id,    C.county_name         &amp;lt;/cfsavecontent&amp;gt;    &amp;lt;!--- friendly cols (if no JOINs/aliased table names, inherit from SqlCols above) ---&amp;gt;         &amp;lt;cfsavecontent variable=&amp;quot;local.SqlFriendlyCols&amp;quot;&amp;gt;             listing_city,    State_name,    State_shortCode,    listing_type,    listing_price,    listing_photo,    listing_id,    listing_state_id,    listing_lot_size,    listing_county_id,    county_name         &amp;lt;/cfsavecontent&amp;gt;    &amp;lt;!--- tables ---&amp;gt;   &amp;lt;cfsavecontent variable=&amp;quot;local.SqlTableClause&amp;quot;&amp;gt;     listing_(nolock) I    INNER JOIN     listing_types(NOLOCK) S     ON S.listing_type_ID = I.listing_type_ID    INNER JOIN     counties(nolock) C     ON C.County_ID = I.listing_County_ID    INNER JOIN     states(NOLOCK) ST     ON ST.State_ID = I.listing_State_ID      &amp;lt;/cfsavecontent&amp;gt;    &amp;lt;!--- conditions ---&amp;gt;         &amp;lt;cfoutput&amp;gt;             &amp;lt;cfsavecontent variable=&amp;quot;local.SqlWhere&amp;quot;&amp;gt;     I.listing_Active = 1     AND I.listing_Acct_Active = 1     AND I.listing_Status = 0     &amp;lt;!--- dynamic info ---&amp;gt;     &amp;lt;cfif Len(Arguments.SearchCrit.siteStateID)&amp;gt;      AND I.listing_state_id = #Arguments.SearchCrit.siteStateID#     &amp;lt;/cfif&amp;gt;     &amp;lt;cfif ListLen(Arguments.SearchCrit.State_ID)&amp;gt;      AND I.listing_state_id IN(#Arguments.SearchCrit.State_ID#)     &amp;lt;/cfif&amp;gt;     &amp;lt;cfif ListLen(Arguments.SearchCrit.Region_ID)&amp;gt;      AND C.listing_Region_id IN(#Arguments.SearchCrit.Region_ID#)     &amp;lt;/cfif&amp;gt;     &amp;lt;cfif ListLen(Arguments.SearchCrit.County_ID)&amp;gt;      AND I.listing_County_id IN(#Arguments.SearchCrit.County_ID#)     &amp;lt;/cfif&amp;gt;     &amp;lt;cfif ListLen(Arguments.SearchCrit.listing_type)&amp;gt;      AND S.listing_type_id IN(#Arguments.SearchCrit.listing_type#)     &amp;lt;cfelseif ListLen(Arguments.SearchCrit.listing_type_ID)&amp;gt;      AND S.listing_type_id IN(#Arguments.SearchCrit.listing_type_ID#)     &amp;lt;/cfif&amp;gt;     &amp;lt;cfif ListLen(Arguments.SearchCrit.SqFt)&amp;gt;      AND I.listing_size &amp;gt;= #Val(ListFirst(Arguments.SearchCrit.listing_size))#      AND I.listing_lot_size &amp;lt;= #Val(ListLast(Arguments.SearchCrit.listing_size))#     &amp;lt;/cfif&amp;gt;          &amp;lt;cfif ListLen(Arguments.SearchCrit.listing_Price)&amp;gt;      AND I.listing_Price &amp;gt;= #Val(ListFirst(Arguments.SearchCrit.listing_Price))#      AND I.listing_Price &amp;lt;= #Val(ListLast(Arguments.SearchCrit.listing_Price))#     &amp;lt;/cfif&amp;gt;             &amp;lt;/cfsavecontent&amp;gt;         &amp;lt;/cfoutput&amp;gt;    &amp;lt;!--- order ---&amp;gt;   &amp;lt;cfoutput&amp;gt;          &amp;lt;cfsavecontent variable=&amp;quot;local.SqlRowNumOrderBy&amp;quot;&amp;gt;              #Arguments.SearchCrit.sortby# #Arguments.SearchCrit.sortbyDirection#          &amp;lt;/cfsavecontent&amp;gt;    &amp;lt;!--- used for order column that has an alias prefix ---&amp;gt;          &amp;lt;cfsavecontent variable=&amp;quot;local.SqlOuterOrderBy&amp;quot;&amp;gt;              #ListLast(local.SqlRowNumOrderBy, &amp;quot;.&amp;quot;)#          &amp;lt;/cfsavecontent&amp;gt;   &amp;lt;/cfoutput&amp;gt;    &amp;lt;!--- dynamically get the data based on the SQL built above ---&amp;gt;         &amp;lt;cfset local.returnStruct = Server.DAO.Common.getPaginatedData( SqlCols = local.SqlCols,                   SqlFriendlyCols = local.SqlFriendlyCols,                   SqlTableClause = local.SqlTableClause,                   StartRow = Arguments.StartRow,                   EndRow = Arguments.EndRow,                   SqlWhere = local.SqlWhere,                   SqlRowNumOrderBy = local.SqlRowNumOrderBy,                   SqlOuterOrderBy = local.SqlOuterOrderBy ) /&amp;gt;    &amp;lt;cfreturn local.returnStruct /&amp;gt;   &amp;lt;/cffunction&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</description><pubDate>Mon, 09 Jun 2008 16:18:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2008/06/09/Paginating-Records-in-CF-with-One-SQL-Server-2005-call-update-1</guid><category>ColdFusion,SQL Server 2005</category></item><item><title>Does your email validation allow plus signs?</title><link>http://cfzen.instantspot.com/blog/2008/04/30/Does-your-email-validation-allow-plus-signs</link><description>&lt;p&gt;Go ahead and check. I&apos;ll wait.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;I&apos;m not kidding, go ahead.  It&apos;ll be alright.  You&apos;re not the only one whose says made_up_account_here+do_not_spam_me@gmail.com is an invalid address.&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&quot;er, are you sure a plus sign is valid?&quot;, you ask?  Yep.  I&apos;m certain.  All the time, I use my gmail accounts nifty feature that allows me to use, say, made_up_account_here+twitter@gmail.com to filter emails from twitter to a twitter &quot;label&quot;.  But some sites, especially blog sites, always tell me my email is invalid when I put in the plus sign.  Well, your site is wrong, and I&apos;d appreciate it if you&apos;d fix it.  ;-)  (when you get time of course)&lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;anyways, after you checked, what did you find?&lt;/p&gt;</description><pubDate>Wed, 30 Apr 2008 18:21:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2008/04/30/Does-your-email-validation-allow-plus-signs</guid><category>ColdFusion</category></item><item><title>Bad Day at the Office video</title><link>http://cfzen.instantspot.com/blog/2008/01/15/Bad-Day-at-the-Office-video</link><description>&lt;p&gt;I usually don&apos;t post stuff like this, but since I had a good laugh (cuz can&apos;t we all relate?) and wanted to try the embed feature on the new InstantSpot 2.0 software.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;object width=&quot;448&quot; height=&quot;336&quot;&gt; &lt;param value=&quot;http://www.glumbert.com/embed/baddayoffice&quot; name=&quot;movie&quot; /&gt; &lt;param value=&quot;transparent&quot; name=&quot;wmode&quot; /&gt;&lt;embed width=&quot;448&quot; height=&quot;336&quot; wmode=&quot;transparent&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;http://www.glumbert.com/embed/baddayoffice&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;div&gt;&lt;a href=&quot;http://www.glumbert.com/media/baddayoffice&quot;&gt;glumbert - Bad Day at the Office&lt;/a&gt;&lt;/div&gt;</description><pubDate>Tue, 15 Jan 2008 19:35:00 GMT</pubDate><guid>http://cfzen.instantspot.com/blog/2008/01/15/Bad-Day-at-the-Office-video</guid><category>ColdFusion,Videos</category></item></channel></rss>