I have just completed my bachelor's degree. Check out my resumé
All of the projects below were written by me and include full source code. Because of the short time I dedicate to writing them,
usually just a few hours, having to balance job, school, and the rest of my life as well, they are bound to have bugs, and not all of the program ideas
will be very original. Sometimes I may opt to
revise an old program rather than write a new one if I find serious bugs or much room for improvement. I'm releasing the source code for
all of the projects under the GNU General Public License (GPL)
unless otherwise noted. If I happen to write something
really cool one day, feel free to make an open source project out of it. Every once in a while I'll slip in a more matured project I wrote
in the past, in which case I'll mention it in the description.
This is like random noise, but not just any random noise. It has special properties that makes it useful for high quality, high performance color reduction. It lacks low frequency details. The greys are uniform from 0-255, and unvarying. It's seamless, suitable for tiling. And for the most part it lacks pattern, which makes it especially useful for things like textures where other methods of dithering would cause moire patterns. 10-1-2004: Improved sharpness and consistency. Note: For the time being, using any noise resembling blue noise for dithering may be covered by a US patent 5,726,772 held by RCTech, to what extent I do not know for certain.
Language: C Other requirements: none Date: 9-30-2004
While on Christmas vacation, I wrote dhtml versions of a couple games on my grandma's 486 and my mom's laptop. Here are Rocks
This is a simple, but powerful random password generator which collects entropy from a wide variety of sources and uses SHA1 hashes to generate any number of passwords of any length in base95, base64, base32, or readable format. I'm releasing this one under the BSD license to allow closed customization. It includes a library written by another author for generating the SHA1 hashes, also released under the BSD license. You can use it here
This demonstrates how to use the Internet Explorer WebBrowser control. It's a simple browser with not a lot of bulk. It supports multiple windows, lets you map the F2 through F12 keys to your favorite web sites, and has popup blocking and popup flood protection. If you want to see a browser I wrote from scratch back in high school, try this
.Language: VB6 Other requirements: none Date: 7-27-2003
This is a simple program that lets you walk through a premade map. No lighting or textures. The map is stored as a raw bitmap, with each 2x2 group of pixels representing the heights of the corners of a block on the map, allowing for slopes & stuff. The map is 256x256 blocks. To improve speed, it tries to group blocks that can be drawn with a single polygon. 7-21-2003: Big speedup. Added minimal physics. You start out high in the air, and fall toward the map like a skydiver without a parachute.Language: C Other requirements: SDL Date: 7-20-2003
Walk or fly over endless landscapes. The landscape is generated as it's drawn based on a fractal, rather than being stored, allowing for incredibly detailed landscapes with little resource usage. I wrote this around the beginning of last year for a graphics class where I learned OpenGL. Originally using Glut and compiled with MSVC++, tonight I modified it to use SDL and compile using Dev-C++ (mingw). I've also improved the quality a bit from what it once was. 7-17-2003: Attempted to speed up a little on lower end video cards. I had forgotten to put in the appropriate glHint() calls that were previously done by Glut.Language: C Other requirements: SDL Date: 7-15-2003
This tool will monitor your websites and let you know when one of them goes down or goes back up. It is very configurable and can send the alerts several different ways. It can send emails, netbios popup messages, run other programs to handle the alert, log the alerts, and/or simply print the alert on the screen.
This little program will let you create a gzip-compressed tunnel between two computers on the internet. Think of STunnel but with compression instead of encryption, for people who need to transfer large volumes of highly compressible data between computers on the internet over a low bandwidth connection. The real world applications of this seem limited nowadays, as so many people now have broadband, but it's an interesting concept nonetheless, and it demonstrates how to use the built in compression tools that exists in newer versions of Java.
Language: Java Other requirements: Java 1.41 Date: 7-13-2003
A text/code editor with all the most basic features. Auto-indent, goto line, find, replace, print, and it even shows line numbers to the left of the text box, something I never tried before. It also stores the window position and current directory in the registry. 7-12-2003: Added most recent file list and resolved some 64k textbox limitations (NT/2000/XP only). 1-7-2004: Minor update with fixes from a couple months back, and better title bar format.
Language: VB6 Other requirements: none Date: 7-11-2003
Takes two source files and generates a patch file containing the differences. Or takes a source file and a patch file and exactly recreates the second source file. Created because I couldn't find a good free patch maker that can handle files of different sizes exceeding 16mb (the limit of the IPS patch maker). This supports files up to 2gb. 7-10-2003: I've updated it to make it run much faster and produce slightly smaller patches. If relatively bug free, it should be a decent IPS replacement by now. 7-12-2003: Updated again. I just couldn't let it go. Created format.txt, summarizing the patch file format. Added the ability to apply IPS patches, since IPS is currently the most popular patch format for small files and supporting it would give people more of a reason to download this.
Language: C Other requirements: none Date: 7-9-2003
A simple word search creator. Given a word list, creates word searches as large as 180x180. Words may be placed in any of 8 directions. The filler letters are chosen according to their frequency in the english language, making the puzzles extra difficult with tens or hundreds of superfluous words.
Language: VB6 Other requirements: none Date: 7-5-2003
A cheap clone of a famous old arcade game where you shoot asteroids. Vector graphics. Auto frame-rate. 10 points for every hit. 200 plus an extra life for beating a level. Goes faster each level.
Language: VB6 Other requirements: none Date: 7-2-2003
A clone of a game where you start with a grid of random lights (shown in black in this one) and you try to make them disappear. Allows games up to 20x20. Does not keep score. Includes code to demonstrate how to solve any such puzzle without knowing how it was made.
Language: VB6 Other requirements: none Date: 7-1-2003
A cheap clone of another famous arcade game where you try to fill rows with irregular shaped blocks. You get more points for filling several rows at a time. Speeds up after every block.
Language: VB6 Other requirements: none Date: 6-30-2003
I wrote this long before creating this site, but thought I'd release it anyway. It's a simple game where you click on groups of same-colored marbles to make them disappear, trying to remove them all. I wrote this one in C (with Dev-C++) using SDL for the graphics, which should compile on Linux but I haven't tried.Language: C Other requirements: SDL Date: 5-17-2003