Tips 'n Tricks

Boost productivity with Isolator


A common problem in today's world is distraction - too many applications open, too many emails showing up, etc, etc. Large screens give a tremendous boost to productivity but this often turns into having more applications open distracting you. And let's not mention email, RSS feeds and IMs constantly chiming away.

Thanks to the wonderful design of Mac OSX there are several utilities available to help lessen the distractions by hiding all applications other than the one you are working on at the time. Some of them, like Think and Backdrop have one fatal flaw - they require you to use their custom application switcher to jump between your apps, rather than integrating with the operating system's built in one. Thankfully someone worked out a way to do it right and Isolator was born.

Isolator is a very simple application. It doesn't launch as another app in your dock, instead it sits in your (albeit overcrowded) menu bar, and provides only a few sparse settings - the background color to use, whether to make the backdrop opaque (so you can see the desktop underneath it), whether it should start when you log in or activate automatically, and what key shortcut should activate/deactivate it. Once activated, all but your current application are hidden and your chosen background color fills up behind the window(s).

Having only used it for a short while I can't proclaim how it has saved me x hours per week or saved the lives of thirty-three cats, but even after my limited use it looks to be an app well worth using. And, given its cost there's no excuse for not trying it (presuming you use a Mac).

Access queries as structs in ColdFusion


A small tip, but a very, very useful one nonetheless. Did you know that in ColdFusion you don't have to loop through a query to access specific elements of the query? I've been developing in CFML for several years and was unaware of this. It's great! Instead of having to go through the hassle of looping an array just to find one field, if you know the field and row number you can just do this:

<cfset variable = query[column_name][row_number] />


<cfset variables.product_name = variables.q_products[name][5] />

Thanks to Ben Nadel for that.

Sometimes you just feel like a complete neophyte. I wonder what other useful tricks lie beneath the surface?

IE6 and the min-height CSS attribute


There's a really useful attribute in CSS called min-height that lets you set the minimum height an element should be displayed as; this is often used to make two boxes appear the same height even if one has less content than the other. Well, Firefox, Opera and Safari support it but Internet Explorer 6 and older don't. Luckily there's a really simple work-around for it, you simply add a defintion to your CSS that browsers other than IE will ignore and set the height to the same as the min-height, e.g.:
/* for standards-compliant browsers */
.bigbox {
width: 300px;
padding: 2px;
border: 1px solid #000;
min-height: 200px;
height: auto;
/* for Internet Explorer */
* .bigbox {
height: 200px;
Thanks Stu.

Panic Transmit 3.5.6 incompatible with Vandyke VShell 3


I use the excellent Transmit FTP/SFTP client from Panic Inc both at home and at work - it is easy to use and is generally bullet proof. Well, it turns out that it is incompatible with version 3 of Vandyke's equally excellent VShell SSH/SFTP server. After bringing this to Panic Inc's attention they put their minds to it and in a day or two came up with a custom install of Transmit for me that fixed the specific problem experienced. Excellent stuff! Of course my custom Transmit has problems of its own, like not working with plaintext FTP, but this should be all cleared up with their next release, whenever that happens.

Tip: Passing a shopping cart to Paypal Website Payments Standard


Here's a little tip for anyone using Paypal's Website Payments Standard system for electronic payments on their shopping cart. Their API allows you to pass in a complete shopping cart using a series of form fields listing the items, quantities, etc, as you'd expect. There's one tiny little detail that isn't explicitly stated - the button that you use to submit to the API must not have a name attribute otherwise it will fail. Here's a fully working example to better explain:

As you can see there's no name attribute on the submit button, just an id.


Subscribe to Tips &#039;n Tricks