Brandon's Blog

9/29/2007

Ramble On... But Is The Time Now?

The most difficult job in programming: Artificial Intelligence.  My definition: imparting adaptive intelligence to a machine designed for structured, computational rigor.

The second most difficult job in programming: Management Systems.  My definition: constructing a framework that encourages adaptive, intelligent users to conform to a system designed for processing by machines in turn designed for structured, computational rigor.

So, my thesis is that the top two jobs in computer programming are effectively polar opposites: (1) turning computers into peers with people, and (2) turning people into peers with computers.

I’ve been toying with Content Management Systems recently.  Like, what a perfect one would look like to me.  I can’t figure it, because I, as somewhat of a programmer, already have trained in myself the ability to think too much like a computer to judge the true worth of a system designed to enable non-initiates.  That’s not meant to be a measure of capacity or skill; it is in fact purely an examination of style.

To make sure I’m covering my bases here, a Content Management System (CMS) is like blog software, but generally construed to manage a site of static pages (like a standard website) in addition to or instead of a blog.  Some people call pure blog software a variety of CMS, and to them I say, “Phooey.”

Textpattern, which is what hosts this blog, is pretty much a blogging system for tech people.  I’m sure if this blog article were posted on a heavily trafficked site there would be objections to that, but it feels that way.  There’s a sense of seeing the database tables behind it, needing to understand them to get around in the system, needing to match vocabulary with the programmers.

I like it, personally, because it feels like something I would write, because I would stop before adopting the shiny translucent Web 2.0 icon set and the online help.  Wordpress is an example of a blog suite that did not stop until there was a gummy bear consistency smeared on everything.

But Wordpress works for nearly everybody.  I believe Movable Type enjoys this reputation as well.  I am testing Wordpress right now because it works for capital-P People.

Wordpress exists and thrives because a lot of People want to host blogs, for one reason or another, on a non-BlogSpot/non-LiveJournal/non-Whatever server.  They want great power without great responsibility, which one could argue is the whole point to slicked-over blogging/CMS software.

The difficulty lies with pure CMS software, as not very many People are that interested in administering a true website of any consequence and complexity, especially without saying some dirty words like “FrontPage” or “DreamWeaver,” which — to be perfectly frank — are simply WYSIWYG code generators with a vomit pipeline that happens to utilize FTP.

What you need to run a real site on a real, workable CMS (especially a site with several years worth of “real coding” before the big migration) is a CMS with some hair on its chest that puts a shirt on when the neighbors walk by.

The shirt being a very twisted metaphor for the Holy Grail of “Abstraction” — the conceptual cloaking/grooming of the mechanism between input and output.

So, the extreme of abstraction is, in fact, the dreaded WYSIWYG text editor, which works until it doesn’t… which, from experience, is measured to be about 80% of the time.  But it dang sure looks pretty in the demonstration you give everybody.

WYSIWYG (what you see is what you get) converts transcribed intentions into systematic representation.  One might call this a very brain-stem, low-level AI job.  It typically results in disaster, especially with web technology, which wasn’t designed for those trained in traditional print-style layouts (meaning anyone who has ever clicked “Save” in MS Word).

On the other side, of course, is pure HTML, which defeats the majority of the purpose for a CMS in the first place.

In the middle is generally thought of as meta-code, to make up a term.  Your Textile (featured in Cluster 2.0 and my input right now), your BBCode (curse its pseudo-usefulness), your XML-ish flavors, your ad-hoc translations of asterisks-to-bold, &c.

The problem with these is you generally spend longer teaching the user these codes than you would teaching them ad hoc HTML.  Plus, they can’t carry most of those skills to other systems, and the dang things are so limiting you will always find a way to need something beyond what they do.

So, we end up stacking systems on systems to give people what they need without overloading them with capabilities and confusions beyond their grasp or desire.

So, what does an ideal CMS look like?  Perhaps the better question is what an ideal CMS user looks like?  And they all look like hand-coding XHTML editor types to me.  We don’t have too many of those, though…