<?xml version="1.0" encoding="utf-8"?>

			<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">

			<channel>
			<title>Rob&apos;s Ramblings</title>
			<link>http://barthle.com/blog/index.cfm</link>
			<description>ColdFusion, life, and everything in between</description>
			<language>en-us</language>
			<pubDate>Tue, 21 May 2013 18:24:46 -0500</pubDate>
			<lastBuildDate>Tue, 21 May 2013 10:45:00 -0500</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>rob@barthle.com</managingEditor>
			<webMaster>rob@barthle.com</webMaster>
			<itunes:subtitle></itunes:subtitle>
			<itunes:summary></itunes:summary>
			<itunes:category text="Technology" />
			<itunes:category text="Technology">
				<itunes:category text="Podcasting" />
			</itunes:category>
			<itunes:category text="Technology">
				<itunes:category text="Tech News" />
			</itunes:category>
			<itunes:keywords></itunes:keywords>
			<itunes:author></itunes:author>
			<itunes:owner>
				<itunes:email>rob@barthle.com</itunes:email>
				<itunes:name></itunes:name>
			</itunes:owner>
			
			<itunes:explicit>no</itunes:explicit>
			
			<item>
				<title>My Long Putter Isn&apos;t Going Anywhere</title>
				<link>http://barthle.com/blog/index.cfm/2013/5/21/My-Long-Putter-Isnt-Going-Anywhere</link>
				<description>
				
				So, it&apos;s official. &lt;a href=&quot;http://www.golfchannel.com/news/golftalkcentral/usga-and-r-and-a-graphic-explanation-of-anchored-putting/&quot; target=&quot;_blank&quot;&gt;Anchored putting strokes are banned starting in 2016&lt;/a&gt;.

Prior to this season, I switched to a long putter. Truth be told, it&apos;s the first putter I ever purchased myself. Until now I had been using the putter my Dad made for me (part of my first set of clubs, now over 20 years old, which was replaced last year). My reasons for going to the long putter are simple. I am more comfortable standing upright. 

When I was considering the purchase, the potential ban on anchoring weighed in my decision. I am 99.9% sure I will never be playing in a USGA/PGA sponsored event. Quite frankly, my short term goals are to shoot in the 80&apos;s consistently. Also, I am pretty sure I am in the minority of most amateur golfers in that I try and follow the rules to the best of my knowledge. No foot wedges or questionable ball drops here. So when trying out the long putter, I put a lot of time into seeing how it felt without jamming the butt end into my sternum. The answer was, &quot;just fine&quot;. Right now my left hand barely touches my shirt when I put, if at all.

The long putter has already shown benefits in my game, no doubt. I feel more comfortable in my stance, and I see the stroke better. Looking into more detail of the rules, I will have the spend some time working on consciously keeping the butt end far enough away to not bring any questions that I am following the rules. And I intend to do that. But I have 2 1/2 years to figure that out. 

In the meantime, my short term plan is to not worry about if I unintentionally anchor (I think I might with my left arm to my side at times, not sure), but to get a consistent stroke in place. Once I have that done, then I&apos;ll worry about focusing on tweaking it to conform in whatever ways are needed.

And on the bright side, maybe the ban will scare off so many people from buying long putters that stores will drop prices on the high end models to be somewhere I could afford to get one someday!
				</description>
				
				<category>Golf</category>
				
				<pubDate>Tue, 21 May 2013 10:45:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2013/5/21/My-Long-Putter-Isnt-Going-Anywhere</guid>
				
				
			</item>
			
			<item>
				<title>On Frameworks, and their Evangelists</title>
				<link>http://barthle.com/blog/index.cfm/2013/5/17/On-Frameworks-and-their-Evangelists</link>
				<description>
				
				Let me start this entry with a clear statement.

&lt;i&gt;I have no problem with frameworks, as a rule. If asked to use one for a project, I would do so without complaint. But if given a choice, I will use my own time-tested processes instead.&lt;/i&gt;

Okay, now onto the rest of the entry.

Last night I got into a twitter discussion with someone who is clearly an evangelist of CFML frameworks. His position is that anyone not using a framework is, in his exact words, &quot;crazy&quot;. I greatly differ with that opinion, and it broke down pretty quickly when he was confronted with someone with a dissenting opinion. I offered him to contact me outside of Twitter to continue, but he has not responded. So consider this my response.

I have spent the majority of my 15 years using CFML not using frameworks. The last 8 years I have been part of a team that has put together a very solid set of coding standards for our development team, with a few rules (backend work in components, putting stored variables in the proper location for their intent, etc.) and with that we have turned out multiple applications for the Department of Education that are stable, fast, promote code reuse, and scalable. The biggest proof in our processes are that when new developers join our team, there is little in the way of a learning curve to do things &quot;our way&quot;.

In my free time, I have tried out three different frameworks: FW/1, Fusebox, and Mach-II. All were fine. None of them wowed me in any way that made me think I should propose getting away from our processes and use a framework instead. A framework is an organization tool, nothing more and nothing less. It defines rules for how one must code. It sets up boundaries. It may even limit creative freedom (that&apos;s just a gut feeling on my part). They are useful, especially for a disorganized team or a junior level developer making their way into the CFML world.

It is not, however, the end-all, be all. I have seen both sides of this argument, and in the end I say what I have always said: It doesn&apos;t matter what tools you use to code, only one thing matters - the people developing the code. A great developer not only knows what can be done, they also must know when the right time to use it is. There are great developers that use frameworks religiously. There are also great developers that do not.

Now for the bigger issue at hand. Frameworks biggest problem right now is their supporters. These people range from supporters to evangelists to outright zealots. And the problem with them is that most of them get belligerent when you don&apos;t fall into complete agreement with them. Their weapon of choice is to attack or put down people once they realize the person they are talking to doesn&apos;t fall in line with them. And that&apos;s sad. It also builds a level of resentment that is unnecessary. 

So here&apos;s a tip to them: if you want to convince people to come to your side of thinking, use logic instead of putdowns. And realize that what works well for you is not going to work well for everyone, and that&apos;s okay. In the end, there will always be a human element to software design and that means that there is no one right way to do things. That&apos;s a GOOD thing, too.
				</description>
				
				<category>Web Development</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Fri, 17 May 2013 10:52:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2013/5/17/On-Frameworks-and-their-Evangelists</guid>
				
				
			</item>
			
			<item>
				<title>Quick Hits - A Possibly Handy Guide - CFSPREADSHEET fill colors</title>
				<link>http://barthle.com/blog/index.cfm/2013/5/13/Quick-Hits--A-Possibly-Handy-Guide--CFSPREADSHEET-fill-colors</link>
				<description>
				
				Lately I have been using CFSPREADSHEET on work projects. I love the tag and the associated functions. But one thing has been missing from all the associated documentation I can find.

What exactly are the colors you can use for text and fill?

CFSPREADSHEET uses the colors from the org.apache.poi.hssf.util.HSSFColor class, and Adobe and others are nice enough to provide a list of the names. But when I want to pick a color, I like to, you know, SEE the colors!

So, as a help to myself (and maybe some others), I whipped together a spreadsheet with each of the colors available for use. If you find it useful, great!

The download is available &lt;a href=&quot;/downloads/HSSFColor-colors.xlsx&quot; title=&quot;org.apache.poi.hssf.util.HSSFColor spreadsheet examples&quot;&gt;here&lt;/a&gt;.
				</description>
				
				<category>CFSPREADSHEET</category>
				
				<category>Quick Hits</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Mon, 13 May 2013 15:55:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2013/5/13/Quick-Hits--A-Possibly-Handy-Guide--CFSPREADSHEET-fill-colors</guid>
				
				
			</item>
			
			<item>
				<title>What I Learned Today - Getting around AdBlock Plus</title>
				<link>http://barthle.com/blog/index.cfm/2013/4/18/What-I-Learned-Today--Getting-around-AdBlock-Plus</link>
				<description>
				
				I was making small edits to my blog, adding 2 banners to my site for my hosting company and for CFBloggers. They were basic IMG tags, nothing special. But the one for Hostek was not showing up in Firefox when I was testing the changes out. For the life of me I had no idea what was going on, Firebug was showing it to be hidden, and some weirdly named class being attached to it.

After a bit, I ran across a post on &lt;a href=&quot;http://www.htmlforums.com/archive/index.php/index.../t-142824.html&quot; target=&quot;_blank&quot;&gt;HTML Forums&lt;/a&gt; that showed me the culprit - AdBlock Plus.

