Monday 30 June 2014

Adobe apparently cease development and/or support of UI tags in ColdFusion

I didn't want to put a question mark on that for the traditional reasons. However it seems this might be true. At last.

Thanks to Henry Ho for putting this news in front of me:

A quick primer: porting CFCs from tag-based to script-based

I'm assisting someone from porting their (ColdFusion 9) CFC code from tag-based to CFScript based, and part of this is to knock together some examples of analogous CFCs in both formats. I know some people struggle to get their brains around CFScript, so thought perhaps it might be slightly worthwhile to post the notes here too. This is just a first pass, and if other requirements come up or examples needed, I'll post 'em too.

Friday 27 June 2014


This is very much a cop out: it's a tiny "article" which achieves only to excuse myself from writing something useful.

I'm not finding CFML to be particularly interesting at the moment, so I am completely inspirationless when it comes to what to write. I'm pleased with my code at work (although it's been slow at times), but there's been very little noteworthy that's relevant outside the context of our team.

I'm also slightly let down at the cancellation of the C# cross training ("Adam Cameron's C# CFML blog"). This is being remedied shortly, but it's still a bit... disappointing though.

Added to that I've decided I spend way too much time researching CFML shit I don't actually care about, specifically for this blog; so I've kinda decided to peg back on that a bit for a while. Instead - selfishly(?) - focusing on getting through some more JavaScript courses on CodeSchool, instead of inventing something to write here. I've also got a bag load of Ruby courses to look at, and now Sean reminded me that not only have I not yet gone through "Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages", but now the sequel has arrived at a screen near you: "Seven More Languages in Seven Weeks: Languages That Are Shaping the Future". 14 bloody languages to look at? Bloody hell, there's still probably 14 more libraries I want to look at in JavaScript too!

Trivially, I also have a life outside of all this, and there's a few things there I need to focus on, and "get my ducks in a row" (I really have no idea why one wants one's ducks in a row, but - hey - why not?)

So, anyway, sorry for the lack of material. I need to focus on other shit, which means less time for this carry on.



Wednesday 25 June 2014

Looking at the bugs I've raised in Railo

I've always banged on about how Adobe deal with ColdFusion bugs, and what my opinion is of this. I have not - to date - cast my magnifying glass in Railo's direction...

Monday 23 June 2014

arrayMap(): a reverse CFML history

This is a bit of a nostalgia trip. But until those nostalgia trips that are all sepia-coloured and star Jimmy Stewart and harken back to better times: this should make us thankful we are where we are.

Last week I decided to clear out a few of the UDFs in the CFLib backlog. I wrote an article about one of the ones I processed in my last article - "Feedback on UDF submitted to CFLib" - and I'm gonna continue on with the next one I looked at.

