Just a quick post, on today's Coldfusion meme - How I got started in ColdFusion
I first started with Coldfusion 2.0 back in 1996 whilst working in my first IT job
at a recruitment agency. I had been playing with assembler, basic, html and C on all sorts
of platforms from CP/M, SunOS, Linux and PC's.
I was tasked with developing a website for the company, to post available jobs and allow
candidates to upload resumes. I had started working with Perl, but soon was getting
annoyed at Perl as it wasn't a great solution for building websites.
One night I was at home, surfing on dialup and I found a link to Allaire Coldfusion 2.0
on a shareware website. It was amazing stuff compared to Perl. Wanna send an email,
wrap it in CFMAIL, wanna do a query, wrap the SQL in CFQUERY. I was sold.
After I left that company, I signed up for an Advanced Coldfusion course which turned
out to be more like a Coldfusion 101. I filled out the feedback form afterwards with some
pretty strong but expletive free language.
About a week later, the Australian Distributor for Allaire, called me up while I was at a friends
place and told me I had been given a full refund and the offered me the Job as the Australian
ColdFusion Trainer. I contemplated it for a while and decided I'd rather cut code and build
apps than train people.
I'm still using it all these years later!
Update: I just remembered, Google even evaluated CF back in the day,
but didn't like the
Monday, August 01, 2011
How I got started in ColdFusion
Thursday, May 26, 2011
Coldfusion: Slow ImageResize problem SOLVED
Sometimes, the built in Coldfusion Image functions can take a very long time to resize a jpeg image, like 20-30 minutes.
This is caused by ICC colour profiles, which really should be supported by an Adobe Product.
The quick solution is to use Imagemagick to strip out the ICC colour profile.
It's also a good idea to force the RGB colour space, as CMYK is also not handled.
C:\Program Files (x86)\ImageMagick-6.7.0-Q16\convert.exe
src_with_icc_profile.jpeg -colorspace rgb +profile 'icc' icc_stripped.jpeg
You can also use identify.exe with the -verbose option to detect ICC profiles, although it is a bit slow, 2-3s.
Tuesday, May 03, 2011
Adobe Coldfusion Builder 2 pricing down under is a JOKE
Adobe announces they have released Coldfusion Builder 2 today, but the Australian pricing is a sick joke.
List price in the US is $299, but in Australia for download only is $407 ex GST.
Now I'm not sure if the Adobe folks realise, but our dollar is worth more than USD!
Today, via xe.com USD $299 is actually only $274 AUD
Adobe has a loyal group of Australian CF developers, treating us like this is a sick JOKE
Wednesday, January 05, 2011
New Explore Australia website with expanded content
Explore Australia recently relaunched their website with a new design (by Thirst Studios) and heaps
of new content, including Fishing Spots, National Parks, Campsites and Caravan Parks.
So next time your going travelling anywhere around Australia, remember your Explore Australia Travel Guide !
Behind the scenes, the website was developed by Ennoble Consultancy Australia. It's powered by Coldfusion
and Oracle, with Maps produced via MapGuide Open Source and statically served using Amazon Cloudfront
and Openlayers.
Tuesday, December 07, 2010
CFIMAGE: Invalid image format - solution
Sometimes when you try to read an image with CFIMAGE using the filename,
it will fall over with "Invalid image format" using Coldfusion 8.0.1
The solution is easy enough, just read the image into a variable
and Coldfusion inspects the binary file contents rather than just being annoying
<cffile action = "readbinary" file="d:\inetpub\wwwroot\test.jpeg" variable="tmpBin">
<cfimage action="READ" name="tmpImage" source="#tmpBin#">
Saturday, January 16, 2010
Coldfusion Performance Consulting
Apart from writing applications from scratch, which I have been lucky enough to do a lot in my career, I also have done a fair bit of application taming.
Performance tuning is a technical art form and something I really enjoy, there's nothing more frustrating as a business owner as paying for some development and then being given a solution which is frustratingly slow.
Coldfusion is great to get started fast, but often this leads poor database design and other problems which can cripple performance.
A good web based application should be able to do most things under a second, post initial load of course. If your's doesn't, generally speaking, the application isn't complete, if your the client, i suggest with holding payment.
That said, it depends on your focus. Admin functionality might simply take longer to run, it's the core of the application I'm talking about.
For example opening the home page, searching for client records, viewing and editing the main record type in your organisation, these should be quick items. If they aren't, your wasting money on staff watching hour glasses.
Anyone needing some consulting in this area, please contact me, I enjoy diagnosing and fixing these problems!
Sunday, November 29, 2009
After moving from Modelglue to Coldbox, suddenly it's fun again
After using Model Glue (MG) for a few years, I started about 6 months using Coldbox (CB) and boy has it been a refreshing experience. Both claim to be Model-View-Controller or MVC frameworks, but as I have said in the past, Model Glue is MVCX, that is MVC + XML.
I hate the X in the MVCX, purely because XML isn't a programming language. CFML is, and that is what made programming Coldfusion (with Coldbox) fun again.
You simply can't express complex ideas simply in an XML file, it's a no brainer. The XML files used in Model Glue are highly repeditive and violate the DRY principle.
I am a CF developer since 96 and while i really benefited from using MG, I was continually battling the concept of trying to be 'true' to the framework and working with the XML files, without breaking the basic MVC concept. Anything complex always ended up with what I saw as dirty workarounds.
Alas, in business, you can't just simply switch frameworks on a large project as most often the client isn't going to pay (or understand) why you need to spend a few weeks rewriting something which already works.
So a new project came up and I finally got dirty with CB, which has turned out to be rather fun. CB has such a broad scope of functionality and great documentation, I find myself writing code without having to work around the limitations imposed by MG.
As I have been doing this programming thing for quite a long time now, I have learnt that often when I get that nigglying feeling that I should be doing something different or that an extra bit of work here or there, it pays off.
Of course that can be a complete scope creep trap for some developers, but that's the role of the senior developer / tech lead / solution architect to understand and make such rational calls.
I use the analogy of selling helium balloons at a fun park. If you fill the balloons and seal them properly , you can walk around all day and just focus on selling the balloons. If the balloons leak, your going to be dealing with parents with crying kids coming back all day to complain, plus you'll be making trips back to your van to refill your stock.
When I worked at a SME a few years ago, on a big project for a Telco, I was lucky enough to have my desk in the same area as the support team. That meant I got to over hear problems as they came in and over time, that allowed me to stablised the project with targetted improvements that so drastically reduced the amount of support required that the project as deemed mature and was outsourced to an Indian support team.
What I love about CF is how productive you can be and how amazing the CF community is. Adobe, has rather expensive support, but that has always been less of an issue for most CF developers & shops because of the community, most of us simply have never used Adobe support.
All I'm saying is that if your using Model Glue, let me recommend taking Coldbox for a spin, it will make your programming life much more enjoyable & productive.
Tuesday, July 14, 2009
CF9 Rocks but CFMAP would be better with Openlayers
I've just been watching the CFMeetup about CF9, I am super impressed with what the have done.
One thing which bugs me with the current beta, is the CFMAP tag which is directly tied to Google Maps.
I've been using Openlayers for a while now and I am honestly rather suprised that Adobe has chosen to support only google maps.
This is problematic as there are a lot of restrictions on what you can do with Google Maps, ie using it with password protected sites and the like.
Openlayers supports a wide range of different mapping providers and I really think it would be better to add support via openlayers, mainly because you get to program to an API which is cross provider.
It sucks if you start a project with google maps and then you hit licensing restrictions ( which i think a lotta people ignore anyway) and have to move away from google maps.
If your doing anything beyond simplely showing a maps, your going to be writing some custom javascript and it you use the google maps api, you can't easily switch because your tied to the google api.
If you use openlayers, you can switch mapping providers ****really**** easily.
Check out this demo with lots of different commercial providers and the other examples. Note the exmaples
I filed an enhancement request on the new CF9 bug db
Sunday, June 21, 2009
Introducing Explore Australia
After several years of work, I am happy to announce that Explore Australia is now live on the web.
Explore Australia is an interactive travel guide which covers over 700 different tourist towns and regions.
The site was built using Coldfusion 8, Model Glue, MapGuide Open Source, Oracle XE, jQuery & Openlayers and runs on Ubuntu via Amazon Web Services.
This project wouldn't of been possible with out the hard work of all the wonderful developers who contribute their time into these open source projects. I've learnt a lot and managed to contribute bits back myself.
Enjoy!
Sunday, May 17, 2009
KISS: Avoid Stored Procedures and save money!
I'm not a fan of stored procedures (SPs) for anything except complex data processing generally.
Having just read Writing and Calling Stored Procedures, I felt like explaining my point of view on this stuff. It's sunday after all.
Firstly, I'm developer who considers sql to be mandatory for the developer, rather than having dba's doing all the sql stuff.
That's just an approach which creates an unnecessary bottleneck in the development cycle. I have often seen bad results when developers don't understand the database and it's concepts, or maybe the DBA's didn't understand (or have time to) the application either.
DBA's are there to help with the complex stuff. Use them wisely (and cost effectively!)
This example of using SP's to ends up adding yet another layer to your app and is more complex & longer that the code it intends to replace. Suddenly it's also more work to say add a column to the insert as you have yet another chunk of code to update.
Using stored procedures means you can't easily work with multiple versions of code against the same database (as your logic in SP's is only once per db, not back in the app layer). You lose the ability to easily version your data access layer and hence things tend to stagnate.
If you database is 10 GB, do you really want to have to be running a different instance for each build with changes to the db layer. Doesn't that sounds like a rather expensive approach? It's a recession after all.
Tuning SQL for Coldfusion app with stored procedures, is also more complex in many ways! Personally I love how easy it is to tweak the sql in normal bound CFQUERIES. Copy from debug, tweak in something like TOAD and then update the CF code, easy!
What I love the most about Coldfusion is how clean looking (aside from the verbose cfqueryparam) the database support is when compared to other programming langauges.
Alas the ugly embedded sql in strings syntax of some other languages, almost necessitates SP's
Plus you can't port the app to another (perhaps free database) without rewriting the entire sql layer! Expensive huh?
SQL Server people seem to love (and needs) SP's more than with say Oracle. With Oracle you get the same result and performance just by using simple bound sql. I think the horrible muck that was classic ASP database access really started this trend.
A lot of the common uses of SP's I have seen is what I consider Premature Optimisation
Most of the performance myths about SP's date back to the old days of 100Mhz servers. Servers are cheaper than developers right? Not that I'm advocating something which is going to make your app run slower either (generally speaking).
My Advice, avoid SP's (until there's a clear issue which they can resolve) and enjoy the nice flexibility of bound sql and faster development cycles.
Saturday, February 07, 2009
Ideas for CFML improvements, less tag bloat!
Following on my CFLOCK type="parallel" idea, i was working a session cfc today and was about to do some CFLOCK'ing for a few things. It dawned on my that perhaps adding a option to CFFUNCTION
<cffunction name="setRating" returnType="void" lock="session|name|application|server"
access="public" output="false" lock>
Would be a nice language improvement, the easier that locking is, the more developers will use it and it could help reduce the verboseness of CFML.
Sounds like some interesting things are on the way for CF9 which sound good. Ray had a poll on his block about whether or not you would use CFSCRIPT exclusively for your CFC's in CF9 ( which can ). I don't mind tags for the component and function lines myself at all.
Adding LANG="CFML|CFSCRIPT" to the CFFUNCTION statement which would remove two redundant CFSCRIPT tags! heck make it an option on CFCOMPONENT!
Talking of CFQUERYPARAM, here's hoping for a new CF function bindVar'ish as a functional equivalent, coz they are way to long for such oft repeated tags. Aliases for these tags like CFARG and CFQP would also nice.
OR could we just overload CFPARAM with cfsqltype="CF_SQL_VARCHAR etc but (again VARCHAR should suffice on its own!)" and null="yes|no|auto"?
kinda neat, plus you get the validation stuff all in one place should you need?
or lets face it, why add a not make cfcs just return a bind parameter inside inside the cfc. CFQUERY creates a bind parameter, why do we need a return type anyway? that could just become the default inside a CFC.
DATE_REVIEWED=<cfqueryparam value="#document.getDateReviewed()#" cfsqltype="CF_SQL_VARCHAR">,now that's a lot less diverse, hey CF can guess a type for variables, why not let it automatically decide as well
becomes
DATE_REVIEWED="#document.getDateReviewed('timestamp')#"
DATE_REVIEWED="#document.getDateReviewed()#"Adding scope="cfc=document" to CFQUERY could then reduce that to just
DATE_REVIEWED="#getDateReviewed()#"So I guess I'm saying with CF code, I love the structure of it, it's just a bit verbose at times.
Your thoughts?
Also CF9 really needs native support the for the java classloader stuff, imho.
BTW it was 46.4C today in Melbourne, Australia! phew
Friday, January 09, 2009
CFLOCK type="parallel"
Just been doing some image conversion and I have used cflock type=exclusive to avoid swamping the server, however, it occurred to me that this would be a nice addition to support parallel processing, defaulting to say the number of cores on the machine.
Friday, December 12, 2008
XUL Profiler Addon profiles your Javascript too
Check it out, useful for anyone doing stuff with javascript (not just XUL)!
easily confirm your performance hunches
http://blog.yoono.com/blog/2008/12/download-yoono-xulprofiler/
Interestingly, Facebook is running load most of the time..
Friday, November 28, 2008
What Coldfusion Needs

