Monday, November 12

The Devil and David Webster

The Devil and David Webster

by Chris R. Lunt.

Heaven's donuts are jelly donuts. The blend of texture, from the cool, sweet ooze of the jelly, mined with tiny rasberry seeds, to the firm, spongy cake, so lightly encrusted in a thin glaze of sugar, that cracks and flakes as you gingerly tear off small pieces of delight, is certainly the greatest experience a humble man can afford.
I was eating a jelly donut when he first appeared in my office, smelling slightly of gunpowder. He was tall and gaunt, with deep-set eyes and crooked teeth, long, delicate fingers, and sloped shoulders. He wore a black Ozzy Osborne concert t-shirt, frayed black jeans, and dusty black high-tops, unlaced. He smiled at me in an ugly way. I put down my donut and glanced at my watch. 7:00 PM.
"You're David Webster."
I nodded.
"You're a programmer for Core."
I nodded again. Not only was I a programmer for Core--I was the best damn programmer this group had ever or would ever see. I suppose I should introduce myself. I am David Elijah Webster, master programmer. I'm not just blowing smoke here either. I'm the best damn programmer to come out of MIT since code was constructed one bit at a time. I can do it all: C, LISP, assembly--even the languages no self-respecting programmer would deign to look at. I can do it all in no time flat, with the most elegant of style. Code sprinkled with glistening semicolons and flowing rivers of indentation. Lesser programmers avert their eyes when I enter the room.
"They say you're the best, and I'm here to challenge you."
I sized this guy up again. He had the right shape. The pot-belly, the greasy hair, parted with percision. The fingers. And the funny smell.
I told him I didn't have time.
"I'll make it worth your while," he said. "I have something you might be interested in. Follow me."
I grabbed my box of donuts, and followed him down the hall and into the elevator. He pressed a button and the elevator descended into the basement. I'd never been in the basement before. For that matter, I didn't even recall that the building had a basement. Nonetheless, the elevator chimed, the doors opened, and we stepped out into a wide room that was entirely featureless. That is, except for the fog on the floor and two workstations that were set up, side by side. One of the workstations was mine. The other was a workstation like none other that I had seen before. It was magnificent.
It was matte black. More than an object, it looked like a hole in space. The monitor it sported was the biggest I had ever seen, and the keyboard was a flow of liquid lines, containing a field of keys of different sizes and shapes, packed in like cobblestones. The mouse floated above the table, and had no wire. Next to the computer was a box with a small chute coming out of one side, and a large red button on the top. The monitor was flanked by two gigantic speakers, and I could see a sub-woofer poking up out of the fog. It hummed. It steamed. It was the most beautiful computer I had ever seen.
"You approve," said the stranger.
I swallowed and said, "It is beyond description."
"It's a custom job. And it's yours. If," he said, "If you can beat me in a coding contest."
I looked at him incredulously. "What's in it for you?"
"I will have defeated the greatest coder in the world, and thus, I can claim that title. AND, I get to keep your immortal soul."
He smiled the ugly smile again.
Here was a dilemma. I was dealing with the Devil. There was no doubt about that. And he was no doubt very good. I am somewhat attached to my soul, but oh, the prizes. The glory. I can easily claim to be the best coder in the company, in the Bay Area, probably on the whole planet, but if I pulled this off, I will have shown myself to be the best coder in this entire theology! Vanity got the better part of me.
"What's the contest?" I asked.
I won't bore you with the details, but it was seriously ugly. Ugly in a way that makes the most arrogant of coders cringe and causes managers to pad development schedules into the next century. It had to run in any language, including the nasty chicken-scratch ones. It had to be backward compatible all the way to the ENIAC. And it had to run on Windows. I cringed.
But vanity won. I signed the forms, agreed on a deadline of midnight, and we sat down at our machines and started to code.
My watch said 8:00 PM, and I started warming up. Class definitions flew off my fingertips like throwing stars. Structures and declarations grew like perfect crystals, and I didn't even break a sweat. True to the task, I soon lost myself in an endless cycle of postulate, create, instantiate and verify. Bits grew to bytes, to K, to Megs, and finally to Gigs. By 11:00 PM it had come to that crucial point. With an hour to go, I had to put all the peices together. It wasn't going to be easy. It was going to take all the concentration I had.
Then I hit the first bug.
At first, I wasn't sure where it was coming from, but then I spotted it. It wasn't mine. It was bug in Windows. Even worse, it was a bug in Windows that stemmed from a timing problem with the system clock itself. I couldn't see a workaround. I was stymied. I genuflected and called Microsoft support.
"Hello, and welcome to the Microsoft help line. Please enter your 64 digit user identification number, followed by your 32 digit password."
While I frantically typed number after number, trying to navigate through layer upon layer of phone menu, I heard him pick up his phone and call a number.
"Hello, is Bill in? ... I don't care, wake him up ... Tell him it's Mr. Black ... Hey Bill, what's shakin'? Listen, I needed to know a workaround to one of your bugs ... Yes, I know what time it is ... Yes, I know ... Bill ... Bill! You remember our little deal? ... That's right. Now be a dear and give me that workaround ... Mm-hm ... Right ... Thank you, Bill. I'll be seeing you."
I was shocked. It was obviously pointless continuing my desperate journey through Microsoft's Help line. I needed immediate genius! I scarfed down a grape jelly. Sugar shock engulfed me, and my vision tunneled. I shuddered once, something clicked, and I determined the answer I needed--I could use the clock on the sound chip to get my timings.
I dove back into the code, and was quickly integrating modules when I hit bug number two. It was even uglier than the first. In fact, it was the ugliest bug I had ever seen. It was a problem with C. With the language itself. There's no way fix a broken hammer using the same hammer.
I wracked my brains. I clenched and grunted and sweated and thought and Thought and THOUGHT, but to no avail. Over my shoulder, I could hear Him chime in, "Bugger, isn't it? I remember putting that one in back when I was working on the Unix kernal. Did you really think there was a Kernighan and Ritchie? Rearrange the letters in their names and you'll discover an interesting anagram."
I ignored him and continued thinking. My mind went deeper and deeper into the problem at hand--my senses dulled, my breathing grew shallow. My eyes rolled back and sweat beaded on my forehead. Clumsily, blindly, my hand pawed it's way to the box on my desk, containing my last jelly donut. It raised slowly to my lips, and I bit.
Pounding waves of sugar induced euphoria washed through my mind. I felt my brain hum and crackle. My hands trembled, my body shuddered, and I began to type. I was a man possessed. Complex topographical math equations formed on my screen. Klien bottles and hypercubes locked neatly into place like pieces of a puzzle. Beyond my control, a complex mathematical world formed in my computer, with additional dimensions unimaginable.
I felt a small pop, and I came to. I looked at my screen. I had worked around the bug.
My watch read 11:45. Frantically I continued putting all the modules into place. Glancing for a moment at my rival, I could see I had him worried. He was typing furiously. Smoke poured from his ears, and flames licked around his collar.
Then I hit the third bug.
It was not so much a bug, it was a limit. I only had 4 Gigabytes of memory, and I had used it all. There wasn't a bit left. I had compressed data to a point so fine that it was in danger of collapsing into a black hole. I was storing memory in every conceivable way, including keeping a chain of sound waves running between the speaker and the microphone. There was no memory left to be had.
Frantic, I reached into my box of donuts, and my heart sank into my stomach when I realized that I had eaten the last one. I glanced at my watch, but it was too late. I was sunk. I had done the best that I could, and I had nothing more to give.
The Devil laughed, and grinning cruelly, he reached over to the box with the chute and the button. Remember the box? Slowly, firmly, his hand pressed the red button, and a jelly donut slid down the chute and onto the table.
My jaw dropped. "What...is...that?" I asked.
He languorously chewed as he replied, "The Box of Eternal Donuts."
"The Box of Eternal Donuts!?"
"Yes," he said.
"It never runs out?"
"Never," he said.
"It's mine if I win?!?!"
"If you can win, it is entirely yours," he replied, grinning cockily. My mind reeled. The Box of Eternal Donuts. The Box of Eternal Donuts! My eyes darted everywhere, my jaw hung slack, and my throat emitted strange animal-like noises. Anything. I would do anything to win! I just needed the smallest amount of memory. But where could I get it from? I glanced at my watch again, and a plan came into my mind. A beautiful, devious plan.
I went quickly upstairs and retrieved the emergency toolkit that we keep in the medicine cabinet. I ripped the case off my computer, and quickly scanned for the right connections. I pulled two wires, and unscrewed the back of my watch. The Devil's eyes widened and he desparately started coding again, but it was too late. I got the last of the memory I needed out of my watch, and pressed the ENTER key seconds before he did.
The watch burst into flames. Sparks flew from the disk drives and the monitor glowed and throbbed, finally melting into a puddle of glass. The computer exploded in a shower of sparks, and then there was absolute silence.
There was a pause, and both of us turned as the printer started, slowly emitting a single sheet that wafted gently into the out bin. I nonchalantly strolled over, and held up to the Devil's scowling face, a sheet imprinted with two words. "Hello World".
Nothing more needs to be told, other than, as I write this, I am sitting in front of my new computer, munching on what is undoubtedly the best jelly donut I have ever eaten.
(c) Copyright Chris Lunt May 1995

Sunday, July 29

Everyone can draw



Is something I trully believe, creativity is something that all humans can do. With that being said, I am a huge supporter of user created content, customization, and this brings me to some good news regarding Little Big Planet. It was recently announced that Little Big Planet will not just be "an obstacle course simulator". The enemies ranging from giants to little robots I'm confident that the creators of Kung-Fu will provide plenty of variations, but the question is how much of this will be sandbox and open to user manipulation.

Customizing the materials is fairly given, but what about the AI? Will the user be able to modify stats such as strength, hit points, and maybe even create our own creatures of evil.

Well suffice to say, I'm very excited. Could you imagine a story driven game with free episodic content created by users?

Friday, July 27

Heavenly Sword Demo

The demo starts off all too familiar. If you've followed gametrailers.com than this is nothing new, but it was extremely satisfying to move through the environment which might I add looks absolutely gorgeous. It hard to put my finger on it but be it the moving of the grass or the colors, it's something I could easily see myself being taken with no matter how many times I see it. So than I start swinging that big sword on my back, the first swing follows a delay and reminds me heavily of devil may cry style game-play. So with that in mind I start looking for a pattern and quickly begin stringing together quick swings followed by a heavy swing. Aside from the familiar there were several things that the game was doing that seemed unfamiliar, and unfamiliar to some is usually regarded as bad but let's not judge too soon. Heavenly Sword does not let you jump easily, in fact there is no jump button and so there is no easy way to escape from being gang banged by dozens of enemies. Now there is a roll button, but quite frankly it's nowhere near as enjoyable as skillfully leaping feet above them and quickly landing behind the front lines. So although at first I abused this feature; I don't like to cheat games. So I begin to look for a more cinematic solution. I find that blocking works pretty well, and quickly the game became very fun. My only real complaint is the fact the demo is un-satisfyingly short.

Saturday, July 14

Left 4 Dead

My top pick from this year's E3

Sunday, July 1

New toys, I hope they'll let me play

So lately I've been hearing rumors of things like Vista becoming the official OS for FullSail laptops, an upgrade to DirectX 10, and now the news of NaturalMotion coming I am trully thrilled. You can read more on this announcement at Gamasutra.com.

Emotions in Videos games



Another big promise from the great Peter Molyneux : )

Tuesday, June 19

Eve

New Additions

I don't know why I'm always up so late. I couldn't fall asleep earlier due to a headache the size of Texas, and now I'm sitting here making it worse by taking part in what probably caused it to begin with.
Today was pretty uneventful, I've been sick the past few days, so I've been trying to recuperate. I slept most of the early part of the day, but woke up not feeling any better so I made a rash decision to take two hours out of Arthur's lecture. This probably wasn't a very good idea to begin with because Arthur is very similar to Shane who doesn't waste a single breathe without spewing out something important or at least mildly interesting. Still the part of the lecture that I missed were dos commands, and basic batch file applications. The topic became quickly more complicated as we dowelled deeper into the subject with binary iostreams. The practical on the subject had me worrying as I spent the entire Lab trying to perfect myself on the subject. As far as I am aware, only one person got a 100% on this one (Dan), and I believe Taylor also did pretty well. Me, personally, well I think I did well. Basically speaking, I know the material covered very well now.

The practical was simple actually, it involved opening up a binary file, reading in the arguments passed to the program and than printing them back out. The part I missed involved reading back from the file. When I read in a string, I had missed the null terminator and had assumed that it would be copied over to the char* in my program. Well to make the long story short, I'll probably talk with Arthur and see if he can be a bit more lenient when it comes to grading these practicals, as there is a heavy penalty on each section that doesn't work even it was caused by a very minor error.

I also spoke with Arthur about maybe being able to put some of these practicals up on the blog for others to check out and try out themselves but he made it pretty clear that it wouldn't be a very good idea to distribute any FullSail related content. So I might try and replicate the examples if I have time using my own versions.

Well that about wraps up this update, last but not least I wanted to mention that this site might have a new writer. Payton Gannaway has been a supporter of StrayStudios for some time now and I asked if he would be interested in blogging here along with me. Hopefully he'll find the time to do so, and provide another point of view.

Sunday, June 17

Prepping for Resistance






Well give me time :D

Friday, June 15

FX Composer 2 Beta 3