This one is a facsimile of arrayMap(): back porting the functionality of ColdFusion 11's new function to work on older versions of CF. As written, it would have only worked back as far as CF8, but it was a reasonable effort. On CFLib I don't give a toss about versions of CF prior to CF9 (and even then, only until December when it is end-of-lifed; after that I'll only be targeting a minimum of CF10), so the version I release is CF9 compatible. And is as follows:

array function arrayMap(required array array, required any f){
    if (!isCustomFunction(f)){
        throw(type="InvalidArgumentException", message="The 'f' argument must be a function");

    var result = [];
    var arrLen = arrayLen(array);
    for (var i=1; i <= arrLen; i++){
        arrayAppend(result, f(array[i], i, array));
    return result;

(I'm actually glad I revisited this, as I spotted a bug with it when I did: I had some CF10-only code in it).

That works fine. It lacks the elegance of ColdFusion 11's implementation as it cannot use an inline function expression (which is kinda the whole "thing" about these iteration functions), but it does the mapping OK.

This got me thinking (and mildly investigating) how CFML has changed over the years, and what code one would need to write to effect this functionality using progressively older versions of CFML. To start with, let's look at the bleeding edge state of affairs (the bleeding edge in this context currently being Railo 4.2, not ColdFusion 11).

Friday 20 June 2014

Feedback on UDF submitted to CFLib

This is just some feedback on one of the UDFs I just approved on CFLib (convertBBCodeToHtml()). I changed the function a fair bit, so figured it might be helpful to look at what I did.

Tuesday 17 June 2014

Will sessions and applications timeout in the middle of long-running requests?

The short version is "yes", as it turns out. I did not expect that.

This question came up today courtesy of Ron Stewart on Twitter:

Adam Cameron's C# CFML blog

Hilarious. I got a call from my team lead just as I was arriving @ the joint we were doing our C# training in, to tell me "nah, I've cancelled it: the course was just too rubbish to waste our time with" (that's a paraphrase). So I'm back in the office, googling some C# / ASP.NET MVC tutorials, with a view to suggesting we spend the time this week self-teaching instead. But will have to wait until Marc gets back into the office before that decision is made.

In the mean time, I guess I will rejoin my sprint team and start planning some CFML tickets...


I'm not Ben Nadel (or Ray Camden)

Just a quick note. Ben Nadel has a feature on his blog to "Ask Ben" via which the community can contact him directly for help. I think Ray might also have this on his blog too.

However I'm neither of those people, and I won't help people if they come directly to me via email with their coding problems.

Monday 16 June 2014

Adam Cameron's C# Blog

Well here's a milestone in the making. Today I commence a week-long course to cross-train from CFML to C#. The course is not specifically tailored to migration from CFML, but it amounts to the same thing, career-wise. The expectation is that general programming skills remain the same within programming paradigms, and the specific language being used is neither really here nor there.

Once we have this leg-up into the world of C# and MS's take on website development, we'll be splitting our time between CFML and .net; initially just helping out whilst we get a handle on how the applications at work have been written, and broadening our development muscle-memories to encompass the .net side of things as well. I would expect to be able to consider myself a "senior" C# developer within a year, I should think?

And, no, I am not renaming the blog, that was just a tease to get clicks. However it probably does spell the beginning of my migration away from CFML. This will not be something that happens in the short term though.

It occurs to me now I've not been on a training course since... um... 1996, I think! 2000 if one counts the Fast Track to ColdFusion (I don't, really). So I better go polish up an apple for the teacher, and hit the Tube.


Friday 13 June 2014

What should Adobe be retro-fitting into ColdFusion 10? Here's a potential list

Adobe fixed a helluva lot of bugs during development of ColdFusion 11 (as per "Adobe ColdFusion Splendor (codename) & Adobe ColdFusion Thunder (codename)" (PDF)).

However there's been no patch for ColdFusion 10 for a while, and an awful lot of those bugs were raised against ColdFusion 10. So by rights they should be fixed in ColdFusion 10 too.

But fair's far... not every bug is important. So I've distilled that list down to just the ColdFusion 10 bugs, and the ones that were listed as "High".

Here they are:

Do me a quick favour?



Thanks, I've got the information I need now. Cheers to everyone who helped.

Could someone pls check whether any of these links yield actual bug records, or simply say:

The information requested is not found
My expectation is that all of them say "not found". Do any work properly for you?

Thursday 12 June 2014

CFHTTP, presumption, rubber ducks and CRLFs

Here's another one that's just "dumb shit I did today".

Better(?) late than never: CF.Objective() recap

I'd kinda decided it was too late in the piece to write this article now, given CF.Objective() was a month ago. Sorry for not writing it up in a timely fashion, but I had a motivation block for a coupla weeks after returning from it. The timing of this blockage was coincidental, and nothing to do with CFO itself.

However I am going to offer some feedback now due to a comment from Jason Dean y/day:

Wednesday 11 June 2014

Super and mix-ins don't mix very well

True to form for a "web log", here's a summary of the last six hours of my working life (Tues afternoon, Weds morning). The executive summary is "Oh FFS, ColdFusion".

Good work Adobe: fixing ColdFusion Builder 3.0 bugs already

Adobe have just blogged this "ColdFusion Builder 3 Mandatory Update Release". This fixes issue 3761655 (Unable to Update Software)... although that ticket is still marked "to fix" not "fixed".

Tuesday 10 June 2014

What I took away from Scotch on the Rocks

I'll just run through the presentations I attended, and offer some uninspired commentary on them. Sorry but I'm pants at reviewing things... I only ever remember concepts rather than details in these things.

Monday 9 June 2014

Ortus does what Adobe / Railo ought to have done...

Luis & Brad (and Alex from Pixl8) have been offering teasers for CommandBox for a while now: Luis first showed me at CF.Objective(), and had been talking about it before then. Today they released a "trailer" for it: "Teaser Video for CommandBox". Go watch it.

CFML enhancement: alternate function expression syntax; "lambda expressions"

In this article I just want to - hopefully - extend the audience of a conversation taking place on the Railo Google Group ("Railo 5 lambda expressions"). Even if you're a ColdFusion developer (ie: only use the Adobe product, not the Railo one), this will still be relevant to you as Railo generally leads CFML development these days, so innovations they make will - perhaps some time in 2016 - make it into ColdFusion's dialect of CFML.

There are a lot of good brains in the CFML community, and I hope to encourage some more of them to join this discussion.

Sunday 8 June 2014

CFClient: pardon my ignorance / thought exercise / advice solicited

This is a lazy-arse article, but it's Sunday and I am suffering from post-conference malaise. So... bad luck if you were after something incisive / thoughtful.

It perhaps might be thought provoking though.

And at least it's short. Once I get on with it.

Friday 6 June 2014

CFML: Follow-up on custom tag performance

Yesterday I looked at memory leaks (or lack thereof) in custom tag usage: "Do CFML custom tags have an intrinsic memory leak issue?". There was no memory leakage, but what there was was pretty poor performance.

My suspicion was that it was down to there being a lot of string handling going on, as I had a custom tag around quite a lot of text, and text-handling is not a great performer.

Thursday 5 June 2014

Do CFML custom tags have an intrinsic memory leak issue?

Betteridge's Law is very much in play with that headline. I guess that's a spoiler. But read on anyhow...


My previous article - I hope - out to bed the idea that there's a real-world performance consideration when it comes to using transient objects in CFML: "Hanging on to outdated knowledge: don't". This article will give the same treatment to the notion that CFML-based custom tags have an innate issue in that they cause memory leaks. TBH I have only ever heard this from one source, having researched thoroughly and polled the community could not turn up any corroborating evidence, and my own testing here will show: there doesn't seem to be a basis for it.

What I have heard is that back in the days of Spectra - which relies heavily on custom tags - people had performance and stability issues with Spectra-based sites. However as far as I can tell this had always been caused by one or more of the following sort of issues:

  • sub-optimally-written code;
  • trying too do too much with too little kit: under-provisioned hardware.

This sort of thing used to happen all the time with all sorts of CFML applications, and was not solely the domain of custom tag usage.

Another consideration is perhaps that this was back on old C++ -written versions of ColdFusion (pre 6.0), and those had intrinsic "idiosyncrasies" with memory handling.

So this is probably a case of throwing the baby out with the bath water.

Sunday 1 June 2014

Doing a Railo silent install

Yesterday I questioned Railo needing an admin password ("Admin passwords shouldn't have a min length requirement") on an existing ticket... one I am surprised to see was raised close to six years ago and seemingly has yet to be triaged by Railo. My comment was thus:

I'm getting fed up with being forced to put a password in every time I install a new Railo install. Because for every single occasion I've installed Railo, I have not needed the admin to have a password because machine security is handled separately, making this password a complete waste of time.

We are on the verge of migrating several hundred CF9 instances to Railo, and this is going to be a problem for us.

It's good you provide password control. It's poor that you attempt to decide for me whether I want to use one or not.