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/return vehicles from missions, and handle licenses. I also did a few other things that I don't remember right now. Anyway, at the time, the heart of this system was a tool called ULLS-G (Unit Level Logistics System - Ground). I say "at the time", because 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 4 years by the time I was deployed. It was a complete pain to use it. 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 circa early 2000's 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 so you could run ULLS-G in "MS-DOS compatibility mode".
So as I mentioned before, ULLS-G was a pain to use. You couldn't really use the mouse in it, since it was written for use in DOS. So all interaction was via the keyboard. I recall that towards the end of our mission, I didn't even have to look at the keyboard; I had memorized the keystrokes and so I could simply type them in to get stuff done. 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. Also related to licenses, 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 was specifically stood up for this mission (our soldiers all came from four different 1/180th batteries to form 1/180 HHB FA), which meant that our ULLS-G system had no information about soldiers' qualifications. So 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 Ft. Lewis, WA. There was a lot of vehicle training (M-1114, 5-ton, deuce-and-half, etc.) that our soldiers had to go through. These were staggered as well, so 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. The first thing I tried to do was to figure out the format of the ULLS-G data files. I wasn't able to do that at all, unfortunately and it was mainly due to lack of time (what with all the military training going on). But then quite serendipitously, I stumbled across a page where someone had posted an ODBC driver for ULLS-G. This meant that I could run SQL queries against the ULLS-G data files. Armed with this, I started writing Perl scripts to query the data. By the time we had reached Iraq, I had a working script that generated licenses as text files for all the soldiers. The script only took a second or two to run, and the longest part of the process was simply printing out the licenses. But I wasn't done yet. I was still annoyed that I would have to add driver qualifications manually. So I wrote another script that would go and add qualifications to drivers en masse. The script even had a configuration file where you could specify what qualifications you wanted to add and to whom.
When we finally reached our unit, I had to print out everyone's licenses again. I still remember my Motor Sergeant looking perplexed when I showed up in 20 minutes with a warm stack of licenses, still fresh from the printer. "Didn't this take you a lot longer before?", he asked. I started talking about the script but he just tuned me out after about three or four words out of my mouth about Perl, SQL, and ODBC connections and nodded and took the licenses to the TOC. In a way it was good he didn't ask me too many questions, because what I was doing wasn't really sanctioned. Only licensed technicians (there is another MOS for that) are allowed to mess with the ULLS-G install, and I wasn't technically qualified, at least in the Army's eyes.
After we were in country, I also found out that we had to send up daily reports to our TOC (who would then send it up to battalion). These reports consisted of the state of our vehicles (whether they were dead-lined or good to go) and various other bits of information. Pretty much every other unit there typed up all this information manually in an Excel spreadsheet, and then printed it out and took it to the TOC. As a result, there was always room for errors. Every morning I would have to spend 20-30 minutes fixing the report and making sure that it was up to date, before I printed it out and sent it to the TOC. I remember getting yelled at once or twice because I had the wrong information there, and so after that I was doubly careful. Again, I was starting to get annoyed. There had to be a better way to do this, and there was. Excel can make use of ODBC connections registered in Windows, and I had already registered one for use with my ULLS-G Perl scripts. So I simply used that same connection with a nifty Excel macro that populated all the fields in our spreadsheet. It was pretty neat. It would automatically update the list of dead-lined vehicles and it also included other information that other units didn't report, like the service status of all our vehicles and their mileage as well. The service status bit was especially useful even on a day-to-day basis since previously we had to manually look up each vehicle's service status when it was returned from dispatch. Now I simply had to look it up in a spreadsheet and it would show me at a glance which vehicles required servicing.
From a programming standpoint, what I did wasn't all that stellar. I had simply figured out a way to grab information out of the ULLS-G database. But my leadership was very impressed, especially my squad leader and my Motor Sergeant. Around 2-3 months after we had already been in country, we had a new Battalion Motor Officer show up (CW2 Lee, if I recall correctly). He was very curious about what I had done. Once I had demoed it to him, he looked at me and said "You know you're not supposed to be doing this, right?". I was initially scared that I was going to get in serious trouble, but he had a smile on his face. He told me that he didn't mind because it seemed like I knew what I was doing and the end result was that I was helping my unit out by being efficient and by providing accurate reporting.
The next few months passed and soon we were only a month or two away from getting out of Iraq. My scripts and macros had been running with only minor hiccups here and there. Towards the end we had an awards ceremony. The commander and First Sergeant came over to the motorpool to hand out awards. I was kind of surprised to be called up because I wasn't expecting one (my job mainly kept me on base; I did my job well I thought, but I didn't think it was award worthy. There aren't too many ways to really excel at supplies and logistics). After awarding me the Army Commendation Medal, both he and the First Sergeant shook my hand and congratulated me. I thought it was just a generic "good job" award until I saw the paperwork. When I read through the paperwork, I saw that my squad leader SSG Lopez had put me in for the award based on the work I had done with the Perl scripts and the Excel macros. I was surprised and elated. Although I didn't work on any of it for recognition, it's still a good feeling when you find out that your work is appreciated.
So that's my story about how I got a medal from the Army for writing code.
How I got a medal from the Army for writing code http://t.co/M5iYamnfhh #reddit
Nice Job Vivian 🙂
Thanks Brad!! 😀
Nice work. Funny thing: I recognized you from a reddit post you made on /r/india a year or so ago.
Small world 🙂
Fun story – getting an Army medal for programming http://t.co/t9Qy7G2jj0
RT @vi5in: How I got a medal for writing code: In 2005 my National Guard unit was deployed to Iraq as part of Operation Iraq… http://t.co…
“How I got a medal from the army for writing code”
http://t.co/ArcAr3UVmF
How I got a medal from the Army for writing code – Vivin: http://t.co/QRBN2NNx00
How I got a medal from the Army for writing code http://t.co/zFW14xdb7y
How I got a medal from the Army for writing code http://t.co/vyVeRs8T1g (http://t.co/nbEtSQ2cW2)
кто пишет на перле, того в штатах награждают медалями http://t.co/mLpsNQSe4h
How I got a medal from the Army for writing code http://t.co/g75T7IFSzg
How I got a medal from the Army for writing code http://t.co/5jg56aXm5N http://t.co/W1Vuk2j7s6
Great story about how a developer won an Army Commendation medal for writing some Perl scripts and Excel macros. http://t.co/NKrREXwutC
How I got a medal from the Army for writing code http://t.co/zZ99MPvwlI via @@vi5in
First, as a programmer, you did a good job in automating what ever was possible and to make things easy not just for you, but also for your peers (may not be the right word but I think you know what I mean).
Second, it really feels good when non-technical (non-IT) people appreciate when technical (IT) people do some thing really good, no matter how small.
Kudos to you!
Thank you!
Award in army, based on the work I had done with the Perl scripts and the Excel macros | http://t.co/tWTd4rJplQ | #respect
What really matters is that you an interest in what you do. “How I got a medal from the Army for writing code” http://t.co/5I6tu7yhpE
Just leaving my kudos here. Because you deserve it 🙂
Code that delivers. http://t.co/bHjlC6AGi5
How I got a medal from the Army for writing code http://t.co/le0uR26aaU via @@vi5in
RT @vi5in: How I got a medal for writing code: In 2005 my National Guard unit was deployed to Iraq as part of Operation Iraq… http://t.co…
How I got a medal from the Army for writing code http://t.co/9Dux5stdrN via @@vi5in
Absolutely fantastic.. My sincere congratulations..
Thank you!
Nice job. I got a an Aerial Achievement Medal for for writing a DOS batch file that backed our flight plan data to a floppy disk during Desert Storm. (Among other things) I wasn’t supposed to install the 3.5″ drive in the computer, but nobody cared because we had a job to do. Thank you for using common sense and for your service!
Does that mean one might earn a Purple Heart for injuries incurred when your committed release breaks badly? http://t.co/gEreEgGCFD
How I got a medal from the Army for writing code: http://t.co/EsFqakz1sK
If you’re still using PERL, you *deserve* a medal.
http://t.co/0HYZsMYgu9 cc @erocdrahs
Even programmers can get a medal from the Army without fighting real physical enemies. http://t.co/B3bN7ynPc9
http://t.co/QeYIgNsTKH
How I got a medal from the Army for writing code http://t.co/ORzV8dE9tl (http://t.co/SwD5EC4Evo)
Soldier receives medal for significantly reducing operating costs. Congrats @vi5in Paliath! #GoANG #ANG #coding http://t.co/QelRQz8Ml9
“How I got a medal from the Army for writing code” – http://t.co/FWXFM9a0o1
How I got a medal from the Army for writing code http://t.co/L9yfzMVRTz via @@vi5in
How I got a medal from the Army for writing code – http://t.co/N43J7VP1ce
“How I got a medal from the Army for writing code” http://t.co/C7uLDkmvaD
How I got a medal from the Army for writing code http://t.co/MlNhZnijLu
How I got a medal from the Army for writing code | Rough Book http://t.co/XKva7JEXQ0 via @instapaper
How writing Perl and Excel macros can get you a medal: http://t.co/qyvuMRFP8F
Archiving http://t.co/R2sfLgkHnT
I learned recently through some interaction with one of the teams that develops software for the Army on why this type of stuff has to happen. It boils down to: unless there is something extremely specific in your fields FMs or ARs for the workflow on a given piece of data, the developer CAN’T and WON’T put features that allow cross talking of the nature you hacked together. You will not find a single mention of Excel or Powerpoint in any AR or FM, but they are the bread and butter of most admin jobs.
This creates awful, terrible inefficiency like you described. And the criminal thing is that it robs so many man hours that are simply attributed to administrative overhead, a necessary evil. I had to do something similar in my field, since the software tools we were provided (in my case, CAFRS and UAS-I) were woefully inadequate to perform functions necessary for my job.
Learning VBA to hack together a tool to do my freaking job turned out to be pretty fun and eventually I was able to help out my colleagues with some automated tools for their responsibilities.
Unfortunately, what it boils down to at the end of the day as far as admin work in the Army is that someone important enough thinks it is not worth the money to scrap/redevelop tools to actually have software that help with your job.
That makes a lot of sense. The FM’s pretty much describe the entire process from top to bottom and is the expected way of doing things. The problem is that a lot of FM’s were written when nothing was really electronic. So it looks like they took these manual processes and then replicated them exactly. What you said really makes sense as to why there isn’t any sort of batch functionality. A lot of people are also just scared that doing something different from what the FM’s describe would “break” things. But this sort of thinking is the root of inefficiencies.
How I got a medal from the Army for writing code http://t.co/2UtZlo7tHO
How I got a medal from the Army for writing code http://t.co/JGAjZB00H2 #news
Army awards medal for writing computer code. Soldier: “I was simply too lazy to do it manually” #epic http://t.co/3FPYOPlBiq
How I got a medal from the Army for writing code http://t.co/F5vg3iZmvI via @@vi5in
How I got a medal from the Army for writing code | Rough Book http://t.co/bU8En9nFrw
How I got a medal from the Army for writing code http://t.co/8wdbrp2Qah via @@vi5in
@vi5in Very nice blog, post and work! Kudos! 🙂
How writing #Perl and Excel macros got @Vi5in a US army medal: http://t.co/FQbgV4fHRW
via @kj_cheetham, @shadowcat_mdk
“How I got a medal from the Army for writing code” http://t.co/JX5JTSUv8u