I started with Kmart on the Pharmacy system. My responsibility was, primarily, to keep the
Pharmacy Host systems up and running for the Pharmacy department at the Kmart World Headquarters.
These systems were IBM RS/6000's, there were three. They were used to run a packaged pharmacy
system called PDX. But, as PDX lacked certain required functionality in its initial version, Kmart
programmers wrote programs around PDX in C and in Korn shell script. There were several problems
with the systems as they were set up when I arrived. For one, there were three systems and only
one of them was being used, at all, the others sat idle most of the time, while the one being
used was always overworked. Second, the custom system supporting PDX created tons of logfiles
which were hidden in several different directories and which were constantly filling up all the
filesystems. Third, and most dangerously, PDX had originally been installed as belonging to user
"root". This meant that, in order for users to modify files used by PDX, they had to also be
user "root". Every user on all of the PDX systems was "root".
I isolated all the locations where logfiles were being hidden on the Pharmacy systems and I wrote
a program in C and a Korn shell script to invoke it which would eliminate files after a period
of time specified on the command line. That solved the problem of disk space for the rest of the
time I was on Pharmacy.
Using NFS, I spread the load of PDX across
all three boxes with the third being a hot-backup of the other two and able to pop into service
if either of the other two went offline. That took care of the performance issues.
Finally, I created a new user, "pdx", and a group with the same name. All files
used by the PDX application were changed so that they were owned by "pdx". Then, I revoked every
user id on the systems and reissued everyone a new, unique user id. The oddball case here was a
group of people who had to have the authority to "kill" each other's programs. I assigned them
each unique id's, but, each with the same id number. To the system, while each user had his
own directory and password, these users all looked like the same user and could kill each other's
I also modified most of the Korn shell scripts in the custom system supporting PDX to send me
emails periodically with important system status information. I monitored my email and kept
myself apprised of all the events which occurred on my systems.
Next, for the Kmart Grocery system, to meet Kmart's requirements for Y2K compilance we needed
to upgrade the PC's which operated the meat weighing scales at Kmart grocery stores from
MS/DOS version 5 to the Y2K-compliant IBM PC/DOS 7.
We also had to distribute the new scale control software which I rewrote from BASIC into C.
It had to have a simple, automated process to upgrade DOS and install the new
software when the diskette was inserted into the machine and rebooted.
And, everything had to fit on a single 3.5" bootable diskette!
In July, 1998, I moved to the Kmart Solutions project, which was an attempt to expand the
product offering at Kmart stores without expanding the actual floor space. The hope was
that Kmart could offer sheds, playscapes, appliances, a more comprehensive music catalog,
furniture and other stuff, through an in-the-store web application, for which the customer
could pay at a regular cash register. My job was to take the orders placed and forward them
to the companies who would fulfill them. Some of those companies accepted orders in EDI
format; some accepted their orders by email; some could only accept orders as facsimiles.
I had just learned Java 1.1 and this was the first application I ever wrote in it. In the
end, the application I wrote forwarded orders for Kmart Solutions and the Kmart.com website,
both of which used IBM's Net.Commerce package.
Initially, the Kmart Solutions system would print out a sheet of paper upon which the "web"
portion of the customer's order was printed and a specific cash register had to be used to
cash the customer out. This meant that, if the customer purchased other merchandise, they
had to check out twice. My first CGI (Common Gateway Interface) program was written in C
and it automatically transferred the customer's web order to Kmart's retail pricing system
so that it was available from any cash register and could be rung up along with the
customer's other purchases.
From Kmart Solutions, I moved to the Outbound Management System project, or "OMS".
The purpose of OMS was to more effectively load trucks at Kmart distribution centers
so that we could reduce the overall cost of shipping merchandise to our stores. This
meant packing trucks with the maximum amount of material allowable by the physical
capacity of the truck and the weight allowed by law. Also, OMS was designed to produce
the most efficient route for a truck to take from the distribution center to each
store for which it carried merchandise. My part of this very complex system was to
allocate stock in the distribution center to particular orders based on the priority
of the order and the amount of merchandise in stock. OMS was written in Java 1.2 with
an Informix database.
While working at Kmart, I worked with
Informix, 4GL, Visual Basic 4, AIX, SunOS/Solaris, HPUX, DB2 (for AIX and the Mainframe), MQSeries,
TIBCO, Tivoli Access Manager and much, much more. But, most importantly, I learned Java and HTML.