Mark's Site Logo

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]


Color scheme: