Some Projects


My Mancala program
When I attended the USA Computing Olympiad's 1998 training camp, each finalist wrote a program that played an ancient African game called Mancala. Once Rob Kolstad finally got his judging program up and running, we then sat around and watched the programs play each other on a big screen. My program did pretty badly, so I've tried to do better ever since. During August 1998, I read up on artificial intelligence and game-playing in general, and hacked together a vastly-improved program; right now, it consistently beats both me and every other algorithm I've pitted against it. I know it's still far from perfect, though, and I'm constantly looking for new programs to challenge it. (To make things even more interesting, I wrote code to run an automatic tournament between competing programs and keep track of the results. I plan to run a big tournament between many peoples' programs eventually; if you're interested in entering, email me right away!) [Status: active!]
PolarVision
PolarVision is the 3-D world rendering program that I'm writing. It is a 3-D engine with complete freedom of movement (six degrees of rotation and six directions to move in.) I'm writing in Watcom C/C++ 10.0, protected mode DOS/4GW, and 80386 assembler. The project is of great interest to me, and as a side effect, I'm learning a lot of math in the process. [Status: it works, but I haven't touched it since 1996 or so.]
MBHS Chemistry Resources
A little while back, my former chemistry teacher, Mr. Pham, asked me to put together a comprehensive list of chemistry-related resources. I started out with a short list, and eventually expanded it and broke it down into this. I am currently working with Mr. Pham to put many of the documents used in his chemistry classes on-line. [Status: uh...dead? I think it got lost amidst too many web server changes and home page reconfigurations.]
The Amazing Mandelbrot Zoomer
Well, I don't actually have a name for any of the parts of this project that I've written. However, I have been using Watcom C/C++ 10.0, DOS/4GW protected mode, and 80386 assembler (sound familiar?) to try and make the fastest Mandelbrot set generation algorithm that I can. So far, my program employs symmetry usage, periodicity checking (Mandelbrot lake optimization), and general algorithmic speed-ups to generate a 320x200 Mandelbrot set with 256 maximum iterations and a window of (-2.5,1.5) to (1.5, -1.5) in 2.07 seconds on my 486/66. As a comparison, Fractint takes only around .8 seconds; however, when I still used Pascal for programming, a similar program of mine took several minutes! To speed my program up even further, I am considering the use of a solid-guessing algorithm similar to Fractint's. I could use integer math, as well, but I probably won't. The reason for this is that I'm keeping my program portable (assembler is only used for graphics routines), and on higher-end machines, floating-point math is much faster in relation to integer math than it is on my 486. So, the use of integer math would only slow things down on a faster machine. [Status: 486?? Hahaha, I've upgraded at least twice since then, and the fractal program apparently got left behind.]