This news came from Gamedev.net, but I simply must pass on the news. After diving back into Maya and 3D I'm starting to see the power and potential of a tool such as this. So this is simply a quick share. Go check it out here.

Thursday, June 14

Exceptions

Last weekend was really busy, I barly got a chance to play any video games between the XNA Tutorials, and the additional FullSail homework; more work was given on the conecutive Monday and Tuesday.

On Monday I was given a fairly rude awakening as it's a lot harder to keep up with normal classes when you don't get extra practice. The topics covered in PG3 were Templates and a review of Linked Lists. Here are a few intresting things I picked out from my notes.


Container – the usual name used for Linked Lists or objects that hold other objects.
Every virtual function is put into the virtual function table
Because the virtual keyword uses more memory we try to shun from it when it’s not appropriate
Templates need to be all inside the header file.
CCYA - Check Cover Your Ass. Check for copyright code.

and some useful VC++ shortcuts

CTRL K, S - surround your code with a snippet
CTRL K, K - Bookmark a section in the code
CTRL K, N - Move to the next bookmark


I did pretty well on the Practice Test for Physics, and things began to look up from there on. So that pretty much takes me to the today's topic, Exceptions. Although not a new topic for me, I had no idea how little I actually knew about the subject, but all's well that ends well as I aced the practical on the subject that night. This practicular practical was kind of fun to make and I'll remember to ask for permission to put it up for download. So that's it, I'll wrap up tonight and go to sleep with some more snippets from my notes.


  • Nesting classes

  • Nested Classes are not in any way related to one another

  • Access types are as default (classes::private)




  • Exceptions



  • throw

  • Syntax:                 throw variableName

  • The moment you throw, the stack unwinds

  • The stack unwinds until it reaches a catch

  • If there is no catch than the stack unwinds to main, after which it
    will call Terminate and then abort()



  • Exception Specification

  • throw(int it)

  • A way to better notify the catch what your trying to throw


  • http://blogs.msdn.com/larryosterman/archive/2006/03/22/558390.aspx

  • try



  • attempts, otherwise unwinds

  • catch (dataType)



  • if the dataType matches exactly, it’s as if the exception never happened

  • specifying a variable to dataType such as catch(dataType num) allows
    for manipulation of the thrown variable



  • catch(…) also known as ellipsis

  • will catch all dataTypes



  • can not be given a variable



  • throw bad_;



  • ex: throw bad_index(“Naughty subscript”);

  • #include <exception>



  • struct bad_index : public exception // : is a base list, public
    inheritance “is-a” an exception


  • bad_index(char const * const message) : exception(message)
    { }

  • .what()



  • by adding a (gcnew String(instance.what()) is a trick to go from managed
    to unmanaged exception handling.



  • finally()

  • will execute regardless of try / catch block

  • this will execute even after a re-      throw()

  • Only works in the focal



  • CTRL + F3



  • Set a keyword and search down



  • F3

  • Search Down Next

  • SHIFT + F3

  • Search Up Next

Monday, June 11

Learning is Exponantial

Everyday we learn a little about something, or else the day is wasted and we start tomorow no different than the day before. We learn unconsciously most of the time, and because of this, the knowladge passes through us like wind. Still human potential is boundless and when a person becomes self aware of his potential and the ability to learn, things become limitless.

In the past few days, to be more exact in the past week or so; I've learned so much about what can be done, that I have a hard time sleeping at night, just thinking about what else I could be doing this very instant.

Below I'd like to share some of the fastest knowladge I've managed to get my hands on this weekend.

XNATutorial.com
A collection of 30 videos covering both XNA and CSharp syntax. The final videos cover the Farseer Physics library which further pushes what can be done in very little time.

Although XNA is a fantastic tool for many, I'm not a fan of managed code, and although I plan to continue learning all that can be done as well as with time exploring the rest of the .Net framework.

What's to come:
http://playstation3-homebrew.blogspot.com/
http://ps2dev.org/ps3/Tutorials

Wednesday, June 6

Too Slow

I'm certain that I checked my e-mail at around 8pm eastern today and had no new e-mails to speak of. Than my outlook bin updates itself at 1:42 am and I get an e-mail from EA asking if I want to fill out a survey concerning C&C3. Having actually purchased the game I was thrilled to do so. Only to be told ~ "Sorry we got all the opinions we needed"

: <

Tuesday, June 5

736+ Pages in 28 Days

A few days ago I posted a picture of the two new text books that we received for June. One of those books is a Physics for Gaming book. FullSail doesn't expect us to completely memorize the text but we are expected to do as much as we can outside of class. This month's personal ambition of mine is to read it all. So below I've outlined the 736+ pages.

CH1 & CH2
Chapter 2 covers Basic Conepts which will mostly be review of Newton's laws, and forces. I expect this is where we'll spent at least three classes.

CH3
Rigid Body Motion, here comes the calculus.

CH4
Deformable Bodies for chapter 4 looks like the first heavy chapter as it covers basic spring systems, and the more complicated control point deformation among other things. I'm saving this for the weekend.

CH5
Physics Engines, obviously we're not going to be making one this semester and although this is a very math heavy book the chapter covers all the fundemental techniques, depending on what we learn in PG3 I might tinker a little if I can follow this far.

CH6
Chapter 6 is titled Physics and Shader Programs. Sounds simple enough, well here is an in depth preview.
- Pixel Shaders
- Skin and Bones Animation
- Rippling Ocean Waves
- Refraction
- Fresnel Reflectance
- Iridescence
Well I'm excited!

CH7 & CH8
This is the halfway point and dives back into Linear Algebra and Calculus. We will most likely dive deeper into the following chapters in class.

CH9
Numerical Methods as a name suggests will be a very boring and slow dive into concepts like "Higher-Order Taylor Methods" and other famous old people's methods of number tricks. Heck their is even a section called "Stiff Equations."

CH10
The last official chapter of the book is on Quaternions and rotation. I expect that we will cover this in depth near the final days of Physics at FullSail.

Hackers





Hackers is a fantastic movie that in a quirky way is kind of cool. I know that I'm one of the few that hasn't seen it, but I can see how some of my peers got into programming after seeing this movie, I know I would have.

Monday, June 4

June

Just picked up books for June classes.


I'm looking forward to this month a lot more than the previous. Although the skimpy C# book that we got hardly accounts as a text book, our instructor Arthur is someone to look forward to.

10 Reasons why I want a new Desktop

1. Unreal Tournament 3
2. Alan Wake
3. Hellgate London
4. Halo 3
5. Shadowrun
6. Left 4 Dead
7. BioShock
8. Crisis
9. Haze
10. Half-Life 3

Sunday, June 3

Playstation 3's Merit



A recent article on gameindustry.biz titled Striking Balance speaks about the possibilities of a price cut on the system and what if anything it could possible do to improve current sales.

I'm in agreement with Rob Fahey. In fact I really can't say it any better.

The final element which Sony needs to turn the PS3 around, sadly, is one which is in short supply. That element is time.
Time for high definition televisions to become more widespread. Time for games to finish development and woo audiences. Time for services like Singstar and Home to be launched and to mature. Time for Blu-Ray to establish itself, and become a desirable element of the console. Time for the arrogant-sounding and widely reported comments of executives like Ken Kutaragi and Jack Tretton to be forgotten by a vocal audience who don't forgive easily. Time for consumers to tire of their PS2s and look for the next big thing.
Time, sadly, is a commodity Sony may not have in great measure. The Wii continues to build a market - and Microsoft may have slowed down for now, but it would be foolish to assume that Redmond will never learn how to build mass-market games and services.


Having purchased the system only three months after release I am still a proud owner. I have confidence that the system can still produce games that will not be matched on the competition, thanks to the SPUs. I am confident that graphics are still a wowing factor when it comes to gaming. I'm also certain that things like @Home are not a gimicks, and that the internet will soon see a whole new level of interactivity. Modeling a character who looks like yourself than taking it into the virtual GAP store and trying on some thrifts on a virtual "me" is an appealing idea for anyone.

Wishing to contribute to the cause, I'll be one of the first to pick up the dev kit when it's available and create my own extention to called StrayStudios.

Friday, June 1

Authenticity

Nowadays I spend my time mostly preoccupied with FullSail. Outside of class & studies I find myself playing a ton of video games. I've played every game out on the PS3 so far, when I run out of PS3 games to pick up from gamefly I'll take a classic PS2 game for a spin. From rewarding experiences like God of War II to the disappointing Enchanted Arms I'm slowly getting a grip over what makes a great game. In my eyes it's the quality of the title, and how seriously it takes itself. A game should be no different than a quality book, or movie. A great form of entertainment does not mock itself.

Sunday, May 6

The Wheel Man



There have been several games that have recently caught my attention. The Wheel Man is one of them. The fantastic cinematics and the undeniably believable render of Vin Diesel makes this, slightly overused action star, as cool as ever.

Other games like the yet to be released Stranglehold, and Command and Conquer 3 are making me ever more curious about the possibilities of what can be done with the interactive media when combined with great camera angles, recognizable human faces, and novel like plots.