29 February ColdFusion bug

Written on 9 March 2012, 10:57pm

Tagged with: , ,

This is just to log a funny bug I encountered a few days ago, on the 29th of February 2012. There was a piece of code that was comparing if a certain date is older than a year or not.
The algorithm to compare the date was creating the ‘one-year-ago date’ by substracting one unit from the current year. Something like:

<cfset aYearAgo = CreateDate(year-1,month,day)>

Obviously, this algorithm was failing on the 29th of February on the leap years (like 2012).
The solution is quite simple: instead of substracting one unit from the year, substract 365 days from the current date, using Coldfusion’s dateAdd function:

<cfset aYearAgo = DateAdd('d', -365, Now())> 
Image: Smashing Magazine’s Desktop Wallpaper Calendar February 2012

Coldfusion dot-notation: using multiple dots

Written on 23 February 2012, 10:25am

Tagged with: ,

A refresher about the ColdFusion structures:

ColdFusion structures consist of key-value pairs. Structures let you build a collection of related variables that are grouped under a single name.

Structure notation
ColdFusion supports three types of notation for referencing structure contents. The notation that you use depends on your requirements.

1. Object.property
You can refer to a property, prop, of an object, obj, as obj.prop. This notation, also called dot notation, is useful for simple assignments, as in this example:
depts.John="Sales"
2. Associative arrays
3. Structure
Adobe Livedocs

What is interesting about the dot-notation, is that using multiple dots in referencing the object property – is allowed.
The following code executes correctly in ColdFusion 8 and outputs ‘Foo’:

<cfset myStruct = StructNew()>
<cfset myStruct.a = '1'>
<cfset myStruct.b = '2'>
<cfset myStruct.c = '3'>

<CFIF #myStruct..a# EQ 1 
	AND #myStruct.....b# EQ 2
	AND #myStruct..........c# EQ 3
>
	Foo
</CFIF>

IKEA – store locator app

Written on 19 February 2012, 12:19am

Tagged with: , , , ,

I put together a small app using the following technologies:

I spent some time adding addresses of IKEA stores from some European countries into a Google Fusion table. Then I used the Google API to display the stores on map, as an overlay, with a country filter. I also used the HTML5 geolocation capabilities to show the nearest IKEA store. Additionally, I provided the user the option to search for the nearest IKEA store from any given location.
As I said before, I used the Bootstrap user interface, along with jQuery.

At this moment, the current version is 0.8. I will make the roadmap public shortly, but the idea is to include all the European stores in the version 1.0. Also, the version 2.0 will include a separate data source (in addition to the Fusion table) and, depending on the application popularity, a public web service + API to retrieve the data. Of course, I planned to make this app scalable enough to be used with any set of geographical points – not necessarily IKEA stores 🙂

So, here it is: