By Peter Bell

Is Web Design FUC'D?

Find - Update - Create - Destroy

In an interesting summary of DHH's Railsconf Keynote, Jim Greer shows how David has been drinking the REST Koolaid. Given that put and delete http methods are not really implemented (I believe David implements them through a hacked form variable), I'm mildly interested and will make sure to learn more.

Much more interesting to me was his assertion to the effect of "everything on the web is CRUD". (I was just about to post something to that effect tonight anyway.) He goes on to suggest that if you have a need for more than those four verbs, what you really have is an unidentified noun. The example was that rather than closing (new verb) a ticket (noun), you'd create (standard verb) a ticket-closure (new noun).

I'm not sure that I agree, but I do believe that CRUD is hugely undervalued in web design. The frustration I have with great tools like MG:Unity and RoR is that they assume scaffolding is a way of creating a rough cut of an application. I truly believe that with a sufficiently rich set of domain specific languages for calculations, transformations, validations, imports, exports, reports, lists, views, forms, filters, searches and the like we can generate comprehensive web applications declaritively with little or no programming. To me, saying we can't generate 99% of an application without hand coding is simply an admission that we don't really know what we're doing.

Of course, with a statement like that, I really have to put up or shut up (as Joe quite reasonably suggested to a poster re: frameworks recently), so over the next few weeks I'll be posting ways we can take all of the CRUD/scaffolding standards from beans to lists and views and how we can increase the richness and expressiveness of our vocabulary to remove a bunch of the custom code from a lot of our applications.

It should be an interesting ride!

Comments
So much of what you have been writing recently on this topic really resonates with me. I have been working on a CF engine for the past several months that is bringing me closer to never having to code another form, view or view filter again. Basically, an entire application can be setup with just a page or two of launch code, plus one or more pages of properties. The engine will read table design specs from the database, and combine that info with the application setup property pages, and save that as an XML document and/or in a persistent CFC. All the interaction between forms and table views is performed via AJAX (CRUD, validation, multi-field table filtering, table sorting, paging).

At the end of the day, when you can write an entire application by just setting properties in a few structures, its a sweet reward. Plus, getting to that point is whole lot more satisfying than hand-coding your umpteenth form/record selection page set.
# Posted By Stuart MacAdam | 7/14/06 1:13 PM
Hi Stuart,

Glad you're enjoying the ride! Lots more specific ideas over the next few weeks as I get a chance to type them all up!

I actually have a CF5 app generator, so I don't have to write very much custom code these days (I was already at 85%+ generation using a combination of metadata and software product line parameterization back in 2004), but I'm having a great time re-writing from scratch in CF7 and seeing how application generation can be applied in an OO context.

Best Wishes,
Peter
# Posted By Peter Bell | 7/14/06 1:55 PM
BlogCFC was created by Raymond Camden. This blog is running version 5.005.