Thursday, December 16, 2010

Me Being Helpful

http://www.ogre3d.org/forums/viewtopic.php?f=5&t=61988

Sometimes if you want a job done, you have to do it yourself!

Monday, December 13, 2010

My Way or the Highway

I have a big problem when I work on open source. It becomes similar to writing a novel or a short story for me. I see my audience, those who will look at and judge my code. And in my urge to please them, I make one mistake over and over again: I try to make my code expect everything.

I've been over it many times with people, and I know every programming book on the planet will tell you that swiss-army-knife code is bad, but I still do it. Here's a good example:

I was making a Java program that was supposed to help build text adventure games from easy script files. This project got cancelled for two reasons: one, I realized that Inform is already better suited towards creative writers, and two, if you wanted to make a text game in a readable scripting language, you have options already. That being said, I never got past designing the thing. Because the design just kept getting bigger!

First you were just going to script the thing and it would run in a console. Then I decided on a front end. But to have a front end, I needed some standards, like... during dialog, maybe pop up people's faces when they talk automatically. Hmm, I thought, but what if someone doesn't want to do that? Oh, I know, I'll make a super generic front-end and people can subclass it.

Then... maybe people could just subclass it, build the Java binaries and drop them in a folder for me to automatically pick up and add to a menu. Oh! And while I'm at it, they need to be able to do ANYTHING with their front end, so the game should be able to communicate with it via back-and-forth string communication. Now we're talking! I should have stopped at "I'll make a front-end". And I won't even go into my scripting language and its ability to accept commands out of order (good gravy.)

This is a pitfall of programming. Wanting to please your audience is normal, but its hard to remember that you -are- your audience in this particular industry. In all honesty, I pick up code and don't judge it much at all until it annoys me. I just figure out how to make it do what I want and then I do it, and there's always a way when you have the will. So on my current project - the first open-source phase of a commercial mega-project - I'm going to try and force myself to be stricter. I think I may get something done this way.

Wednesday, December 1, 2010

Advice to the X-Brained

Intellectual growth should commence at birth and cease only at death” – Albert Einstein

One thing I bring to the table when I program is the creativity I inherited from my years of writing. When I apply the mentality from one to the other, beautiful things happen every time. If there is one thing I have learned from this, it is that the concepts of ‘left brain’ and ‘right brain’ are things we tell ourselves to justify limiting our knowledge.

If you look back across the pages of history to people like Leonardo De Vinci, what we call “renaissance men”, you don’t see so much of that restrictive psychological theory being applied to genius. Even Lewis Carol, author of the whimsical and extremely creative “Alice in Wonderland” was an absolute master of math and logic, which may in fact be precisely why he so beautifully twisted those concepts in his writing.

I hear it all the time. “Oh, I’m X-brained, I can’t understand that.” Sure you can. “It is beyond me.” No it’s not. Now, some people may be more intelligent than others due to biology, or their abilities may be stronger one way than another. But this doesn’t mean we have half a brain alive and half rotting in our skulls. Our minds are not fettered by anything more than an inherently flawed notion of ‘logic verus art’, which is probably the fault of some Freudian philosophy.

The truth is, creativity serves you well in science and math. Without it, you can only repeat other scientists and nothing will advance. But without logic, you cannot apply structure to your creativity and - let’s face it - arbitrary jumbles of words or sounds have no value (some disagree and produce such things, but will always be statistically non-existent.) So, don’t be afraid to bring it all together.