Welcome to my Software (information) Page!

Ray's Head shot

This page describes my career in software development and the resultant software.

From U.S.A.F. to University
My software career began when I was in the U.S.A.F., where I worked on database projects. It was my role to design and implement database access routines, but also to validate the data, which at the time was done manually, using database dumps in hex code. The integrity of data was crucial, since this was for the National Nuclear War Plan (SIOP). After my time in the U.S.A.F., I went to work for a defense contracting agency, where I continued to work on database access routines. Then I went to work for Inmos Corp., where I converted code from mainframes to minicomputers. I continued to work for Inmos as a contract consultant while I attended University.

After my Bachelor's degree I worked for one summer at DEC in Colorado Springs where they developed new techniques for computer disk (drive) manufacturing. I developed a program which took the results of a disk scan and then identified and categorized errors (light scattering) based on Computer Vision techniques. I followed this work up with a computer learning algorithm which was used to identify new categories of disk errors.

Intelligent Tutoring System - ITS-Challenger
Once I started working toward my Master's degree in Computer Science, I began working for University Departments and associated firms, doing research related to my Master's Thesis, which I was working on at the time. I was focused on Artificial Intelligence, mostly regarding student modelling and inference techniques. My thesis advisor and I wrote and submitted a proposal to the U.S.A.F. for an Intelligent Tutoring System, which was accepted and funded. In addition to my work on student modelling and inference, I also took on dynamic generation of test questions and knowledge representation.

At that time, the existing knowledge representation for most Intelligent Tutoring Systems was in the form of rules. And student errors were in the form of “Buggy” Rules. My project took a novel approach of representing knowledge as a Semantic Network (graph structure), which allowed me to develop Student Misconception analysis through graph manipulation. Several general error types were easily exposed, such as node (concept) confusion, where one concept was confused with another. Often this took the form of a subtree rotation, thereby handling more subtle misconceptions. By using dynamically generated problems and providing the means by which the student entered the solution steps (via a calculator that I wrote that stored the solution as a tree), the solution entered by the student was compared to the one generated by the computer. The differences were used to analyze the misconception, as previously stated, thereby allowing some level of novelty in terms of the student's solution.

It was during this time that I began teaching some of the concepts that I had learned. My work was being done using a dedicated LISP machine from Xerox Corporation. LISP was an early adopter of the Object-Oriented paradigm. It is also a functional programming language with dynamic typing. Xerox Corporation asked me to teach OOP techniques to some of their new customers. I also taught some classes at the University, including: Introduction to Computer Programming, and Artificial Intelligence, which was a Philosophy course co-taught with a philosophy professor.

ISX Corporation
After I completed my Master's degree, I went to work for ISX Corporation. There we largely worked on DARPA contracts. Considering my background and my desire to continue to work on AI projects, I utilized my skills to develop studies for Lockheed Martin regarding Computer Learning Algorithms, and then I developed some software for a couple of existing programs. I was then promoted to Technical Director where I led teams of developers on several projects.

My first such project oversaw the development of autonomous fighter pilot simulations. I developed a Knowledge Acquisition plan for this project that was used by all (20+) contractors on this program. I then oversaw, and personally participated in the Knowledge Acquisition sessions for Fighter Pilots. Our knowledge experts were Naval Fighter Pilots stationed at Oceana in Virginia Beach, Virginia. As implementation began, I had eight engineers devoted to this project. These engineers were geographically distributed, with some in California, some in Atlanta, and some in Washington D.C.

My next project was to improve the FEMA process of emergency response to disasters. We were informed that the process involved hundreds of participants, gathered together in one location, each with specific knowledge about logistics, or locations of needed goods, or some other aspect of emergency response. Their task was to discuss the situational needs, identify a logistical solution and respond by developing a joint plan to move the required supplies from existing locations to a staging area, then to the area of need. Our response was to develop a software solution, which was capable of coalescing multiple data sources, including databases from several sources, using different database solutions and schemas, as well as spreadsheets of data, all of which represented sources of required materials, then consolidate those sources into a single database which was used to develop the logistical plan. Part of the logistical plan included a faster than real time display of material movement to the staging area, then to the site of need. This solution allowed the work to be done by a handful of participants, rather than the hundreds typically required, and shortened the process from weeks and months to days. The software was encoded using C++.

The last project that I led at ISX was a hedge fund program, written in LISP, by Hughes Research. My task was to provide remote access to this software. LISP is an enclosed or captive environment, and so each user was required to have the entire system on a laptop in order to use it. Errors in the field were difficult to reproduce in the lab, and there was no single database creating issues of data integrity. Leading a team of two developers, I designed a web-based interface and created some access points in the LISP program. My team then began construction of the Java code to implement this solution.

After nearly ten years at ISX I struck out on my own, becoming a consultant. In this capacity I have designed and implemented a variety of software solutions for various client requirements. Initially I provided a web hosting service and created some applications to ease client use. For instance, I wrote a Content Management System (using PHP, MySQL, HTML, and JavaScript) which allowed my clients to update their pages using Microsoft Word. I then designed and implemented an app for bank clients to remotely enter a secure application, securely delivering that document to the loan officer in a password protected, encrypted pdf file. I also wrote a database application using Java, in which images could be stored and retrieved, based upon artifacts in the image. Finally, I wrote an interface between two applications, a hiring system which had an applicant fill out a job application, and a background check system. This system allowed the hiring screeners to take an job applicant's information, and submit it to a background check. The software was built using PHP, XML, XSLT, and JavaScript.