Seems that AdBlock did not like the way the banner image was named (ht_460x68.gif). Specifically the &quot;_460x68&quot; part was being caught (I saw this in the filtering information from teh AdBlock Plus toolbar button). So a quick change of the banner filename, and problem solved!
				</description>
				
				<category>Web Development</category>
				
				<category>What I Learned Today</category>
				
				<pubDate>Thu, 18 Apr 2013 00:00:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2013/4/18/What-I-Learned-Today--Getting-around-AdBlock-Plus</guid>
				
				
			</item>
			
			<item>
				<title>Verity, OS X, and VirtualBox</title>
				<link>http://barthle.com/blog/index.cfm/2013/4/12/Verity-OS-X-and-VirtualBox</link>
				<description>
				
				This is a follow up entry to one I wrote about &lt;a href=&quot;http://barthle.com/blog/index.cfm/2010/5/10/what-i-learned-today-have-your-cf9-on-os-x-and-your-verity-too&quot; target=&quot;_blank&quot;&gt;using Verity when your CF runs on OS X&lt;/a&gt;.

Recently, I changed my virtualization engine from VMware Fusion to VirtualBox. The lone downside to this I have had is that, unlike VMWare, VirtualBox does not allow you to access files on the guest OS (Win7 for me) from the host (OS X). This made my setup for using Verity unusable.

But, as times of need often tend to do, it birthed a new way of doing this. Probably a better one all told. I now host all of the collections and the files they index locally in OS X, and the Verity K2 server on Win7 reads and manipulated them from there. This allows Time Machine to back up these files, which is a plus.

Here are the changes I had to make to make this happen.

&lt;ol&gt;
	&lt;li&gt;Delete the soft link for /opt/coldfusion in OS X, and create a physical directory in its&apos; place.&lt;/li&gt;
	&lt;li&gt;Copy the collections and documents from Win7 into /opt/coldfusion&lt;/li&gt;
	&lt;li&gt;In VirtualBox, create a Full Access, Auto-Mounted Shared Folder to /opt/coldfusion. Restart the guest OS for it to take effect.&lt;/li&gt;
	&lt;li&gt;In Win7, delete the physical folder C:\opt\coldfusion, and replace it with a soft link to \\vboxsvr\coldfusion\. I used the open source &lt;a href=&quot;http://dirlinker.codeplex.com&quot; target=&quot;_blank&quot;&gt;Directory Linker&lt;/a&gt; tool to do it.&lt;/li&gt;
	&lt;li&gt;In CF Admin on OS X, update the IP address of the Verity K2 server to the new guest IP (if neccesary).&lt;/li&gt;
	&lt;li&gt;Purge the existing collections, and re-index.&lt;/li&gt;
&lt;/ol&gt;

That&apos;s it!
				</description>
				
				<category>Verity</category>
				
				<category>VirtualBox</category>
				
				<pubDate>Fri, 12 Apr 2013 11:12:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2013/4/12/Verity-OS-X-and-VirtualBox</guid>
				
				
			</item>
			
			<item>
				<title>Quick hits - UU2 is the best friend you never knew you had</title>
				<link>http://barthle.com/blog/index.cfm/2013/3/20/Quick-hit--UU2-is-the-best-friend-you-never-knew-you-had</link>
				<description>
				
				This one is for anyone administering their own CF server.

If you don&apos;t know about &lt;a target=&quot;_blank&quot; href=&quot;http://uu2.riaforge.org&quot;&gt;Unofficial Updater 2&lt;/a&gt;, go there now and meet your new best friend. Maintained by &lt;a href=&quot;http://www.dcepler.net&quot; target=&quot;_blank&quot;&gt;David Epler&lt;/a&gt;, this project makes keeping your CF server updated as simple as is humanly possible.

I&apos;d pay for this service if I had to, I think it&apos;s that good.
				</description>
				
				<category>Quick Hits</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Wed, 20 Mar 2013 16:26:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2013/3/20/Quick-hit--UU2-is-the-best-friend-you-never-knew-you-had</guid>
				
				
			</item>
			
			<item>
				<title>jQuery Quickie: issue with trim() in IE8</title>
				<link>http://barthle.com/blog/index.cfm/2013/3/4/jQuery-Quickie-issue-with-trim-in-IE8</link>
				<description>
				
				Ran across an annoying little bug in IE8. It seems that, for all other browsers and IE9+, this will work fine:

&lt;code&gt;
var thisE = $(this).text().trim();
&lt;/code&gt;

But if you want it to work in IE8-, you need to do this:

&lt;code&gt;
var thisE = $.trim($(this).text());
&lt;/code&gt;

Just another reason I &lt;strike&gt;love&lt;/strike&gt; loathe IE.
				</description>
				
				<category>Internet Explorer</category>
				
				<category>jQuery</category>
				
				<category>Microsoft</category>
				
				<pubDate>Mon, 04 Mar 2013 16:57:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2013/3/4/jQuery-Quickie-issue-with-trim-in-IE8</guid>
				
				
			</item>
			
			<item>
				<title>jQuery Tip: changing to on() from bind() and live()</title>
				<link>http://barthle.com/blog/index.cfm/2013/2/22/jQuery-Tip-changing-to-on-from-bind-and-live</link>
				<description>
				
				This might not be news to some, but if you are using older versions of jQuery, take note of a fairly significant change.

Ran across this today reading the jQuery API docs. The bind() and live() functions are deprecated as of v1.7, and have been removed as of v1.9. They are both being replaced with on().

&lt;a href=&quot;http://api.jquery.com/on/&quot; target=&quot;_blank&quot;&gt;http://api.jquery.com/on/&lt;/a&gt;

I tested changing to on() in some of my own projects, and found no difference in expected results when simply switching from bind() to on(). Just replace &quot;bind&quot; with &quot;on&quot; and you are good to go.

However, if you use live(), you will need to modify your code a little. The main reason I used live() was to have an event handler attached to an element now, or in the future if it&apos;s not currently part of the DOM. What you need to do now is attach the on() function to a containing element that will be present in the DOM from the beginning, and use a delegated event to catch the action of the element that will be in the DOM later. It&apos;s very straightforward.

Here&apos;s an example of that. I have a container DIV with an ID of &quot;myContainer&quot; that is always present in the HTML from the outset. Inside that DIV, HTML will be added later (like an AJAX request to populate it with some HTML based on a button click). Inside that new HTML will be a link that I want to trap and manage in some way. That link will have an id of &quot;futureLink&quot; for this example.

Before, you did this:

&lt;code&gt;
$(&apos;#futureLink&apos;).live(&apos;click&apos;,function(e){
	e.preventDefault();
	alert(&quot;a link was clicked that wasn&apos;t here before&quot;);
});
&lt;/code&gt;

Here&apos;s what you do now:

&lt;code&gt;
$(&apos;#myContainer&apos;).on(&apos;click&apos;,&apos;#futureLink&apos;,function(e){
	e.preventDefault();
	alert(&quot;a link was clicked that wasn&apos;t here before&quot;);
});
&lt;/code&gt;

So, a simple solution to future-proof your code as you upgrade versions of jQuery.
				</description>
				
				<category>jQuery</category>
				
				<pubDate>Fri, 22 Feb 2013 11:42:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2013/2/22/jQuery-Tip-changing-to-on-from-bind-and-live</guid>
				
				
			</item>
			
			<item>
				<title>Excel 2013 Doesn&apos;t Play nice with CFSPREADSHEET</title>
				<link>http://barthle.com/blog/index.cfm/2013/2/20/Excel-2013-Doesnt-Play-nice-with-CFSPREADSHEET</link>
				<description>
				
				Ran into an issue with the latest version of Microsoft Excel today. By default, it enables what is called Protected View on all files originating from the Internet. This does a variety of things, including neutering formatting and disabling formulas.

I have an app that generates an XLSX file via CFSPREADSHEET, complete with formatting via spreadsheetFormatColumns() and formulas assigned to cells via spreadsheetSetCellForumla(). It works great in all versions of Excel I tried it in (2007, 2010, Mac 2011, even 2003 via compatibility updates).

I was able to get my hands on Office 2013 for $10 via the Microsoft HUP program at work. I&apos;m glad I did that, because when I tested this same spreadsheet in Excel 2013, it wouldn&apos;t open. It claimed the file was corrupt. Knowing that to not be the case, I did some digging and found a few forum posts of people complaining about Excel 2013&apos;s Protected View doing the same thing.

I went into the settings and disabled Protected View (located in Options &amp;gt; Trust Center &amp;gt; Trust Center Settings... &amp;gt; Protected View), and tried to open the file again. It worked - mostly. The file opened, but the cell formulas were disabled. I needed to click the Enable Editing button at the top of Excel to get the formulas to calculate. Not very user friendly at all, Microsoft.

