May 13, 2009

reinventing the wheel...again...and again...

Congratulations on the new!  I know it was tons of hard work.

 And that's why I'm blogging this thought.  How many upgrades and migrations have you done in your career?  Too many, if you're like me.  Seldom is there any automatic migration script that can just handle everything, esp. when big monopoly-like companies are involved.  (You know who.)

The only time I've seen a good migration is when the company that wrote the new program gets some money if you switch.  Then, a good migration path is a selling point.

 So, back to the site.  It's written in Joomla, I understand.  Cool.  I don't honestly care, except that I'm learning django right now.  And what happens if we need to move our projects from django to Joomla, or to any other framework?  Lots of rewriting.  Lots of reinventing the wheel.

 Sure, it's not as big a wheel as it was, back in the GUI days.  HTML, CSS, Javascript are all pretty standard.  Still, we write these little wheels, and have to reinvent them whenever we change language, database, OS (oops! that server wasn't running linux?!), etc.  When are we going to get smarter?

 I propose that we do one very simple thing:

Be explicit.

 If you're programming in a language, then please embed a comment to what language it is, the version, and--most importantly--where I can find the language specification and a reference implementation of the compiler/interpreter.  Better yet, provide a BNF notation and an explanation of the Abstract Syntax Tree.  (What?  You're using a language that's not open, or isn't well-documented? Don't make me come over there!)

 If you're encoding data in XML, PLEASE, PLEASE provide a reference to the DTD or Schema definition.  IHMO, that silly URL in XML that tells what namespace it's in should actually reference a valid document.  Most of the time, if you try to open that URL, you get nothing.  (This was just bad design on the side of the XML designers.)

 What I want is this: Perfect parsers.  The only way that's going to happen is for the code and data to be explicitly defined.  (And, yes, you can do this with dynamic languages.)  But once you have perfect parsers, voila!--you have much easier time migrating data and code.  In fact, maybe it wouldn't be that hard to write migration programs.  But that's another blog entry...

Click Here!