This section is for projects I've abandoned or technical articles that are now obsolete. I'm kind of a digital hoarder and rarely throw anything away permanently. So if learning how to run Windows 95 on a version of Virtual PC Microsoft no longer distributes is your thing then you've come to the right place. Nothing here is guaranteed to work or be remotely useful.
Virtualization Articles
Windows Tips & Tricks
Tiamat
Tiamat was an attempt to create an RPG library in Java. Over time it started morphing into a game studio before becoming something of a mess. There's a longer explanation here. Although not especially useful, I'll leave it up for anyone who's curious.
Java Artificial Intelligence Library
It is with some pain that I have to move Jail to the archive section. There are a couple of reasons.. I completed my Masters degree in 2004, my thesis paper was on neural networks. After spending a few years studying artificial intelligence my interest in it has waned. I realize it's a trendy skill to have these day but right now it's not something I want to think about.
So what made it into Jail anyway?
Neural Networks: Implementations for the Back Propagation network and Kohonen Self-Organizing Map are included. Features common to all included neural networks are:
WordBastard
WordBastard is a simple rich-text editor written in Visual Basic 6. I orignally wrote it to learn Visual Basic 4 and upgraded it a couple of times. It demonstrates many neat-o things that can be done easily in (old school) Visual Basic.
Features:
Game of Life
Conway's Game of Life is a classic computer simulation, dating back to 1970. Most computer science students are assigned this program at some point. This version is done in Visual Basic and demonstrates some tricky algorithms to implement.
Game of Life source code for Visual Basic 6 SP3 (or higher): 40.1KB
Expresso
Expresso is a simple scanner and parser for the Java language. A copy of lex and yacc (or some equivalent) are needed build this.
Random Code Examples
MidiPlayer.java (9.04 kb) A simple class to play a single MIDI file or a list of files. It also supports looping the playlist, which is not as easy as it should be.
PathResolver.java (9.43 kb) This is an abstract class that contains two static methods for resolving absolute and relative paths.
LaunchBrowser.java (7.98 kb) This is a class that launches the OS default web browser from a Java application. When I was working on Jail I wanted to be able to launch the help files from a menu. Since Java is platform independent there is no simple way to launch a web browser. My first idea was to write a lightweight HTML container to display the help files but what I came up with was so monstrous that I'd be embarrassed to post it. Although I consulted a number of articles and discussion forums on this topic, the resulting code for this class was original work.
IniFile.java (7.53 kb) This is a class to read/write old-school .ini files from Java. I first wrote this for Hapsby to store user preferences. I suppose this should be obsolete with the introduction of the Properties API in JDK 1.4. However, I've found the Properties API to be unnecessarily complicated so I'm sticking with .ini files.
NumberConverter (10.1 kb) There are three classes in here that at the end of the day create a JPanel that converts decimal<->ascii<->hex<->octal<->binary. Originally wrote this for Hapsby even though it only needed decimal<->hex conversions.
LogFile.java (6.46 kb) As the name implies this creates a simple log file. I mean a very, very simple log file. It really just opens a file and appends lines. I suppose this could be obsolete since JDK 1.4+ has a Logging API. However, much like the Properties class discussed above it is mildly inconvenient to use. First wrote this for Hapsby, but it's used in Jail too.
SplashScreen.java (6.84 kb) This is a fairly lightweight splash screen. Like LaunchBrowser, I looked at articles and discussion forums to figure out how to do this. The resulting code was all original work though. I first wrote this for Hapsby, but it's used in Jail too.
ZipCompressor.java/ZipDecompressor.java (7.84 kb) Nothing too advanced here. These are just two classes to make zipping and unzipping files easier. Wrote these for Hapsby as part of the autobackup feature.
FortuneCookie.java (8.54 kb) I think some versions of Linux have a feature like this. All it does is return a random fortune from a list. That's all. I never found a nice way to incorporate it into any of my projects.
ImageCropDemo.java (6.54 kb) A while ago I was contacted by someone who was working on a game in Java. The game map was going to be one giant gif and they wanted to be able to crop and scroll it to fit the visible field. For some reason they asked if I knew how to crop images in Java. I didn't, but figured it out in about an hour and sent this class back to them. Don't know what ever happened with the game though..
ShowImageDialog (13.2 kb) This is a JavaScript to pop-up an image in a dialog and size the dialog to fit the image. Click on the image to the left for an example. Currently only works correctly with Internet Explorer, the resize doesn't work in some versions of Netscape or Mozilla.
DirectoryEntryDemo (26.7 kb) This program demonstrates how to perform some simple, yet common, operations using the System.DirectoryServices.DirectoryEntry class. It loads a list of all available domains into a combo box, selecting a domain loads a list of all users in that domain, and selecting a user displays all their available properties. Note: if you try to use this code in an ASP.NET application it will fail because you can not anonymously query Active Directory for user information. You'll have to use impersonation and run the code under the identity of the user visiting the site.