Welcome to the first (of many) "Best of ColdFusion 9" entry reviews. The first entry is spreadEdit by Sam Farmer. This entry was reviewed by Paul Hastings. (I've added a few notes as well.)

At a basic level, spreadEdit is an Excel spreadsheet editor. However it goes beyond just simple editing. It makes use of ORM and the VFS in a way that I didn't think was possible. Each spreadsheet is parsed into an entity CFC stored in the VFS. These virtual CFCs then become database tables. I'm not sure what's going to happen after my server restarts, but it's a unique approach and it's cool to see it in action. (I literally went back and forth looking at the code and shaking my head in disbelief.)

Paul listed out what he liked about the application:

  • ease of setup making use of the gifts God gave cf9 ;-) it would have setup the derby DB automagically (if it had actually worked on our ubuntu server, see below)
  • nice wizardy approach
  • excel file upload page is nice & clean, uses new cf9 "web 2.0"-ish bits
  • data entry grids also used new cf9 "web 2.0"-ish bits
  • liked the display of spreadhseet metadata for uploaded files (nit pick that maybe shouldn't strip timezone info from date formats, but of course i would nit pick that), pretty thoughtful
  • liked that it uses the VFS for temp model/view/etc storage, nice touch & illustrates one use case (that i hadn't thought about before)
  • liked the bits to keep track of the VFS usage, though the graph was kind of crappy looking (the more flex/AIR we do, the more i notice this sort of thing)
  • use of ORM
  • use of built-in derby db
  • threw unicode spreadsheets at it & more or less worked (one rather large & complex one brought it crashing down though, not sure if it's a bug in cf9 or the app's not accounting for embedded quotes, "weird" char stuff
  • kudos for still using cf tags (i actually don't like to use them even for output anymore but gotta give him credit for going old school ;-) [Ray's Note: Paul is - I assume, talking about Sam's use of custom tags for layout. I've got a nit on that below.]
  • use of new style CFC syntax

So Paul definitely like the setup wizard, and I agree, it's pretty dang cool.

My only complaint here is that my CF Admin doesn't have a password and the application demanded I enter one. (I put something in bogus and it worked fine.)

Paul also complimented the "web 2" stuff, and they do look pretty snazzy here. Here is an example of the multi-file uploader:

and another example of the grid editor:

Paul liked the VFS lister, but not the chart, which I thought was fine.

As to what Paul didn't like...

  • linux - adminapi NOT adminAPI [Ray: Case is a bitch, isn't it? ;) You will never convince case sensitivity for files is a good thing!]
  • linux -
    • security is usually "fiercer" (or you know, better) than windows
    • the app needs more than simply copying to the web server to actually work, gotta have correct permissions on the right dir, blah, blah, blah
    • because of that, the step 2 bits never actually get uploaded & the write spreadsheet bits failed
  • "any more files" popup constantly hidden behind file datagrid, kind of a big UI no-no (another of the many reasons why we usually prefer flex front ends these days, also if flex UI maybe a nice sparkline for the VFS tracking instead of that crappy looking pie chart ;-)
  • no clean way back after viewing file on VFS, just "save" instead of a "cancel" button as well
  • not enough error trapping for things like blank metadata (eg no "last edited" bits for brand new spreadsheet)
  • didn't use the new CFC syntax everywhere

Some of my own comments in response to Paul - first off - the file permissions is kind of a big deal, especially for folks who write code for multiple operating systems. You really do have to be careful when working with the file system. Hopefully the VFS will help with that... but let me point out something I think Sam missed. He makes use of a VFS folder called "/se". What if some other application uses the same folder? One thing I really wish VFS would do differently is work at the Application RAM level, not the Server level. If I ever decided to make use of VFS for BlogCFC for example, I'd probably use a root directory based on a UUID, just to ensure I was in a unique server space.

Also - I'll nit that I don't like the fact that Sam uses custom tags for layout but has two separate files:

<cf_header title="Credits"> ... stuff here ... <cf_footer>

It may be a minor thing, but I'm much more a fan of wrapper tags:

<cf_layout title="Credits"> ... stuff here ... </cf_layout>

Ok folks - you can download the bits below. It's been a while since my last contest, but I want to remind folks of something. The point here is to play and share. Please be polite. I know Sam wants feedback, but be constructive. Thanks Sam!

Download attached file.