0

My notes and analysis of Ben Forta's presentation to the DFWCFUG

ColdFusion

Last night (April 30), Ben made a visit to Dallas to present to the Dallas Ft. Worth ColdFusion User Group on ColdFusion 8 Scorpio. Below are some of the notes I jotted down as he went through. I start with the tags and new attributes that he introduced.

  • CFIMAGE - This is some really amazing stuff. Since the beginning of ColdFusion we have always had to use external programs to manipulate images, from cfx tags in the early days to more recently using Java libraries to do the work. This has now been made much simpler by use of the CFIMAGE tag. In addition to manipulating existing images, you can actually draw images from scratch with the CFIMAGE tag. Some of the things you can do are: convert to gray scale, resize, crop, optimize, sharpen, and more. You can write directly to the browser with the tag as well.
  • New RICHTEXT="true" attribute to CFINPUT - CF8 is going to ship with a new feature that allows you to easily add rich text editing to your textarea elements with the new "richtext" attribute. When you use this attribute the element becomes enhanced with FCKEditor.
  • CFWINDOW - This is a really cool tag that basically creates resizeable and movable panels in your browser window. You can add code within a CFWINDOW block and it displays on that panel.
  • CFPOD - I am not exactly clear on this tag, but it seems to be very similar to the CFWINDOW tag minus the resizing and dragability. I am fairly certain that there are more differences, but I will need to research it further.
  • CFMENU - Ben gave an example of creating a quick dynamic menu using the CFMENU by way of a new wizard.
  • CFAJAXIMPORT - This tag was mentioned, but the functionality was not discussed.
  • CFLAYOUT - This tag was also mentioned but not discussed.
  • CFLOOP type="file" - This is a wonderful new attribute! Now instead of reading a file as a variable and then parsing based on Chr(13)Chr(10) delimters, you can just loop your file! This uses the Java file buffer and is far more efficient.
  • CFINTERFACE - As hotly contested as this tag and concept was in the ColdFusion community, it got a relatively light mention in the presentation. I suppose this makes sense since it will probably only be a small percentage of developers that make use of it. Along with the CFINTERFACE were a number of new functions that played along with it.

Ben told us that as he works his way through this 6-week tour, he will be tipping his hand and showing new features that the previous presentation attendees were not shown. Last night he showed us the newly public use of ARGUMENTSCOLLECTION. Yes, I relaize that ARGUMENTSCOLLECTION is not new and that you can pass arguments to a CFFUNCTION using this method, but now you can pass it to..... wait for it...... EVERYTHING!

This is so sweet... here is an example:


You see what I did there? How bad ass is that? What a clean way to put your arguments together and then pass them. Until now the code above would have been a big ugly conditional block with multiple CFMAIL calls.

I heart the ARGUMENTSCOLLECTION!

Another cool set of features is the addition of Javascript style code. For instance, say that I want to create an array of some of the new tags iin CF8. I can do the following:

Likewise, we can now define structures like this:

We also have all sorts of Java/Javascript comparison at our fingertips. Familiar with this loop?

Now you can do this!

Ha! In addition to ++ and <= you can now use the following: --, %, +=, -=, *=. /=, %=, &&, and ||.

(the crowd goes wild!)

Around this point in general questions, Ben was asked if Event Gateways will become part of the Standard license. He gave a very political non-answer. Another politically polished non-answer was given to the question as to whether CFTHREAD will be included. I will leave it to you readers to interpret that as you may. :)

After some of the new tag/function enhancements, Ben dove into intergration with other technologies. How about this one?

That's right. You can now talk directly to .Net objects, both on local servers and on remote servers. In fact, a Linux instance of ColdFusion can easily connect to a .Net server and talk directly to it. You can take returned values such as .Net arrays and work with them just as if the array was created in ColdFusion.

On the subject of Windows, Ben gave a great example using the following new tags:

  • CFEXCHANGECONNECTION
  • CFEXCHANGECALENDAR
  • CFEXCHANGEEMAIL

Using these tags, you can in essence create your own Exchange client! For those of us Linux folks in Microsoft shops, this is a pretty dang cool feature.

In demonstrating integration with Adobe products Ben gave an example of the following new tags.

  • CFPRESENTATION
  • CFPRESENTER
  • CFPRESENTATIONSLIDE

Using those tags you can create Acrobat Connect (formerly Breeze) presentations on the fly. When I saw this demoed at CFUnited last year I have to admit I felt that it was a fluff piece to cater to Adobe management without much practical use. However after seeing it last night, I can clearly see that this would be a great tool for things like distance learning, online help and more.

