I am currently a Computer Science major at Stony Brook University, in New York,
in my third year of study. I have been working with computers for many years,
and am quite skilled in doing so. I began programming at an early age on an old
Commodore 64 from an old VIC-20 book; I continued doing so on a basic level
until about 9th grade; all I'd worked with was BASIC, and then QBasic, and I
never really had the opportunity to advance beyond that. When in 9th grade,
however, in Computer Science 1, I began a metamorphosis of sorts, and I began
to unleash at least part of my potential. I quickly became far more advanced in
QBasic, and created, relatively speaking, some very impressive and powerful
programs with the simple language.
My focus had shifted more towards web development until that point. I was into
Star Wars, and had begun experimenting with creating web pages with Creative
Writer; I quickly tired of its limitations, and began to learn raw HTML.
I was into James Bond heavily after GoldenEye for Nintendo 64 came out, and my
friend and I used to play around pretending we were spies. I created a whole
site with our exploits, replete with password protection (handled by
JavaScript), embedded movies and audio, background music, image maps,
rollovers, a JavaScript countdown to "The World is Not Enough", and so on, all
of which was coded by hand. I still prefer the simple and elegant HTML
resulting from hand coding, as opposed to the horrendous, complicated nonsense
produced by WYSIWYG editors. I also created a whole program in QBasic, of which
I am still particularly proud. It contained simple 3D animation, password
protection, user logins (with passwords), sending messages between users, movie
playback (movies I had recorded from the GoldenEye game onto the computer),
music (I figured out the James Bond theme by ear, and included that in the
program); overall, a pretty advanced program. After all, I was only about 13,
and everything I learned I learned by just figuring out.
I watched the web grow up from simple HTML to including lots of scripting,
Flash, and dynamic sites, and grew with it for a while. As things became more
complex, however, with sites relying on server-side resources that I did not
possess (like ASP), and with the amazing things being done with Flash, it
became far too time-consuming for me to pursue it all, as I had.
I learned to rely on simplicity and elegance rather than flashiness. One thing
that I think is common in all my work is that I am adept at fitting a great
deal of information into an area, doing so both neatly and elegantly. I am sure
everyone has seen their share of GUI nightmares and hideous color schemes, but
I ensure that I avoid such situations in my work.
As my friend and I were learning Spanish, back in 8th grade, we quickly were
getting bored with the slow pace of learning (I enjoy, and seem to have an
aptitude for learning languages—I took Russian in the fall), and the
mundane conversations and sentences. We began to be creative with our work, to
the point of seeming craziness. We would say silly and ridiculous (but still
making sense grammatically) things, like "My bear went shopping; he bought some
clothes and ate the cashier." Eventually, each of us settled on a specific
animal and basically pitted them against each other; he picked goats and I
picked turtles, the point of this being that he made a simple angelfire
website, proclaiming that the goats would win the war against the turtles. Not
one to be outdone, I did the same with the turtles beating the goats. As time
went on the site evolved into more of a showcase for me and my creations,
(similar to this) before angelfire riddled the site with so many banner ads and
pop-ups that it began destroying the underlying functionality of my site (which
remained simple and elegant, with some slight DHTML tricks). I maintained that
website from 8th grade until about 11th, when I stopped coming up with content
to place on it.
I had also become involved with 3D modeling, at least rudimentarily so. I began
using a program called bCAD, originally just to render 3D models of Star Wars
ships that I would download. I went through the tutorials and had a decent
grasp of what I was doing, but the program was too limited to create very much.
I did create some simple scenes and animations, and actually did create a model
of an engineering project in 12th grade (one of the pictures can be viewed
here), before discovering 3D studio max, which was far more powerful,
but far more complex, and required a large investment of time to learn.
In 9th grade, after Christmas, when I got Tiberian Sun, I also started with
game modification. I learned the ins and outs of what was editable with
Tiberian Sun, and made one of the most powerful (but unfortunately,
underappreciated—I never could get publicity for it) mods for the game;
there were many crude mods which simply unlocked some hidden units and made
more powerful weapons, but I went beyond that; I tried to ensure balance, I
improved the AI, making it so powerful that I could barely beat it sometimes,
and I even figured out how to utilize some of the hacks the programmers used to
get things to work in order to bring about things like new cluster missiles.
Specifically, any weapons that were launched in the second stage of the cluster
missile needed to be present as weapons on a dummy unit listed in the
configuration file. Most people merely made the dummy unit playable.
Unfortunately the game itself was really only mediocre, and it was quickly
forgotten. I did the same once Red Alert 2 came out, but unfortunately I could
never bring about publicity for that either.
I soon became involved more with computers themselves, learning about hardware,
and becoming a Windows guru. I was stuck on the family PC, a Pentium 233 with
96 MB of RAM for a while, running on Windows 95. We had upgraded the RAM to 96
MB, which was an almost obscene amount in that era, with the average PC having
32 MB and 64 MB considered high-end, but it quickly became insufficient,
particularly with the 3D work which would take many hours to render (not as
though that fact is any different 3 GHz later). I did upgrade to a Voodoo3,
which was a revolutionary upgrade for me at the time, and I attempted to
upgrade the soundcard and add a CD burner. The Voodoo3 worked fine, but I ended
up having to return the soundcard and CD burner since both caused many problems
with the system. I did have success with a later CD burner, a 12x Plextor that
finds its home in my current PC today (at least six or seven years later).
Incidentally, I also have a Microsoft Sidewinder Precision Pro joystick of the
same era that I still use. I could not upgrade anything else without replacing
everything, and became frustrated with Compaq's stifling design. I bought my
own computer, a Dell, in 10th grade; my parents fronted me the money, which I
paid back as I got a summer job. It had a Pentium 4 1.4 GHz processor with 256
MB of RAM and (at that time) an enormous 60GB of storage. Unfortunately, it was
loaded with the wretched Windows Me. I had to skimp a bit elsewhere, since the
cost was over $2000, with almost a quarter of that going towards a 19"
Trinitron monitor. Buying that monitor was possibly the best decision I ever
made. It was a gorgeous big screen display, and one of the elite few (at the
time) that was flat, aperture grille, and could hit 1600x1200 at 85Hz. I have
terribly sensitive eyes and cannot tolerate anything lower than that without
getting eyestrain, but could not live with a low resolution desktop. I only
recently replaced it with a 20" widescreen flat-panel, and solely because LCDs
are easier on the eyes. In 10th grade, I began to learn C++ in school, though
sadly only for console programs. I quickly became enamored with its power and
elegance compared to BASIC, and I began to run circles around everyone with my
tricky, highly compact code. Instead of things like:
if(x > 5)
x = x + 10;
I would use tricks of Boolean operation; since zero is false, I realized I
could get rid of the conditional statement, and simply add 10, multiplied by
the result of the comparison. If the comparison was false, I would end up
adding zero, since zero (the conditional) times 10 would still be zero; if not,
I would add the 10 since it would evaluate to one (true), thus:
x += 10 * (x > 5);
(At the time I did not know of ?: e.g. (x>5) ? x+=10 – such is the
peril of being taught on only an introductory level). I used many similar
tricks, such as "toggling" between two elements in an array for my blackjack
program by using a Boolean variable for the index, and then switching between 0
and 1 by using i = !i in the loop. I attempted to learn full-fledged Windows
application programming, but I could find no suitable material with which to
teach myself. I also took Computer Graphics and became familiar with Photoshop
and Illustrator. I created many works, some of which I really liked. Some of
them you can see in the gallery.
In 11th grade, I took AP Computer Science with C++. It was supposed to be a
two-year sequence, with the "A" exam being studied the first year, and the "AB"
exam the second. I breezed through and decided to skip the "A" and take the
"AB" instead, and aced it. There was no curriculum after that, so unfortunately
I stagnated a bit.
The Dell PC served me well enough, and allowed me to upgrade much, until that
summer (between 11th and 12th) when the Compaq finally gave out. Seizing the
opportunity, I offered to give my PC to my family, in return for their paying
half the costs of my building a new one. They agreed, and so I constructed a
fine system, with an Athlon XP 2000+ with 512 MB of RAM. I kept the hard drive,
monitor, DVD-ROM and my trusty Plextor, and the Dell got those parts out of the
Compaq. This system served me well in my endeavors. I had upgraded to XP the
moment it arrived, since I had been well read in its advantages. I had shied
away from 2000, since I was an avid gamer and had read of trouble with 2000 and
gaming; those troubles were ironed out but it was not long before XP was
released anyway, so that is what I ended up using. By the time I was learned
enough to know of Linux, I had already ditched Me and migrated to XP anyway, so
I didn't really see the point, since anything I needed to do I could do with
aplomb on Windows anyway, and by skill with Windows keeps me unaffected by the
woes that are causing many to jump ship.
In 12th grade, the Computer Graphics class finally obtained 3D Studio, which
had been promised for years. I decided to take it in the spring, as an
independent study. I went through the tutorials and obtained a firm grasp on
it, creating some impressive animations. I modeled another of my engineering
class projects (an egg drop apparatus; you can see a picture
here and the animation here), depicting its
operation as it would fall from the sky, its wings would open, and then I
simply had it explode as it hit the ground. Unfortunately the apparatus itself
was a monumental failure, nearly fulfilling the animation's explosion, as it
was so top heavy that it flipped over on the way down and smashed into the
ground unceremoniously (miraculously, the egg survived somehow). I did not
really care about that though, because the computer model was damn impressive.
I had also decided to work on a nifty space animation; it evolved from a laser
coming from off-screen and destroying a planet, to a monstrous thing with the
Death Star destroying a planet, a shockwave knocking ships out of the way, and
then the Death Star exploding. Unfortunately, my visions of its evolution
stalled as it overwhelmed my computers ability to model and render it. You can
see it here.
Also during that year, a local photographer hired me to create a web site; the
site is here: http://www.glennedwardsphoto.com.
I had not undertaken any sort of website like this before; I knew some VBScript
so decided to write it in ASP (mainly because of the cheap hosting available).
Rather than using database programming (such as SQL) which, again, would have
required more expensive hosting, I elected to store the data in text files that
could be edited in order to change the information. (You can see I enjoy the
dark blue on blue color scheme; but it is not without merit–is this not
easier on the eyes than some of the flashier abominations you have seen?)
In May of that year, I made the error of purchasing an All-in-Wonder Radeon
9700 Pro. The All-in-Wonder turns your PC into a TV/VCR, and I had longed to do
so for a while. It would have been great, if only it worked right. The card
refused to work correctly at all in that PC; it would not POST half the time,
and when it did work, sometimes Windows would end up re-detecting it as a 9500
Pro. I thought that perhaps my power supply was not quite up to the task, as
the exact problem with turning on the PC was quite odd and hinted towards
power. What would normally happen with that PC is that after power was
disconnected and plugged in, and the power supply was turned on (but before
pushing the power button to actually start the PC), the power light would be
dimmed, but indicated that it was still connected to power. Once you turned the
system on, the power light would go on, and stay on (even with the system off)
as long as it was connected to power. Odd behavior, yes, but what would happen
when I attempted to start the system with the Radeon installed was that the
system would start, but the power light would remain dim, and the screen would
never come on. If I disconnected, say, the optical drives, and started the
system, it would start, and the power light would come on full brightness and
stay that way. I could then turn off the system but leave it plugged in,
reconnect the optical drives, and start the system again, with the power light
at full brightness. The system would then actually start fine (except for the
aforementioned issue with being detected as a 9500). This, though very odd, was
repeatable. I thought perhaps the power supply was inadequate, and replaced the
350 watt with a 430 watt (both by Antec, so it was not as though I was using
shoddy PSUs, which is a common cause of malfunctions, along with cheap shoddy
RAM). Naturally, the problem persisted, and not content with simply accepting
the incompatibility and returning the video card, I thought perhaps the issue
was an effect of my overclocking. I had previously unlocked the processor,
increasing its FSB to 166 MHz to match the RAM speed (I was on a KT333), and
boosted the 2000 up to a 2100. I was concerned that perhaps I had damaged
something, or whatever.
So I overhauled the entire system. I moved to a 2.4 GHz Pentium 4 with
hyperthreading and 1 GB of RAM with much of my previous hardware. I went with
an Intel board this time (my previous was an Abit) so that although I would not
be able to overclock, I would be guaranteed of its stability. I was wrong. The
awful media software that came with the video card had an unfortunate habit of
completely locking the system, something that was supposed to be a thing of the
past with XP. Nevertheless, ATI's software managed to pull it off anyway,
driving me to amazing frustration. I had thought that ATI had finally gotten
their software act together, after overhauling their laughable drivers and
releasing the excellent Catalyst drivers, but old habits die hard, evidently.
ATI said that they had had issues with Corsair RAM, Intel boards, and the 9700.
Naturally, none of that helped me (this sort of incompatibility is why I had
shied from building my own PC in the past, and had instead bought the Dell). To
make an increasingly long story short, another problem came up: after a while
of leaving my PC on, it would lock up and crash. I RMAd the board twice. The
first replaced card also had the same issue. After reading of many instances of
the problem occurring with the 875P chipset and the 9700, I RMAd the card again
and requested that I be sent a 9800. That fixed the problem. Of course, when I
was using my GeForce 3 while the 9700 was being replaced, the system ran
perfectly for 12 days straight. The 9800 is much less problematic, but not
without issue. If TV-On-Demand is enabled (this lets you pause TV and such),
any sort of multitasking, such as checking your mail during a commercial, will
result in the system locking and crashing. When it came time to upgrade again,
I made the seemingly strange decision to purchase an ATI All-In-Wonder X800XT.
It was certainly not what I had in mind as I was shopping for a new card given
my prior experiences. However, with rebates, the price was below any comparable
card without TV tuning capabilities; thus, even if the TV capabilities
were as broken as with the 9800 and I never used them, it would still be less
expensive. (As it turns out, they are still broken, but not nearly as bad as
with the 9800.)
In any case, after the summer, I began my college career at Stony Brook
University. In spite of my high-school achievements, I was summarily rejected
from Harvard, Brown, Princeton, and MIT. Cornell waitlisted me, but it was moot
anyway, since the financial aid package from two schools of the same cost
level, RPI and Wentworth Institute of Technology, offered me zero financial
aid, leaving me to pay essentially the entire stratospheric cost on my own.
Presuming that Cornell would do similarly, and because Stony Brook, after
scholarships, costs me about $4,000 per year, I elected not to bother with the
waitlist at Cornell and matriculated at Stony Brook instead. I was accepted
into their Honors College program, a prestigious group of about 60 students per
year, so I was not terribly disappointed. Stony Brook's costs were within what
my family had told me they would cover of my expenses (the amount was the same
regardless of the cost, so although for the higher schools it hurt me, with
Stony Brook it helps me). I decided that graduating without a penny of debt was
well worth it; besides, Stony Brook is a fine school anyway for Computer
Science.
My first year was completed without issue, and I learned Java in Computer
Science 1. Although my AP credits would have allowed me to place out of
Computer Science 1 and 2, their language of choice is Java, with which I was
unfamiliar. Although once I learned the language (not dissimilar from C++) I
quickly outgrew the course, I still believe it was helpful with acclimating me
to Java and working with UNIX. I also took Basic Aikido, as I enjoy martial
arts, having a black belt in Tae Kwon Do.
That March saw the initial development of WeathAlert. I had obtained Visual
Studio .NET from the MSDN Academic Program, which allows me to freely obtain a
significant number of Microsoft applications. I had previously used Visual C++
6, and .NET allowed me to work with Visual Basic and C# as well. I jumped in
with Visual Basic, fearing C# would be as difficult to create Win32 programs
with as C++, and created the initial version of WeatherSpy, the precursor to
WeathAlert. It was simple, and fulfilled its purpose of showing me the weather
and alerting me with balloon tool tips, of inclement conditions (ironically,
because of the way the framework is set up, it was very difficult to find out
how to create balloon tips. I was not able to add that feature was until a few
months after the rest of the program was completed). I then figured I'd try C#,
as I tired of VB and longed for the power of C++ again, but was disappointed
that it had many of the same "safety features" that has restrained me with
Java, mainly with the elimination of Boolean typecasting, which I had used with
aplomb. Nevertheless, I found that C# was very easy, and was essentially Visual
Basic with C syntax, and thus WeathAlert was born. Technically, it was still
WeatherSpy, until someone pointed out that the name was an ill choice with the
rapid proliferation of spyware, and so I changed it to WeathAlert. I also
decided to change my "company name" from Markrosoft to Solsoft, fearing that I
would not get off as easily as Mikerowesoft, in spite of the fact that I had
been using Markrosoft since the 486-days. I figured Solsoft would be clever
enough, with Sol being the Sun in Spanish, but also a homonym for my last name,
Sowul.
My second year began with a continuation of the Computer Science curriculum
including Computer Science 2, which, similar to Computer Science 1, did have
some limited benefit (as most of the material was similar to the AP
curriculum). I also took Introductory Russian; as I mentioned, I enjoy
language, and I had always wanted to at least become familiar with Russian. I
am now in the second semester. Computer Science 3 (large scale software
projects), Computer Organization / Architecture, and Game Programming are the
Computer Science courses that I am taking this semester. Computer Organization
/ Architecture involves the low level interaction of software and hardware, and
involves programming in assembler, which I have found very interesting, though
very difficult to debug. Game Programming was not as enjoyable as I had hoped;
mainly it consisted of using the badly written game engine created by the
textbook author, with us creating the games and artwork. I would have liked to
learn more about creating the engine than the games themselves.
Over the summer, I worked as a software developer intern for
Applied Visions, Inc. You can find more detail in the "Employment
History" section, but I helped to rewrite an in-house timekeeping project in
C#. It was far more complicated than it seemed at first glance, but it was
finished before the summer ended. I learned about .NET remoting as well as SQL
during the project.
[Last Modified: 9/2005]