y now, after reading about my adventures with code thus far, I think it might be obvious that my predilection for programming is more than a mere obsession. Eventually, my passion for figuring out better ways to manipulate pixels on a screen extended way beyond that and into the REAL WORLD.
This new journey started in high school; grade 12 to be exact. Being in a small town, my school didn't have much of a budget for cool equipment and technology to play with, so much of my continued learning stemmed from imaginative uses for my old, reliable Tandy 1000-HX. I thought of many ways to apply my experience with BASIC programming, while constantly trying to push beyond simple cartoon-like images on a screen.
Believe it or not, I also broke out of my shell around this time, and I even started DATING. This was a big deal, because, until then, I had been holding onto the misconception that being smart automatically made me unattractive. But then, I realized that almost everyone my age was dealing with their own fears about self-image, and that discovery was nothing short of empowering. I made many friends, and soon learned just how wrong I was about my appeal to women...which, oddly enough, leads me to my first attempt to control the world with my computer.
No, seriously! It is probably clear to you now that I have always been a creative person. So, drawing from that creativity, I was able to harness the light from the computer screen, sectioning it off to perform different functions. My goal was to write a computer program to activate and deactivate certain lights, amplifiers, and a fan, all perfectly timed to the super-romantic epic love ballad: Nirvana's Heart Shaped Box.
Yes: romantic... Leave me alone... We were depressing teenagers, and this song really spoke to us.
Yes: romantic... Leave me alone... We were depressing teenagers, and this song really spoke to us.
So I turned my parents' living room into a dance floor for two, I lit up the whole place with colour filters, and each light would be triggered by my program during specific parts of the song. The fan was queued to blow flower pedals over us during the part about angel's hair and baby's breath. It was truly a work of art, and my girlfriend thought so too :)
At the risk of sounding like a broken record, I must now remind you all that this was 1993. MP3 files were just being invented, and with my old computer, I didn't even have experience with WAV files, which were just invented 2 years before that, so synchronizing the music with my program was challenging to say the least.
Despite the success of this geeky project, it just wasn't enough. I wanted to learn more. I needed to find out how to integrate computers with external circuitry. I wanted a program that could "talk" directly to device's own circuitry. More importantly, I wanted to learn how to design and create my own circuits that would do whatever I wanted, so as not to rely on purchased devices that might only do SOME of my bidding. The idea of settling was just not acceptable. I tried figuring this stuff out by myself with some books from the library, but it was all out of my league. I needed help.
It was soon after this when I enrolled at DeVry, and I was scheduled to start immediately after my high school graduation. At the time, Devry was on its way to becoming a very credible school, but alas, it never did develop the good reputation it had in the United States. No big deal, though, because I learned a lot while I was there. I studied how to design and build both analog and digital circuits, I learned all about control systems, micro-controllers and step motors, and most importantly, I learned another programming language: C++.
Everything came together for me when I handed in my final project. I was clearly ambitious in my choice for what to build, which was a true representation of my nerdiness: a robotic arm that could play chess. My project adviser was convinced I was biting off more than I could chew, and despite his assertion that I wouldn't likely finish it, he allowed me to try. Well, he was right. There wasn't enough time for such a huge project, but he taught me a lot about time management, and I still got an A! Essentially, what I accomplished was the following:- the development of a sensor grid for my chess board, which made it possible to see which pieces are moved and where
- a computer program that was able to track each piece, and know which it was, would know if it's a valid move or not
- the robot's "hand" which used the aperture of a camera lens to enclose around the chess piece and pick it up
- the computer function that on command would enclose, and then when I told it to would let go again
I didn't have time to build an actual arm for it, and as a result, didn't get to write the program to calculate the angles and move that arm in order to place the "hand" over the desired chess piece. Looking back, I'm quite impressed by how much I DID finish with such a tight deadline. At the time, I thought he was just being super nice, but my project adviser understood how much work went into it, and he especially appreciated how much I LEARNED from the attempt.
My experience with all of this was like a drug, making me desperate for my next fix. Every hit needed to be stronger than the one before it. I needed to learn more, and I needed to ACCOMPLISH more. This feeling would ultimately lead to the start of my career, which was unorthodox to say the least.
There I was. It was still 1989, and I was no less socially awkward than when I started, so not surprisingly, I was kicking ass in math class. With every passing day, I would learn more and more about coordinates, equations, and the algebra used to make lines of various types. So inevitably, I went back to re-read that manual for
Now, anyone who knows me can tell you just how much of a nerd I am (and always have been), so it shouldn't be a surprise that I was a member of the Star Trek fan club back then. With this membership I received many amazing perks, including a monthly magazine. Having about half a dozen issues by that time gave me plenty of pictures to trace, which is exactly what I proceeded to do. I searched them all looking for the perfect side view of the Enterprise D. After all, I needed it facing left or right if I were to make it "fly" across the screen. A local craft store in my home town sold me some
With the boring segment out of the way, I could finally get back to business. It was time to make use of that awesome line-drawing function, which I added to a loop that would simply go through each set of coordinates in the array, completing a line and starting a new one when needed. I saved my program, and was super excited to watch the computer create each line until it completed an exact copy of my traced Enterprise D. It was BEAUTIFUL, but the pride I felt was short-lived. It occurred to me that, as amazing as this powerhouse of circuitry was, my computer was slow enough to be a problem. The fact that I was watching it SLOWLY draw the ship meant that I couldn't instantly make it redraw the ship two pixels away to give it the illusion of movement. That's how I did it in my old ASCII Art based game, but it was apparent that I needed to rethink that part.
Finally! The hard part was over. All I had left to do was...the exact same process for pictures of asteroids, Romulan warbirds, the Enterprise Bridge, and a Borg cube, make the ships "fly" by making random pixels (stars) move across the screen, actually break up the ship into pieces so that the stars that were flying past wouldn't disappear behind the huge rectangle that I used with the PUT command (a consequence of the command itself), make it possible to "steer" the Enterprise with the up and down arrows on the keyboard, make it possible to turn on shields, shoot phasers, fire torpedoes, and, oh ya, show each level and scene to progress the game.
Nothing much. As it turned out, I couldn't find a decent picture of the Borg cube, which was CRITICAL to my game's plot. I was rescued by my older sister, Yvonne. Being quite the talented artist, she agreed to draw one for me, and it looked really impressive. It was the one aspect of my game that looked cool BECAUSE OF (not despite) my 