For now this is not much of a worry, as Excel 2013 has a tiny user base compared to other versions. And zero user base where people would be viewing my app (limited audience, controlled environment). But at some point this will change, and I hope either Microsoft or Adobe addresses this. My initial instinct is that this is a Microsoft issue.

I did some testing and found that generating an older XLS object at least opened with Protected View enabled, but the cell formatting and formulas were still shot. Enable Editing only fixed the formulas, it didn&apos;t fix the cell formatting.

Anyone else run into this yet? If you haven&apos;t already, you should consider testing your CFSPREADSHEET-generated objects in Excel 2013 soon!
				</description>
				
				<category>Microsoft</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Wed, 20 Feb 2013 12:31:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2013/2/20/Excel-2013-Doesnt-Play-nice-with-CFSPREADSHEET</guid>
				
				
			</item>
			
			<item>
				<title>CF Mappings question</title>
				<link>http://barthle.com/blog/index.cfm/2012/12/31/CF-Mappings-question</link>
				<description>
				
				My Unix server is used by multiple groups. The directory names used here are fakes, but representative of the issue at hand.

IBM Webshpere is the web server, with a document root set as /webhome/
CF9 is installed in /cfhome/
In the CF admin settings, CFIDE is mapped to /cfhome/wwwroot/CFIDE/

Someone from another group made a physical directory /webhome/CFIDE/ and copied all the files from /cfhome/wwwroot/CFIDE/ into it. So there are now two physical copies of CFIDE on that server.

A CFM script is placed in /webhome/CFIDE/, call it test.cfm. It does NOT exist in /cfhome/wwwroot/CFIDE/.

When someone uses the URL http://servername/CFIDE/test.cfm, the page runs properly.

By all rights that I am aware of, this should not be happening since CFIDE is mapped to the directory that does not contain the file.

I looked in the httpd.conf file and found zero references to CFIDE in there. I did find these lines containing &quot;/webhome&quot;: 

&lt;code&gt;
DocumentRoot &quot;/webhome&quot;
[...]
# This should be changed to whatever you set DocumentRoot to.
&lt;Directory &quot;/webhome&quot;&gt;
[...]
&lt;VirtualHost *&gt;
ServerName myserver.com
DocumentRoot /webhome
&lt;/VirtualHost&gt;
&lt;/code&gt;

So, is the Websphere mapping overriding the CF mapping? And if so, would it be better to just have a soft link from /webhome/CFIDE/ to /cfhome/wwwroot/CFIDE/?
				</description>
				
				<category>Apache</category>
				
				<category>Unix</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Mon, 31 Dec 2012 15:59:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2012/12/31/CF-Mappings-question</guid>
				
				
			</item>
			
			<item>
				<title>What Should My Next Language Be?</title>
				<link>http://barthle.com/blog/index.cfm/2012/7/25/What-Should-My-Next-Language-Be</link>
				<description>
				
				I&apos;m putting this one out to the crowd. I&apos;ve been avoiding the painfully obvious for a long time, and I don&apos;t think I can anymore. I&apos;ve been specializing in ColdFusion development since 1997. I&apos;ve been certified by Adobe as a developer for CF three different times. I love ColdFusion. 

But I no longer live in a ColdFusion hotbed and within the next 12 months I may be needing to find a new job (contract expiring and future of my position is unclear at this time). I work remotely full time, and would be open to a CF position in a similar capacity, but I know those are rare. So  I&apos;m starting to think ahead.  And part of that is thinking about becoming proficient enough in a second language that I could sell myself as a senior developer.

In addition to CF, I have fairly strong jQuery skills, and am a good front-end developer as well IMO. I hold my own in the SQL world, but am not a DBA by any definition. Due to the nature of my current position, getting into HTML5 and mobile has been nigh on impossible, as much as I&apos;d like to go there.

I&apos;m not a programmer in the true sense of the word. I don&apos;t have a background in O-O programming, though I try and use O-O principles in my CF work where I can. I have a solid sense of business skills. I can design a good program that makes good sense. I try to be mindful of performance in my work. I do what is needed, not what&apos;s the latest or flashiest.

I&apos;ve tried a couple of times to hitch on the PHP bandwagon and that language has just left a bad taste in my mouth each time.

I work mainly on OS X, host my own work in Unix, but do have access to a Win7 computer if needed.

Ultimately my goal is to get into an architect or management spot. I&apos;ve been a lead developer/technical lead for years now, but don&apos;t have the experience needed to go after things like PMP training and the like. So development is in my near-term future while I continue to build those skills.

So, with all that being said, I&apos;m looking for some guidance from the crowd. What would you suggest, or what have you picked up as a new language to use as an alternative to CF?Something in demand obviously, and something where my skillsets could give me a head start in tackling the learning curve.

Thanks.
				</description>
				
				<category>Web Development</category>
				
				<pubDate>Wed, 25 Jul 2012 21:39:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2012/7/25/What-Should-My-Next-Language-Be</guid>
				
				
			</item>
			
			<item>
				<title>CFLOCK best practices?</title>
				<link>http://barthle.com/blog/index.cfm/2012/7/10/CFLOCK-best-practices</link>
				<description>
				
				I&apos;m in need of some thoughts on CFLOCK. There&apos;s backstory to this, but to sum it up I&apos;m fighting an uphill battle with hardware folks that think our using CFLOCK is causing server performance issues on a new Unix server that was built to the absolute minimum specs (not exaggerating). The server has been failing load tests left and right and their approaches have been to claim it&apos;s the load testing application&apos;s fault and to force us to dumb down the load testing site they are using for testing to the point where we are about three steps away from just putting up a static page there.

In our applications, we use CFLOCK as follows:

1. We only use exclusive locks when setting application and session scoped variables.
2. All application-scoped variables are set only in onApplicationStart(). This includes instatiating CFC&apos;s into the application scope to reduce overhead on requests by not having to load and unload the objects on a per-request basis.
3. We lock the setting of the VARIABLES scope inside the init() functions of our CFC&apos;s (the only place we set the variables scope in CFC&apos;s as well).
4. We set our locks to 10 second timeouts, and all timeouts throw an error because there is no good reason to ignore these errors.
5. We do not, as a general rule, use readonly locks of any kind.


It is the opinion of the hardware people (who have rudimentary CF skills) that we need to at least decrease the timeouts to 2-3 seconds, or get rid of the locks altogether. My gut reply to that is that if the server cannot establish a lock for a given thread in 10 seconds, how would setting it to 2-3 seconds help except to cause the site to throw more errors? As for the second part, the fact they think server importance is more critical than application security says all I need to know IMO.

But I will fully admit to being biased on this, and could use some backup (or corrections) on if our standards are acceptable industry practices, which I believe are.

And no, getting them to add more resources to the server is not an option here. :(
				</description>
				
				<category>ColdFusion</category>
				
				<pubDate>Tue, 10 Jul 2012 18:42:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2012/7/10/CFLOCK-best-practices</guid>
				
				
			</item>
			
			<item>
				<title>What I Learned Today - CFEXECUTE is not Unix-friendly</title>
				<link>http://barthle.com/blog/index.cfm/2012/1/6/What-I-Learned-Today--CFEXECUTE-is-not-Unixfriendly</link>
				<description>
				
				&lt;em&gt;Update: Based on a conversation with &lt;a href=&quot;http://blog.kukiel.net/&quot; target=&quot;_blank&quot;&gt;Paul Kukiel&lt;/a&gt;, this issue does not seem to exist in Ubuntu Linux. Definitely confirmed in Solaris, unsure about other Unix flavors.&lt;/em&gt;

For the first time ever, I needed to use the oft-maligned CFEXECUTE tag on a project. I was developing an intranet application to track the health of about 30 Unix-based servers in real time, using a variety of metrics. The application also resides on a Unix server. 

One of the metrics was to ping the servers to make sure they are up. That required the usage of CFEXECUTE to run a shell script I had written to do the task. 

The first issue I found was that on Unix-based systems (OS X and Unix), the tag was not returning the ping results to me, even though I was using the variable attribute. The variable was empty. After hours of trying, I ended up writing the contents of the ping to a file to read. That led me to my second issue.

My first choice was to write to the virtual filesystem. The thought was that since I would be doing 30 pings every five minutes it would be best to not have to make all those writes to the disk. The problem that brought about was that if the ping took too long to finish, CFEXECUTE wasn&apos;t waiting around for the script to finish before moving on. If the server was down it could take up to 20 seconds for the ping failure to come back. Forcing the application to wait that long every time around wasn&apos;t the answer, so I had to step back and look at the solution again.

While focusing on other aspects of the application, I ran across the third and largest issue with CFEXECUTE - it&apos;s a resource killer of alarming degree on Unix. CFEXECUTE uses the fork() method to run processes. I have found the following warning (in various forms) on multiple blogs and message boards regarding this.

&quot;Because of the way the fork() method was implemented on unix systems (which is what cfexecute calls under the hood to run the external process) it duplicates the amount of memory of the calling process to run the external process, which is crazy. So, for example, if your JRun process is currently taking up 1 GB of RAM (a pretty common JVM size), then cfexecute will run the external process using 1 GB of RAM, which will very quickly throw an Out of Memory exception.&quot;

I ran into this problem on our QA server, which only has 384MB of swap space free and only 4GB on onboard memory. Our JVM is set for 1GB minimum so there was no way CFEXECUTE would find the space needed to make the duplicate environment.

Once I learned about this, I quickly decided to pull CFEXECUTE altogether. Instead I have a cron job that runs once a minute and outputs the ping results for each server to a separate file on the hard disk, overwriting existing files to limit space usage. The application will read these files in, and they&apos;re real-time enough in that 3-4 updates will have been made to the ping statuses by the time the next background polling is done by the application to read in the files.

I now completely understand why so many hosting services disable this tag. In addition to the security risks inherent to it, the toll it can take on your server (unless it&apos;s loaded up big time in memory) just is not worth it when there are other options to solving the problem.
				</description>
				
				<category>Web Development</category>
				
				<category>What I Learned Today</category>
				
				<category>Unix</category>
				
				<category>ColdFusion</category>
				
				<pubDate>Fri, 06 Jan 2012 23:55:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2012/1/6/What-I-Learned-Today--CFEXECUTE-is-not-Unixfriendly</guid>
				
				
			</item>
			
			<item>
				<title>My Review of the iPhone 4S</title>
				<link>http://barthle.com/blog/index.cfm/2011/11/21/My-Review-of-the-iPhone-4S</link>
				<description>
				
				I have had my iPhone 4S (on AT&amp;T) for almost three weeks now. I upgraded from an iPhone 4. I wanted to write something about my experiences with it, since there seems to be a lot of conflicting opinions on if it&apos;s a worthy upgrade.

In my opinion: It&apos;s worth every penny.

I was able to get the discounted upgrade pricing from AT&amp;T for this one. I have to admit being surprised by that, but I wasn&apos;t going to look a gift horse in the mouth. I&apos;ve kept my iPhone 4 and converted it to an iPod Touch that my children can use from time to time (heavily locked down, hand-picked apps only, no Safari, Youtube, etc., and put in it&apos;s Otterbox Defender case to resist their best attempts to &quot;toddler&quot; it), but otherwise according to Gazelle I could have been looking at upgrading for almost no cost at all.

So, here are the features that have made me glad I upgraded.

&lt;b&gt;Siri&lt;/b&gt;

This was the single biggest reason I wanted to upgrade, and it has not disappointed in the least. I&apos;ve tried apps like Vlingo on my old iPhone, and I&apos;ve tried out Android&apos;s voice control. For me personally, none of them have been close to the good experience that Siri has been for me. It literally has changed the way I use my phone. For starters, as a father of 3 kids ages 4 and under - and soon to be 4 kids - my forgetfulness has ramped up to new levels over the past few years. As you can imagine, when something pops in your head, or when the wife asks me to remember to do something later, trying to keep track of those thoughts while splitting my attention three ways leads to a low success rate of remembering it. And it&apos;s not like there&apos;s tons of time to stop, open up the phone, and type in the reminder/appointment/text/email/etc., especially with the youngest one just learning to walk and therefore a head injury waiting to happen in left unsupervised for long.

Enter Siri. Now all I have to do is speak in my words, confirm they were captured correctly, and it&apos;s done. Siri&apos;s voice recognition has been far better than Vlingo or Android&apos;s were for me as well. Not 100%, but probably around 90%. And it learns as it goes along. At first it constantly confused &quot;Ryan&quot; as being &quot;Brian&quot;, but after a few times correcting it, it now assumes Ryan as the default.

One thing I use a lot is the iOS5 Reminders app for adding to the shopping lists. Taking a cue from a blog post I read, I created lists for Target and Kroger (groceries) and so when I see that we need something I just add to those lists instead of trying to remember what it was we needed when the time for the trip to the store actually happens.

I love the voice integration with the iOS keyboard as well, voice control doesn&apos;t get done just from the Siri app itself. hat makes it nearly universal in any application requiring input.

There are places I&apos;d like to see Siri tied into, mainly other apps I use in place of the native apps. Having directions be opened in my Motion-X GPS app instead of in Maps would be the most notable. I&apos;m hoping that will become a reality in the not too distant future.

Bottom line: This was the game changer that made the phone worth having.

&lt;b&gt;Performance&lt;/b&gt;

There is a definite speed increase in the 4S from the 4. And the 4 wasn&apos;t too shabby to begin with. It;s one of those things that you don&apos;t buy the phone for, but you notice it when it&apos;s there.

&lt;b&gt;Camera&lt;/b&gt;

Ever since they increased the shutter speed of the camera on the iPhone back in iOS4, I stopped using any other camera for stills, and most videos as well. iOS5 adding the ability to access the camera from the lock screen as well as using the volume button for a shutter made it better. the new 8MP camera on the iPhone hsa made it even better. Life moves by fast in this household, and the ability to snap off a bunch of shots fast to make sure I get one good one to use as a  keepsake has been a Godsend for me. It was good in the iPhone 4, it&apos;s better in the iPhone 4S.

&lt;b&gt;Call quality&lt;/b&gt;

Living outside of the major metro areas, I don&apos;t suffer from the issues others report with AT&amp;T. Over the last year they have added some towers around here that have pretty much killed all the dead spots around here, with only a couple of exceptions. But I&apos;ve not experienced any dropped calls that I can recall with this phone so far. I didn&apos;t have many before so it can definitely be attributed to small sample size. At a minimum I can say things aren&apos;t any different than they were before.

&lt;b&gt;A note about battery life&lt;/b&gt;

Much has been made about the battery, and at first I saw it as well. But even before iOS 5.0.1 came out, I found that by doing a couple of things I was able to make my battery life a lot better. First off, I went into Location Services and disabled Time Zone support. Since I have spent 99.6% of my 39 years of life in the Eastern Time Zone, I don&apos;t see the need to have my phone checking to see if it&apos;s somewhere else. Also, I let the battery completely drain out, like down to shutting itself down. I recharged it fully, and from that point forward saw improvements. Then iOS 5.0.1 came out and - unscientifically - it seems even better.

Here is what I have seen about the battery life now. What I think was fixed by iOS 5.0.1 was that it dramatically improved the standby life of the phone. When not in use, my phone sips energy just like my previous iPhones did. When it&apos;s in use, the battery does drain faster - but I can understand it because with the increased CPU specs that&apos;s going to eat a battery faster by it&apos;s nature. I can accept that just fine.

So the bottom line is if I use it a lot, I may have to recharge after a day and a half. Under lighter usage, I have been able to go as long as 3 days between charges. I still drain it down to the bottom when I can. If I know I&apos;m going to be out of range of a charger for a while, I&apos;ll make sure there&apos;s enough juice to not have to think about it. But I don&apos;t fret about being tied to a charger with this phone, like others are saying they have been.

So there it is. I love this phone. I am definitely happy I upgraded.
				</description>
				
				<category>iPhone</category>
				
				<pubDate>Mon, 21 Nov 2011 16:56:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2011/11/21/My-Review-of-the-iPhone-4S</guid>
				
				
			</item>
			
			<item>
				<title>CF Admin Not Showing Settings?</title>
				<link>http://barthle.com/blog/index.cfm/2011/11/15/CF-Admin-Not-Showing-Settings</link>
				<description>
				
				I&apos;m running into an odd issue with CF9 admin. I just updated my local development CF9 to the latest hotfix version using David Epler&apos;s great &lt;a href=&quot;http://uu2.riaforge.org/&quot; target=&quot;_blank&quot;&gt;Unofficial Updater 2 Ant script&lt;/a&gt;, and I wanted to verify the changes had been made. When I logged into CF9 admin, and clicked the System Information icon, the page just kept hanging at the request phase. 

Other pages in the CF admin work fine, and testing my sites CF is running fine.

Any thoughts on this?

UPDATE: I now can no longer access the Settings Summary page either.
				</description>
				
				<category>ColdFusion</category>
				
				<pubDate>Tue, 15 Nov 2011 13:06:00 -0500</pubDate>
				<guid>http://barthle.com/blog/index.cfm/2011/11/15/CF-Admin-Not-Showing-Settings</guid>
				
				
			</item>
			</channel></rss>