it probably is just not public yet?
http://bugs.adobe.com/jira/secure/BrowseProject.jspa ?
Working with open source projects make me happy, because project databases make being a geek much easier.
Coldfusion needs one, badly, it will help evangelise the platform and make it more attractive to new developers. Not having a open project database is just so 1990's.
Even if they started from scratch and let the community fill it, it's pretty easy to setup a project in Jira.
Ralio has a Jira Project, even more reason to give it a go I reckon.
Wasting developers time by not having such a resource is almost shameful, IMHO.
Tuesday, October 14, 2008
Free Australian weather feed from the Bom
The Australian Bureau of Meteorology publish their data feeds in rather ancient text format, but it works! Please note the copyright requirements.
There is a description of the file and the ftp info to be found over here Australia Weather Forecasts data feeds. It's not XML but CSV files..
It was pretty easy to read into Coldfusion, just put something between the empty delimiters so the Coldfusion, skip empty list elements behaviour doesn't bite.
Tuesday, October 07, 2008
Pagination can be so 1990's
Coldfusion Bloggers is a real cool site aggregator, but I have to confess, even since Ray switched over to jQuery from the heavy native CF stuff, the pagination is really annoying.
Why do we need to page 10 records at a time? why not 50 or 100?
There was a time when computers where bloody slow and pagination helped reduce system load, but it's 2008 and as Google proved, things have improved and we can do things differently.
Personally I like the planet style blog aggregators, but I prefer the CFBloggers style as I get some nice stats on whether or not people are reading my blog. Currently, the readership for my blog bobs between 100-500 hits a day.
It's a great feeling when I go to a conference or even quite randomly meet people and I get some nice feedback that they read my blog....
So Ray, what do ya think about bumping up the pagination size?
Update: Ray has tweaked cfbloggers, the following url will set an cookie which sets it up for 100 rows per page, tho 50 is probably enough
jQuery IE7 load url problem
I blogged a few days ago about what I thought was a solution for an issue I
am having with jQuery and IE7. Alas the fix didn't work and I deleted the misleading post.
Ironically, the removed post has generated a lot of hits which end up 404-ed, so I thought I'd put this back up and see if someone can help.
For some strange reason, some urls just seem to not work in IE7 with jQuery Load().
IE7 doesn't even fire a request off to the server, which I monitored with Fiddler2. It's rather wierd, coz all the pages work fine in Firefox (no suprise there) and other links which re-use the same code on the same page also work fine in IE7.
Using trustly old Javascript Alerts I confirmed that the code was being run.
I am using the excellent CFJQAJAX jQuery ajax tags for Coldfusion which are nice and lightweight when compared to the rather heavy bundled CFAJAX tags. I highly recommend trying them out.
With Nokia and Microsoft getting on board, it's starting to look like jQuery is becoming the defacto standard ajax library.
IE7 does feel rather prehistoric these days... Anyway, anyone got any ideas on how to solve this?
Update: fixed the case of jQuery in this entry, also this works on some IE7 machines and not on others, same build too!
Update2: Thanks to Dan I fixed it, Damn stupid IE caching, that's so 1990's... why can't they just make their browser faster and not just dumber....to think people use that pile of rubbish for business
Wednesday, October 01, 2008
When will Adobe open up the CF bug database?
Back at CF_CAMP last year in Melbourne (which was great BTW),
there was some positive talk about opening up the CF bug database,
which is in JIRA I seem to recall.
Having an open bug database is a major advantage for any programming
language, it saves a lot of development time and should be always a
factor to be considered when choosing software.
Now that we have at least five implementations of CFML engines out
there, this becomes more and more important to maintain consistency.
Anyone heard anything more about this?
Tuesday, September 23, 2008
F9 Group Inc spins the truth
Mission accomplished, the offending unattributed content has been taken down, complete with all other CF blogs. they cite the fact that the RSS feeds don't provide enough information to attribute the blog articles back to the author... ahem, bullshit!
Reading on they are going to steal unattributed content from .NET and PHP blogs instead (same RSS problem right?), super guys, thanks for reinforcing my great impression of marketing people....
It was also suggested that I should remove my public RSS feed if I had a problem with them syndicating my content!
As marketers they should also understand language.
Calling a site a blog as in http://blog.f9group.com implies that it is their own content, http://blogs.f9group.com also implies it's their content.
www.cfbloggers.org on the other hand, clearly implies it's an aggregator.
they claimed to always link back to the site, but as the cache shows this wasn't true. 
Note the blog title is not a link as can be seen by the cursor and I don't see my name on that page, which they admit in the Coldfusion removed entry, despite the legal notice claiming that they do?"does not provide the article in its entirety and displays both the author of the article and the Uniform Resource Locator back to the original article from which it was obtained."
UPDATE: 25/09/08 The legal note has been changed but listed under the same entry and date, so for completeness of the record, I present the cached version which looks like this:
The other issue I had was that this page was presented as being indexable by google.
This marketing company seems to really have a good handle on public relations....
More unethical syndication of my blog
It's happened again, another company is abusing the works of CF bloggers for their own benefit.
They call themselves "Internet Marketing Experts" but others would call them freeloaders or unethical cheapskates. There is nothing wrong with traditional aggregator sites, such as cfbloggers or the planet style sites like planet osgeo
Whilst googling up on the use of Malcom Turnbull's new nick name Truffles , I found this link when I searched for truffles emo, the first link was mine and the second was this unattributed rip off
This is blatant content stealing, not properly attributed and should not be indexable by search engines. They have a lot of CF bloggers on there as well.
There is no excuse for this. Period, no discussion. If your smart enough to program a website, you should be smart enough to realize that this is wrong, really wrong.
I know people are hard pushed for idea's, but writing yet another blog aggregation site and then SEO-ing it to compete with the original authors site's is really scraping the barrel, dumb... Even McCain could understand that!
I am going to fire off a stern email to sales@f9group.com
