Christmas is now upon us, and in that spirit, perhaps it would be best if
I looked back at everything that seemed to dominated my life last quarter,
and take some time out to reflect on everything...
Did I say everything? It's more like the only thing...
Well, it isn't too hard to name the one high-level thing, because I took
four CS classes this quarter. Yep, it was a CS quarter for me.
Indeed, I have to admit one thing that was a result of my Herculean load
these past few months -- the consistency of updating this thoughts page
has been less than impressive lately. But wait -- I can explain using my
newly-gained knowledge from those very classes (ironic, isn't it?) See, I
think that my personal scheduling algorithm is
a classic priority-based model, and my neglect of this page demonstrated
the concept known as starvation pretty well, where I get new tasks of
greater priority than updating this page into my priority queue, and thus
the updating never gets done. Maybe I should try implementing the STCF
(Shortest Time To Completion First) algorithm next quarter, which is of
course starvation-free. Ha!
(Did I ever mention, yep, it was a CS quarter for me?)
Another example: deadlock. My operating systems textbook defines it in
terms
of resource allocation graphs, cycles, and whatnot. Well, all fine and
dandy of course, but I've found that most of us like to have some examples
to de-abstractize everything. In that light, my
definition of deadlock would be:
Definition: Consider five brothers in FiCS where each of them will
not go to a certain
major dance unless the other four brothers go. Now that's deadlock!
Now of course, this is purely hypothetical and made up, right...? Any
resemblence to actual people, living or dead, places, or events is purely
coincidental and blah, blah, blah, yadda, yadda, yadda, =)
Another interesting anecdote worth sharing was that I was on the way back
from the
joint FiC at KCPC at the end of the quarter, and someone (I think
it was Dave Hong, as is usually the case) asked some question, one
thing led to another, and soo n the topic of our discussions
found a new direction - that of dreaming in languages other than English.
I think Keith mentioned that he occasionally dreamt in
Cantonese, and Val mentioned that she dreamt a few dreams
auf
Deutsch. Then I chime in, and mention that, hey, I've dreamt in C
before, and I think Dave Hong became more revulsed and wore a greater
expression of amazement and disbelief than I have seen in a LONG while.
Tense.
At this moment, the up-to-now quiet Bev mentioned that she did too, and
she did it "all the time!". At least I know I'm not alone now! Un-tense!
Fortunately, the languages in which I have dreamt I think are for the most
part restricted to
C. I don't think I've ever dreamt in C++, although I think I had a dream
in Java once. I have two claims: the other languages I've come across,
like LISP, ML, Tcl, Perl, assembler and various other esoterica, I think
are
just too weird to have a dream in. The other claim is that I myself will
present the first counterexample to claim number 1 sometime during my
academic career.
Another spice class that I took was
CS448:
Mathematical Methods
for Computer Graphics. Our final topic of the quarter was
differential
geometry, which is basically the study of the nature of curves, and
surfaces. The last lecture, we learned about the mathematics behind
caustics: if you look in a swimming pool, notice how there are shimmering
patterns of light across the bottom. Those are caustics. Anyways, the
surface of the water, being curved, is actually acting like a lens. At
each point of the surface, you can fit a sphere, and the center of that
sphere turns out to be the point where light is locally focused by that
surface. So, locally, the surface of the water is acting like a magnifying
glass to focus incoming light into brighter points, and if you know the
curvature of the surface of the water, you can calculate the areas where
light is focused the most (it turns out to be some type of surface), and
you can intersect that surface with a plane (such as the bottom of the
swimming pool) and voila - you've got your caustics. It's pretty dope
stuff.
Finally, CS221. The interesting thing was that class gave
me, for the first time since Phil 160A, a opportunity to pull
all-nighters with Mr. Chai. We learned about things as
path-finding, game-playing, decision theory, and other dope things.
The final topic, robotics was the spiciest, though.
Well, as you can probably guess, the past quarter didn't leave me with a
lot of free time, to either
fellowship with my friends, nor to indulge in my childhood pasttime of
curling in front of a computer and loading up some computer game to be
immersed in a virtual world for a few hours (or longer).
As I ponder this latter point, my mind flashes back to earlier,
more halcyon days: Although by no means my first entry into computer
gaming, I remember when
I first played Wing Commander I in eighth grade on my 386/16 in 16 color
EGA graphics, and I was just in awe by it! One year later, I got a
original 8-bit Sound Blaster sound card, and upgraded my system in time
for Ultima 6: The False Prophet, which supported 256-color VGA, and the
ability to use a mouse, instead of having to type commands in! Anyways,
the thing I remember most about that game was the music - basically, the
plotline involves two races, human and non-human gargoyle-like creatures
warring against one another. The anthem of the human race is this piece
which resembles the old British anthem a lot, and the anthem of the other
race is a haunting melody which turns out to be a harmonization of the
human anthem! This becomes very apparent in the ending where the two
races are at peace, and the two songs play simultaneously, each perfectly
complementing the other! It was a most interesting touch, and one that
you had to have a sound card for - since the PC
speaker can only play a note at a time, the effect is simply lost without
a adequate audio system.
My, long long ago it seems. Now all this dynamic change that has been
brought upon the personal computer industry -- while it might be a drain
on the bank account, it's also a perfect illustration of how the world of
computing is one that always seeks to push the technological envelope,
always expanding and never resting on its laurels. And what drives
this forward motion? Well, I dare say that most of it came across
became it was the games that were pushing the hardware to the limits.
You know how computers first came about because of the military, the
Manhattan Project to build the atomic bomb, and all that stuff? Well, a
lot of things these days
came across because
of us computer gamers! I think it's a pretty safe
bet to
say that 3-D acclerator cards, MMX Pentiums, and other didn't come about
because of Microsoft Word or Excel! This, believe it or not, is why I
wanted to go into CS in the first place. Yup, games rule. And sorry, but
if anyone comes up and says that, say, relational databases have sex
appeal - I think they're beyond help. =)
So, back to the future: one night I stopped by Keith and Paul's room. Now
their room, besides
having the distinctive air-freshner/colonge-induced Keithlee/Kisoo smell,
is always several degrees hotter than the other rooms in Bob, doubtlessly
due to the heat dissapated by the several kilowatts worth of electronic
gear that are in their room. Tonight, some of that equipment was being
put to good use:
Keith was playing none else but perhaps one of the top-threee anticpated
computer grames of 1997: Jedi Knight. Having been tantalized with the beta
versions being shown at E3 Atlanta this summer, my interest was
immediately piqued, and soon I was playing, being drawn into the 3-D world
woven by the designers at LucasArts Ltd., Lightsaber in hand and ready to
use the Force to prove my mettle against my other faceless adversaries
across the Internet.
Games aren't just restricted to us time-ripe undergrads. A few of us in
the graphics group are involved in some projects which
aren't exactly official research projects sponsored by faculty. For those
of you who think that grad students in CS just sit in front of their
computers and talk about celluar automata, genetic algorithms, or
something, I have but one bit of advice: to check out our
web page on the Stanford
Quake Project. But beyond that, one of the more esoteric projects
involves trying to construct
an interface to a Nintendo 64 through a computer - th plan is to build a
circuit that can be controlled by a computer and interface to the N64's
controller port, and also, to pipe the video output through a SGI O2's
real-time video digitizer to be transmitted over the net - the effect is
a shared, remotely-accessible Nintendo 64 that you can play over the
network. Now there's fodder for someone's Ph. D. thesis
topic!
Anyways, that was a bit tangential. Where were we - that's right, Quake.
The SGI version of Quake is a poster child for "spice." You think you've
played Quake, with your dinky little Pentiums, and $100 3-D accelerator
cards. No, until you've played it on a $400,000 Onyx^2 InfiniteReality
system with 4 195 MHz R10000 processors, YOU HAVE NOT BEEN PLAYING QUAKE.
So, my big question is - why don't they have more games for SGI
(Silicon Graphics) machines? In particular, since George Lucas seems to
be at the forefront of technology as his special effects group, Industrila
Light and Magic is concerned, why not carry this pioneering spirit of
pushing the technological envelope to his computer gaming division? Yep,
that's right folks:
Jedi Knight for SGI. Jedi Knight for SGI. Jedi Knight for
SGI.
Given SGI's recent spate of financial woes, personally I'm surprised that
SGI hasn't explored what seems like a new and viable market
segment: the niche of ultra-rich gamers
who want only the best and who have the globs of disposalbe income to
throw at their hobby. This I would say is the computer gaming
equivalent of people who drive Lamborghinis, Rolls-Royces, or Ferraris,
the people who buy Faroudja or Meridian components for their home
theatres, the people who fly the Concorde on their trips to Europe...
well, you get the picture.
Hey, the business of fun is serious stuff these days. And who cares about
supply and demand? Here's an area where I think the principles of
economics and business should temporarily take a back seat to just pure
fun, both from the player and yes, the programmer as well, and
establishing a beachead on new technical territory which will become
familiar ground in the years ahead for millions. The pioneering spirit of
computer gaming lives on more than ever, and here, us students at colleges
with our workstations are the fertile unexplored country,
people who are and will continue to be connoisseurs of
any game that developers might see fit to port to free their marvelous
software creations from the
technical shackles of the Wintel platform.
So may the extreme gamers raise up a new battle cry:
Jedi Knight for SGI!
Jedi Knight for
SGI!
Jedi Knight for SGI!
And to all a good (k)night...