Emergent behavior in complex systems … or … the fun of debugging your code

Working on finally updating the day job’s web site. Expect it to go live in a day or less (less less!!!) Fixing some coding bits.

At the end of the day, we had to choose between complex site building bits that sorta kinda worked, and our bits around DragonFly, that really did work, but required some coding.

I didn’t want to write a website. Honest. I want there to be something akin to Powerpoint for web sites. WYSIWYG. Draw what I want. A long long time ago, SGI had such a tool (web 1.0) called Cosmo Create which did exactly this.

Alas, that product is lost, I have no Irix machine to work on, no license for Cosmocreate. And the world is web 2.0.

So looking over the site construction kits versus the hand coded … and we went hand coded.

Luckily it was simple. Modify a few things. Make stuff easier.

Sort of.

Right now I am struggling with the emergent behaviour one gets when combining multiple different technologies that sort of, but not quite, work together. Sometimes I feel I should get credit for being a psychologist for computer programs with multiple personality disorder … but that is another issue.

The MVC framework we are using integrates a nice form building tool. And it includes some nice path filtering / chaining capability.

Sadly, as I have discovered, they don’t play well together. There are set assumptions that each makes. Violate those assumptions, and whammo. Cores are dumped, and your browser is chock full of a several gigabyte stack trace that is just a sliver from being opaque.

Ok, slight exaggeration on that .. it is a verbose stack trace, and it takes time to grok what is going on.
When worlds, or in this case, paradigms collide, no code is safe.

Working around this now using other techniques. In this case, writing the (*&^*(R*&^%) form code by hand. Why? Same reason the web site was coded like this. Control over the output.

Sometimes these helpful things, aren’t. Especially if they carry baggage with them that has implicit assumptions built into the baggage.

Emergent behavior in this case isn’t a bug per say, more of a breaking of critical core assumptions, that the thing relys upon to do its magic.

Which I could have avoided had I rejected the “time saving” measures and done it by hand in the first place.


Viewed 8325 times by 1402 viewers