Jump to my Home Page Send me a message Check out stuff on GitHub Check out my photography on Instagram Check out my profile on LinkedIn Check me out on Facebook

Position Tracking System

This project is an interface to a delivery truck tracking system. Behind the interface is a very old mainframe system that depends upon fixed width fonts, line printers for reporting, and old fashioned (green screen) terminals for input. The terminal input was driving an incredible number of errors in data entry, and the old peripherals (line printers & terminals) were becoming cost prohibitive to maintain. The goals of this project:

  • Emulate the terminal communication with the mainframe, but present the interface as a click-able GUI.
  • Replace the line printers by capturing printer output from the mainframe and presenting the data in a GUI such that it looks as much as possible like the printer output.
  • The GUI needed to be as similar to the old terminal interface as possible -- so the GUI is ugly, but it saved a ton of money in training costs.
  • Both Windows and Solaris X11 needed to be supported, and needed to look almost identical to the end user.
  • Sophisticated error checking and correction in the GUI to avoid the data entry errors of the past.
  • Needed to be able to automate anything a human could do with the interface.
  • The user should be able to add buttons to the interface (the "Do Something" buttons in the screen shots were added by a user after the product was delivered).

The error checking and correction implemented was some of the most enjoyable work I have ever done -- it was absolutely cutting edge in the mid 1990's, and remains quite advanced to this day. This was a really fun project, and it was the first time I ever used AI outside of academic circles. Some of the things I had the opportunity to implement included:

  • A rule based artificial intelligence (expert system) to fill in fields of the data base that the users leave blank.
  • A genetic algorithm based artificial intelligence that monitored the system for data integrity.
  • An interface monitoring system (using a neural network) watches the user's actions and guides the user by disabling interface elements and providing helpful information.
  • All three of the above were integrated into the automation and scripting facilities so that scripts received the same data checking and correction.

The bit wrangling required to get both the terminal emulation and line printer emulation working was my first experience writing low level terminal emulation software. I had a lot of fun with that bit (pun intended), but I'm not sure I ever want to do that sort of low level emulation programming again! Implementing the embedded scripting language was a ton of fun too, and that is something I still do today. The only difference is that I now have great tools like lua, python, and guile to make that sort of thing easy!

© 2009 Mitch Richling