Archive

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

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

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 Articles

Windows 95 Virtual PC - A fairly detailed tutorial on how to install Windows 95 in a Virtual PC.

128mb FreeDOS Virtual PC Experiment - An experiment to see whether FreeDOS runs on Virtual PC, and whether it can play some old school games.

Finding a Purpose for Windows Me 10 Years Later - Looking back at Windows Me in a vain attempt to accomplish something useful or interesting with it.

Windows 2000 Server + Visual Studio 6 Virtual Machine - This is what happens when I get tired of installing Visual Studio 6 on every new PC or laptop I own.

Windows Tips & Tricks

Coping 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.

Coping with .rar files in Windows Vista - Not for the faint of heart.

svchost.exe troubleshooting - A while back I was having some problems with a file called svchost.exe that kept crashing. I documented my research and eventual solution here.

winnls.dll FAQ - very small FAQ on the winnls.dll file which is needed to run some Japanese language software on Windows.

Tiamat

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.

Tiamat project page


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.

Download Jail 0.2.1 - executable .jar file, source code, API documentation, & sample data: 650KB


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:

WordBastard 0.5 source code for Visual Basic 6 SP3 (or higher): 149KB

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.

Scan.l and Expresso.y source files for Expresso: 10.2KB


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..

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.