CF9: What’s going to be poorly implemented this time.
On Friday, Ben Forta posted to his blog that in the next updater for CF8 we will finally be able to nest implicit creation of arrays and structures. This comes almost a full half year and two service packs since CF8’s release.
Implicit creation of arrays and structures was probably the most anticipated update in CF8. For a long time, many developers that use other languages have always laughed at CF because of the lack of such basic features in the language such as implicit creation. Really, can we blame them for laughing. It’s such a pain to write line after line of function calls just to create an array or structure.
When CF8 was finally announced that it would include this feature, I was jumping up and down, finally we were catching up with the rest of the bunch. Then it was announced that you couldn’t mix the implicit creation syntax and again my heart dropped and once again I felt cheated.
I don’t know why with every major release of CF since version 5 there has always been this MAJOR, COOL new feature that will be included only to have it poorly implemented. If you sit back I will take you for a walk down memory lane and prove my point.
CF5 finally gave us hope of creating our own user defined functions (UDFs). Before this feature you had to use custom tags if you wanted to encapsulate functionality. If you saw code written before the CF5 days, it was littered with many custom tags to such simple things. This was also the days when CFX tags were wildly used in applications. Many people loathed the implementing of CFX tags in their applications since they were notoriously not thread safe and required you to use CFLOCKs around them to prevent collisions. Coupled with the fact that it was damn near impossible to convince your hosting company to install it on their servers.
Once CF5 introduced UDFs everyone thought this problems would be solved. However are glee turned to anger when we found out that you could only create UDFs within a CFSCRIPT tag which made using tags to create UDFs impossible. Why even bother to include this feature in if it wasn’t completed? Not until the release of CF6 and the CFFUNCTION tag did we finally get full UDF creation using all tags and functions of CF.
CF6 was touted as a new era in CF history. The was the version written from the ground up in Java as opposed to the old C++ code of earlier version. With this new version the biggest feature was the ability of running separate CF instances. This meant that if you had a bad application on a server, you could isolate it from the rest of the other application by creating an instance for it.
We all know what happened though. There was no simple way of creating instances and you could only do it if you bought the enterprise edition. Until CF7, that include the instance manager within the CF Administrator, if you wanted to create an instance you had to create folders and copy and edit files. 9 times out of 10 you screwed up creating the instance, so you had to start all over. It was just a mess.
To add insult to injury, CF6 was dog slow when it came to development. Each page was complied and then the byte code was saved to the drive. This meant for every change you had to wait upwards of 30 seconds for your page to compile. Editing minor changes took hours and CF for the first time lost it’s RAD (rapid application development) feeling.
Even worst was the fact that most people opted to downgrade their servers back to CF5 making CF6 Macromedia’s VISTA. Only after CF6.1 was release months later did things start to get better, but by then it was too late and most shops migrated over to PHP or ASP.NET. What little market share and respect CF had was chipped away again.
CF7 brought us the feature that most of us use everyday and probably couldn’t do without. This was the release where the IsValid() function was born. No longer did we have to depend on a library of function in order to valid input, it was done in a simple and easy to use function. CFDOCUMENT was also introduced making CF the first language to have the ability to print webpages to not only PDF but even FlashPaper. CFREPORT was one the big onces though. This was the first time that you had to use an external application, called the CFREPORT Builder, you utilize a feature of CF. CFREPORT was said to solve the problems of hand writing reports by giving us an Access like interface to build our reports. All and all these 3 features would surly make up for the mistakes made in CF6 and win back abandoned.
History has this problem of repeating and sometimes repeating too often.
CFDOCUMENT was and still is plagued with problems and even after numerous updates, they still exist. Translating HTML tables has always caused heartache and trying to style your output was a crap shoot at best.
CFREPORT just didn’t work. The report builder that was shipped on the CF7 CD wouldn’t even install. If I remember correctly it was several weeks after that Macromedia finally out a version of the report builder that you could download and install. Even after the update, the report builder was extremely buggy to be useful. Many people, including myself, have altogether sworn off CFREPORT and vow never to use it. A great idea that just failed.
IsValid worked like a champ, except with integers. Problems still exist in CF8 where telling IsValid to validate an integer yield weird results. The only work around is a combination of int(fix(val())) on your variable and then validate it as a numeric data type. If only a little more testing was done.
Which brings us current with CF8. Again the parent company, Adobe this time, tease us with new features only to implement them poorly.
Which is why I ask… What will be poorly implemented in CF9?