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.
Some of the things here are now over 20 years old. Like just about everyone I'm not especially proud of my older work. I've learned to be OK with it all still existing though.
Falcom Screensaver Translations
In the 1990s Falcom released some free screensavers and I translated the menus to English. These are for 32-bit versions of Windows and are basically useless now.
Video Game Collecting Apps
I wrote a few Android apps to track video game collections. Then for various reasons I stopped and don't plan to start again.
Virtualization ArticlesWindows 95 Virtual PC - A fairly detailed tutorial on how to install Windows 95 in a Virtual PC.
Windows Tips & TricksCoping with .rar files in Windows 2000 - If you do a lot of file sharing or downloading from newsgroups then you've probably encountered .rar files. If you're accustomed to Winzip then you're probably somewhere between frustrated and annoyed with them. Here are some tips I put together for coping with .rar files in Windows.
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:
Decision Tree: Fast & accurate decision tree learning algorithm. Features include:
Now about the user interface.. I really, truly dislike writing user interfaces and Jail is a perfect illustration of this. It came a long way since the initial release but still isn't great. The goal was to integrate many types neural networks and decision trees into one interface that can browse and edit them. Only Backpropagation neural networks were integrated.
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.
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.
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 - 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. Moved here and occasionally updated now.
PathResolver.java - This is an abstract class that contains
two static methods for resolving absolute and relative paths. Moved here and occasionally updated now.
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. It was made obsolete with the introduction of the Properties API in JDK 1.4.
NumberConverter - 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. Mostly moved here and occasionally updated now.
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. This was also made obsolete since JDK 1.4+ has a Logging API.
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.
ZipCompressor.java/ZipDecompressor.java - 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. More useful versions of these are maintained here now.
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..
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.