An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

Ben on Scorpio at BACFUG

April 26, 2007 ·

I meant to post this yesterday but got side-tracked, integrating a new design for the Scazu, Inc. website. We'll be launching the site in the summer and it's really coming along nicely. We're looking forward to moving it to Scorpio as soon as that is released, so that we can take advantage of many of the things Ben showed at BACFUG. Ben started out by saying that Scorpio has three broad themes: developer productivity, integration and management / administration. He also said that because this was the beginning of the tour, lots of other new features would be previewed at later User Group meetings to keep things fresh. What he showed us was enough to have most people cheering and desperately wanting to buy Scorpio NOW! So what did he cover?Developer Productivity First off was cfimage and some of the 50+ functions added for image manipulation. It's all based on JAI with "significant updates" by Adobe to improve quality and performance. He demo'd a number of the high-level actions on the tag as well as several low-level functions and it was indeed extremely fast and the images were very high quality. Whilst image manipulation isn't really my "thing", I was very impressed by the richness offered in terms of functionality: standard stuff like blur, crop, resize, rotate but also a full low-level drawing API that allows you to add lines and shapes as well as text overlaid on existing images. Next up was what is proving to be my favorite: AJAX integration. Ben said that Scorpio's AJAX features fall broadly into three categories: making CFC invocation easy, controls & widgets, application wizards. The latter is an AJAX version of the Flex "super wizard" for Eclipse that can create a full AJAX data admin application directly from your RDS data source. Very impressive but, as with the Flex wizard, Windows only because it relies on the same visual query builder (that folks know and love from HomeSite). On to the controls and CFC invocation... he showed a new autosuggest attribute on cfinput that takes a list of values and offers them in a drop-down as you type into the text field. Very sweet!
<cfinput type="text" name="breed" autosuggest="Bengal,Birman,British Shorthair,Burmese,Egyptian Mau,Exotic Shorthair,Persian" />
What makes it even sweeter is that you can have the auto-suggest mechanism automatically call a CFC method as you type, that returns an arbitrary list of values to display in a drop-down:
<cfinput type="text" name="breed" autosuggest="cfc:breeds.getList({cfautosuggestvalue})" />
As you type, this calls the getList() method on the breeds CFC to get a list of possible matches. Next up was cfgrid. Yup, that old favorite gets a complete makeover with an AJAX/HTML version coming in Scorpio that, again, allows direct binding to CFC method calls to access query objects and bind data:
<cfgrid name="articles" format="html" height="300" width="500" autowidth="true"
      bind="cfc:ajax.blogproxy.getEntries({cfgridpage}, {cfgridpagesize}, {cfgridsortcolumn}, {cfgridsortdirection})">

   <cfgridcolumn name="title" />
   <cfgridcolumn name="posted" />
   <cfgridcolumn name="body" display="false" />
As you might guess from this code fragment, the grid supports paging of records and sorting of columns. Ben showed off a couple of very slick examples that Ray Camden has built, including an MXNA reader and a Yahoo! traffic map, both in less than 40 lines of code! There are new tags to create a variety of AJAX-based layouts, floating draggable windows, menus etc etc. Behind the scenes, it uses the Yahoo! UI widgets but it's just incredibly simple with the new tags. cftextarea gets a rich text editor (using FCKeditor) - all you need to do is add richtext="yes" to the tag! And, yes, you can customize the toolbars displayed in the editor. Oh, and the grid can be editable, he said (although he did not show an example). To enable all of this, CFCs now have native JSON encoding and there are some new functions to serialize and deserialize between JSON and native ColdFusion objects. Ben also said that all of the AJAX controls fit into a coldfusion.* DOM object tree so you can easily navigate and cross-connect them. Finally in the AJAX section, he showed how you can add ?cfdebug and get an on-screen debugger showing all the requests made and the responses returned - the JSON traffic between the browser and the server. Very useful! For more detail on this AJAX integration, come to my talk at cf.Objective() next week or at CFUNITED 2007. More developer productivity stuff includes:
  • reading a file in, line by line, using <cfloop file="..." index="line"> - there are also a host of new file-related functions
  • reporting enhancements, including external CSS, conditional formatting and the ability to generate HTML or XML format reports
  • interfaces (don't get me started!)
  • the ability to pass tag attributes in a new argumentsCollection attribute - great for when you need to conditionally pass different attributes: now you just build a struct and pass them like this <cfmail argumentsCollection="#args#">
  • you can use cfqueryparam with cached queries
  • support for SFTP - Secure FTP
Integration He talked about .NET integration (which was previewed at MAX 2006). You can create and manipulate .NET classes and assemblies directly in ColdFusion. You can do this even on a non-Windows machine! Yes, if you're on Linux or Mac OS X, you can create .NET objects on a remote Windows server and manipulate it as if it were a native local object. Ben shows some examples of manipulating various .NET System classes. Then he showed the new Microsoft Exchange integration tags. These allow you to connect to an Exchange server to read and create calendar items, tasks etc. Using VMware to run a local copy of Windows Server 2003, he showed Scorpio reading and writing calendar data in just a few lines. He mentions this on his blog and refers readers back to a thread last year where he asked for feedback on this topic. Then he showed the integration with part of Acrobat Connect that allows Scorpio to generate Connect-style presentations dynamically directly within ColdFusion, including charts and data and a SWFs. Now your status presentations can be created automatically and contain the very latest data from your bugbase or whatever. The final section of his integration previews covered all the new PDF manipulation features: the ability to merge multiple PDF documents, even apply full DDX processing in simple, elegant ways; the ability to populate PDF forms and extract data from PDF forms. By way of demonstration, Ben showed a simple sales application that allowed him to write a cover letter (using the rich text area), select a watermark (e.g., "Confidential"), select which brochures to include (existing PDFs) and then generate a single PDF containing the rendered, watermarked cover letter (converted to PDF via cfdocument) followed by the brochure pages. Someone in the audience does a lot of work with mortgage applications and they said this would allow them to automate a lot of their process and save them days on each closing. Management and Administration The marquee feature here is the new server monitor, available from within the spiffy new CF Admin (which Ben quickly moved past so we didn't get too sidetracked!). The monitor is a slick Flex application that shows you a lot of what is going on inside your server in terms of requests, queries, memory usage and so on. It allows you to take complete snapshots of the server (for debugging badly behaving threads etc) and will allow you to kill individual threads and requests. It also allows the server to monitor and manage itself, detecting slow responses or even hung threads and either alerting your sysadmin or even taking action itself, such as automatically killing threads or running some code. Very cool! Ben pointed out that since this is a Flex app, all of the hooks are available as CFC APIs and therefore you can build any sort of monitoring / management tool you can imagine. Someone asked about Fusion-Reactor and SeeFusion and Ben said they'd been told about the Scorpio server monitor some time back and he hopes that they incorporate the new monitoring APIs into their tools to expose all of the Scorpio features within their products too, so users have a single UI. As he said, Adobe want people to use the APIs - the built-in Flex UI is useful but it's really an example of what can be built. Ben also mentioned a multiserver monitor with server status shown as red and green but he did not demo this. Other new features in this area:
  • multiple user accounts in the CF Admin and for RDS - so you can have fine-grained control over who has access to what!
  • RDS sandboxing - so each different RDS user has access to just selected parts of the file system or just selected datasources
  • per-application settings in Application.cfc - so each application can have its own mappings and custom tag paths (and possibly its own logging or debugging settings - he said that was still under discussion)
  • better platform support - including Intel-based Macs and JBoss as an officially supported application server
Ben noted that some of the features in Scorpio are things they wanted to fit into CFMX 7 but just didn't have time. However, he also noted that they have started planning Adobe ColdFusion 9 and have a release date for it already. So, not only is Scorpio going to be an absolutely killer release but the ColdFusion product has a great future with the subsequent release already on the schedule! As you can imagine from this long post, he talked for well over two hours and this isn't even all all of the new features (cf.Objective() has two keynotes about Scorpio so you can expect some big new features to be unveiled there!). Hopefully this article will get you all very excited about Scorpio!

Tags: bacfug · coldfusion

5 responses

  • 1 Dave Anderson // Apr 26, 2007 at 9:43 AM

    Yes - I'm psyched!

    Just one question: &quot;interfaces (don't get me started)&quot; -- can you elaborate on that a little? My interest is piqued!
  • 2 Sean Corfield // Apr 26, 2007 at 10:00 AM

    @Dave, sounds like you haven't been following my blog! :)

    Whilst I initially thought adding interfaces to ColdFusion might be a good idea - I logged the original ER back in the CFMX 6 days - I changed my mind a while back and have been advocating *against* interfaces (and other static typing features). ColdFusion is a great dynamically typed language. It doesn't need interfaces. Java is a statically typed language - it does need interfaces because of that. Ruby doesn't have interfaces, Smalltalk doesn't have interfaces. Search my blog for Ruby or Smalltalk and see what I've written on the subject. Also search for duck typing, dynamically typed and statically typed. Maybe I'll make a new category and update old posts to make this easier to find.
  • 3 Ken Dunnington // Apr 27, 2007 at 6:29 AM

    This is going to be an amazing release, I can't wait! I just wish I could get others in my company at least slightly interested in it. I hope the hosting companies offer it soon after release.
  • 4 Sean Corfield // Apr 27, 2007 at 8:40 AM

    @Ken, as I recall, some hosting companies ran free hosted trials of CFMX 7 before launch - I would expect something similar to happen for Scorpio.
  • 5 James, F.E. // Apr 27, 2007 at 8:50 AM

    Thanks for posting this Sean. Sounds like ColdFusion 8 is going to be a great release. I'm looking forward to Ben showing up next week to talk at the Houston CFUG.