Bitscape's Lounge

Powered by:

Post-Apacolyptic Fest Report: Night 2

Started: Tuesday, January 4, 2000 04:49

Finished: Tuesday, January 4, 2000 06:16

Once again, the two festers embarked on a night of code, theory, caffeine, and fun. Bitscape, armed with the vim editor, perl interpretor, and diagramming software (don't laugh); bouncing with emacs and python. But the most glorious event was still ahead of them, as their minds made journies into the land of logic, structure, and object-oriented techniques. "The Source can be felt strongly here. So strongly, in fact, that a Jedi Master could sense it from a light year away."

-- Chronicles of the Sounce Beholden, Act 3, Scene 5

Yes indeed. For the second night, bouncing and I have fested a good fest. I spent most of the day yesterday contemplating how to rig the new layout engine for the ever-ambitious project of Bitscape's Lounge. The scripts I had been using to prototype tests were an order of magnitude better than the spaghetti.pl engine, but a great measure less than ideal. This became obvious when a few simple re-arrangements on the main page caused the html to break due to (easily fixed) bugs in the page drawing routines.

Since things are likely to get much more complex when I get to comments, CGI input screens, and other fun tasks, I knew such a flaky and easily broken design wouldn't do. With a general idea of what I wanted, but still vague on exactly how to put it all together, I spent some time reading various Slashdot articles, sleeping a little, eating a few snacks; all the while my subconscious processing the information. Truly a fest it is when one's dreams are populated with phantom algorithms and elusive data constructs.

So it was that after getting a good laugh over Judge Happy Boyle's funeral ("let me see your teeth") on the Ally McBeal rerun, I fired up dia and began toying with possible class inheritance scenarios. I must admit that -- as much as I despised the Systems Analysis and Design class -- I have found lately that playing with diagram relationships can be quite useful when it involves solving a truly genuine problem such as this.

After tinkering with it for a while, I got a fairly good idea of how I thought things could work, but it still wasn't perfectly clear, so I kept messing around with various attributes and methods. It got to the point where rearranging boxes and changing font sizes was not going to make things any better, and bouncing was having a field day laughing at my apparent adoption of the pointy haired ways.

This after I received a rather strange email from Jaeger, which was really a forwarded message from bouncing, except that he had misspelled my name in the email address, so it went to Jaeger instead of me. What was funny was that the content of the message was correcting me on the capitalization of bouncing's handle. What's the old rule on Slashdot about spelling, punctuation, and grammar flames? The person doing the correcting always makes a mechanical error; usually more egregious than the one they're pointing out. Gotta love the irony.

Back to our story. I finally decided enough was enough; printed the diagram as it was, and began throwing perl modules together left and right. Soon, I had a proof of concept; cause for celebration. But something was off. The parent attribute wasn't supposed to be in the Page module. Then I discovered the obvious: I had needlessly put a variable in one of my base classes which served absolutely no purpose anywhere. It looked good on the diagram, but I laughed out loud upon deleting line after line of completely useless bits of code spread through 5 files.

I concluded that diagramming can be nice for getting a general idea of how you want to structure things, but there is no substitute for looking at a an xterm full of real live flesh and blood functions, and knowing what needs to be done. I proceeded to flesh out the architecture, feeling my way through the methods, and ended up creating some of the most hideously beautiful enigmatic perl one-liners I've ever made in my life. And they worked.

Bouncing (I refuse to start a sentence with a small letter) and I then launched into a debate about the merits of having a computer language, such a perl, mirror the idiosyncracies of a human language such as English, in style, form, and syntax. He argued that human languages should really be made more consistent, and programming should certainly not stoop to such weaknesses. Less context-dependent meanings and variations in sentence structure would make it easier to learn and understand. I argued that literature and poetry would take a great loss from such constrictions. Making programming languages less rigid actually leads to it being more of an art form, hence more enjoyable.

We both continued to code in our respective languages until Bouncing retired, and I got the base functionality in my new modules working to satisfaction. I also did a little poking around on cpan, and was unable to find any modules with functionality similar to the ones I had written. Bouncing mentioned that there does exist a python project somewhere with similar goals, and an eerily alike class structure and naming conventions to what I came up with. Spooky.

I plan to go down for sleep shortly. Tomorrow, or later today, I'll work on more of the details and options in my modules, and might even submit them to cpan for all to use. If I don't discover someone else who has already done this. It's wierd, because virtually all my past programming projects have been things that are already available by someone who probably did it better than I did. Well, gotta go. Netscape has flooded my swap. bye.