In 2005, my National Guard unit was deployed to Iraq as part of Operation Iraqi Freedom. My MOS (Military Occupational Specialty) in the Army was 92A, which is basically a logistics and supplies specialist. My job was to order parts for mechanics, pick them up, return old parts, manage HAZMAT, dispatch and return vehicles from missions, and handle licenses. I also did a few other things that I don’t remember right now.
At the time, the heart of this system was a tool called ULLS-G (Unit Level Logistics System—Ground). Shortly after we came back, ULLS-G was replaced by SAMS-E (Standard Army Maintenance System—Enhanced), which incidentally uses Oracle as a back-end database. Compared to SAMS-E, ULLS-G was a dinosaur. I had used it quite a bit, of course, having been in the Army for about four years by the time I was deployed. It was a complete pain. ULLS-G was a DOS application (yes, MS-DOS) and most of the computers I used it on at the armory were only running DOS (this was early 2000s so it wasn’t too uncommon to still see DOS systems around). By the time I was deployed most computers were running WinXP/2K or something like that, and you could run ULLS-G in “MS-DOS compatibility mode.”
You couldn’t really use the mouse in ULLS-G, since it was written for use in DOS. All interaction was via the keyboard. Part of what made the system so horrible was that there was no batch functionality of any kind. So let’s say you had to print out licenses for soldiers in your unit. You had to go through and print out each license one by one. You’d go to a screen to load up a user’s license by entering their license number, and then you had to print it. Our unit had around 150 soldiers, so to print everyone’s licenses, I had to individually look up each soldier and then print his license. If you had to add a vehicle qualification for soldiers, you also had to do this individually. Normally this isn’t so aggravating, since you only have to deal with a few qualifications at a time, but we were a unit that specifically stood up for this mission (our soldiers all came from four different batteries), which meant that our ULLS-G system had no information about soldiers’ qualifications.
Initially, I had to manually input each soldier’s qualifications and then print out their license. This would basically take me the better part of an hour to go through 150 or so soldiers. In true Army fashion, it gets even worse. Before we left, we had pre-mobilization training at Fort Lewis, Washington. There was a lot of vehicle training that our soldiers had to go through, and after each training mission I had to add qualifications and reprint licenses.
Needless to say, I was annoyed. I even got word that when we were finally in-country, there were going to be more vehicle qualifications which meant that I would have to add qualifications and print out licenses all over again. Now as a programmer, I’m constantly looking for ways to make my job easy. I didn’t want to sit and add qualifications, and print licenses one by one. I was too lazy for that, and worse, the whole thing was horribly inefficient. So I decided to figure out how to automate the process.