In further integrating with Adobe products, CF8 will bring us the CFPDF. This tag will allow you to easily do the following with PDF documents.

  • Obtain metadata
  • Merge multiple PDFs
  • Extract pages
  • Encrypt documents
  • Generate thumbnails of PDFs
  • Flatten PDFs
  • Protect PDFs
  • and the biggie... Execute DDX instruction sets

In addition to CFPDF, CF8 will offer CFPDFFORM. This allows to distinct abilities when working with PDF forms. It can A) allow a user to fill in fields in a PDF form and submit them to the server and B) Extract values from a submitted PDF form. I can see great use for this in government, insurance, finance and other areas where forms have distinct regulatory requirements.

Another integration topic that Ben briefly mentioned but didn't go into detail on awas the Flash Media Server Gateway.

Then for the clencher... the exposing of the ColdFusion Black Box!

This is a new and extremely powerful set of administrative tools that allows you to view what is happening on your server down to the Java thread level in real time. There were many similar features to what is currenly offered in some 3rd party products such as SeeFusion and FusionReactor such as being able to view long running requests, see information about various connections, etc. One cool feature is the ability to see most frequently run queries. As Ben mentioned, this can help you target which areas of your application need the most optomization. Additionally you have the ability to take snapshots of your system so that in an emergency period when a server needs to be dropped, you can take your snapshot, restart the server, then view the details of your snapshot when the server is back running and your boss has regained his/her sanity!

Some other features that you will soon hear more mention of are per application mappings, custom tag paths, debug settings, and logging! These allow you to overide any defaults in the CF Administrator.

One new licensing change that Ben mentioned is the fact that VMWare is officially supported under the license with CF8. Until this time, if you were running in a VM, Adobe support would not be able to help you. That will no longer be the case.

So that is it in a nutshell... albeit a big giant nutshell! As always, Ben was the consummate ColdFusion sage and the room was completely captivate for almost 3 hours that seemingly flew by!

Thanks to Ed Sullivan for his hard work in bring Ben to Dallas, thanks of course to Ben, and thanks to all of the sponsors that made last night such a success.

tags:
ColdFusion
Rob Wilkerson said:
 
Love me some inline constructors. And some increment/decrement operators. All I want to know now is...where are my ternary operators?
 
posted 449 days ago
Add Comment Reply to: this comment OR this thread
 
Walt said:
 
Boy, oh boy.
The AJAX stuff was a good way to kick that whole thing off. The PDF stuff was way neat/cool as well.
Overall, I was VERY VERY impressed with what's being put into Scorpio.
Must.find.copy.
 
posted 449 days ago
Add Comment Reply to: this comment OR this thread
 
Jim Priest said:
 
Good stuff! Less typing is always better!

Tim Buntel is coming here (Raleigh) in two weeks - look forward to hearing what he has to say :)

 
posted 449 days ago
Add Comment Reply to: this comment OR this thread
 
Alan said:
 
Looking good - but let me correct you, Scorpio is NOT talking to .NET natively; it physically can't. It is a Java platform talking via a bridge to a .NET CLR.

I would put this down to your interpretation more than Ben explicitly saying "native", because I know he wouldn't make that mistake.
 
posted 449 days ago
Add Comment Reply to: this comment OR this thread
 
 
Hey at least I know you are reading! :) Thanks for the correction, and I will make the edit.
 
posted 449 days ago
Add Comment Reply to: this comment OR this thread
 
Andy Matthews said:
 
Why oh WHY can't Adobe add in a group attribute to CFLOOP? Having this attribute would allow developers to EXACTLY mimic the behavior of the cfquery tag. I can't count the number of times that I've had an open, generic cfoutput tag with a nested cfloop tag using a query. Without the group attribute, I have to break out of the cfoutput tag, open up a NEW cfoutput tag JUST so that I can group on it.

With a group attribute on the cfloop tag, it would be simple to do this:


do some stuff here
|
|
V

print out unique header names

 
posted 449 days ago
Add Comment Reply to: this comment OR this thread
 
Steve Nelson said:
 
With that JSON syntax (the {Name="Dave"...etc), does it go the other direction? I.e. is there a cfjson tag that works like cfwddx just outputting json syntax?

If not... if Tim Buntel's reading... add it!
 
posted 449 days ago
Add Comment Reply to: this comment OR this thread
 
Andy Matthews said:
 
Ternary operators would be AWESOME. I really wish that the IIF operator was easier to use. It's such a kludge having to mix it in with the DE().
 
posted 449 days ago
Add Comment Reply to: this comment OR this thread
 
Aaron Longnion said:
 
Thanks for taking such good notes! As I was leaving the presentation in Austin, I was kicking myself for not taking notes. You saved me, Dave. ;-) All the new file reader functions that use native Java IO libraries (i.e. java.io.FileReader and java.io.BufferedReader) really look like they could eventually help tremendously with the speed of some of the apps I've been working with lately. Woo-hoo!
 
posted 448 days ago
Add Comment Reply to: this comment OR this thread
 
Sean Corfield said:
 
I posted a fairly detailed report of the BACFUG preso:

http://corfield.org/entry/Ben_on_Scorpio_at_BACFUG...

That includes some additional AJAX code samples and some more notes about JSON handling (as well as lots of other stuff).
 
posted 448 days ago
Add Comment Reply to: this comment OR this thread
 
Tim Buntel said:
 
Serialize JSON and Deserialize JSON: yup, both in there.

See, I'm reading :)

Tim
 
posted 448 days ago
Add Comment Reply to: this comment OR this thread
 
Tom Mollerus said:
 
I especially like the 'black box' features to help diagnose application errors and bottlenecks. That should help solve some of my mysterious "null null" errors.
 
posted 448 days ago
Add Comment Reply to: this comment OR this thread
 
Steve Nelson said:
 
Tim that sounds excellent. I've got a simple suggestion that it's probably too late to add, but i'll suggest anyway...

Add a "value" attribute to cfargument (maybe cfparam too). The idea being that if the value of the incoming argument isn't the value in the tag then it throws an error. Just like if you specify a numeric type and pass in a string it throws an error.

This would make for some interesting possibilities, especially wrt to permissions. For example:

<cfargument name="canEditAccount" value="true"/>

If arguments.canEditAccount is "false", it would throw an error that can be caught and maybe send the user to a login form etc.
 
posted 448 days ago
Add Comment Reply to: this comment OR this thread
 
Adedeji Olowe said:
 
For me the .NET integration is bomb. Now, I can show the guys at work that with CF8, I can build an application faster with .NET components in CF faster than they would do it in ASP.NET!
 
posted 448 days ago
Add Comment Reply to: this comment OR this thread
 
 
As most people who have seen him work know, Ben is a great presenter.

In leu of another summary post (since I heard Dave typing away and he got to work before I did !) I posted some "action shots" of Ben working the room.

http://ajlcom.instantspot.com/blog/index.cfm/2007/...

There is just so much cool stuff coming up in 8, its pretty hard to pick one favorite thing.
 
posted 448 days ago
Add Comment Reply to: this comment OR this thread
 
Ronnie said:
 
Wow! I can't wait.
 
posted 448 days ago
Add Comment Reply to: this comment OR this thread
 
Andy Matthews said:
 
Is there any reason I can't unsubscribe from this thread via the URL in the email?
 
posted 448 days ago
Add Comment Reply to: this comment OR this thread
 
 
Andy, we just discovered a bug in the comment service and are correcting it as we speak. Until then I will remove you by hand.
 
posted 448 days ago
Add Comment Reply to: this comment OR this thread
 
 
OK, the multiple notification bug is fixed and non-InstantSpot members should be able to actually unsubscribe properly now with the link included in this email. Aren't we gracious??? :) Sorry for the email torrent.

@Andy- Aaron unsubscribed you by hand.
 
posted 448 days ago
Add Comment Reply to: this comment OR this thread
 
Elliott Sprehn said:
 
It seems like they should have used attributescollection not argumentscollections since they're exposed as attributes in custom tags, not arguments.

That's going to be a really big gotcha for beginners: "Why does passing argumentscollection change the attributes on my custom tag?!"

Functions take arguments, tags get attributes. Both in the scoping and in the docs.
 
posted 446 days ago
Add Comment Reply to: this comment OR this thread
 
Joshua Curtiss said:
 
Thanks for the awesome summary.
 
posted 446 days ago
Add Comment Reply to: this comment OR this thread
 
Jeb Simons said:
 
The cooler behavior is the other way around - reading a .xls file and displaying it in a Flex 2 datagrid:
http://www.jebshouse.com
 
posted 66 days ago
Add Comment Reply to: this comment OR this thread
 

Search

Dave at work...