Skip to content

Rough Book

random musings

Menu
  • About Me
  • Contact
  • Projects
    • bAdkOde
    • CherryBlossom
    • FXCalendar
    • Sulekha
Menu

How I got a medal from the Army for writing code

Posted on June 26, 2014June 26, 2014 by vivin

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.

133 thoughts on “How I got a medal from the Army for writing code”

Comments navigation

Older comments
  1. taranga says:
    June 28, 2014 at 9:44 am

    “Although I didn’t work on any of it for recognition, it’s still a good feeling to find out your work is appreciated” http://t.co/m4Mw9OtVuN

    Reply
  2. yugdom says:
    June 28, 2014 at 9:48 am

    How I got a medal from the Army for writing code #HN http://t.co/EKMG1oF62r

    Reply
  3. philadev says:
    June 28, 2014 at 10:13 am

    How I got a medal from the Army for writing code http://t.co/h1DbdGSkiJ

    Reply
  4. EdPedini says:
    June 28, 2014 at 1:36 pm

    “How I got a medal from the Army for writing code” http://t.co/FRmzVEG5fk

    Reply
  5. dsdickinson says:
    June 28, 2014 at 3:35 pm

    Very cool Perl story.
    http://t.co/mMSkGvmyFd
    #perl #code

    Reply
  6. sctan says:
    June 28, 2014 at 10:18 pm

    I can certainly attest to this RT @newsycombinator: How I got a medal from the Army for writing code http://t.co/3SgYwNKZEl

    Reply
  7. dc_host says:
    June 29, 2014 at 1:00 am

    How this person got a medal from the #army for writing code http://t.co/VuZs2D2FBX #programmer #programming

    Reply
  8. CambsITsupport says:
    June 29, 2014 at 1:00 am

    How this person got a medal from the #army for writing code http://t.co/bmwEumeqlh #programmer #programming

    Reply
  9. ikoniaris says:
    June 29, 2014 at 6:00 am

    How I got a medal from the Army for writing code | Rough Book http://t.co/Ls0wRzH138

    Reply
  10. japi999 says:
    June 29, 2014 at 7:02 am

    Perl and Excel skills can be valuable in U.S. Army, too. Worth a medal, actually. http://t.co/sM2IwjYv95

    Reply
  11. octaehq says:
    June 29, 2014 at 11:00 am

    Militar recibe condecoración por programar en Perl durante la guerra http://t.co/g7V0dWvaDQ

    Reply
  12. juanbaezr says:
    June 29, 2014 at 11:21 am

    RT @octaehq Militar recibe condecoración por programar en Perl durante la guerra http://t.co/KztjtEQdtO

    Reply
  13. PinPopular says:
    June 29, 2014 at 2:36 pm

    How I got a medal from the Army for writing code | Rough Book http://t.co/UCoxNCweXX

    Reply
  14. chankeypathak says:
    June 30, 2014 at 1:44 am

    How I got a medal from the Army for writing code http://t.co/WyCykSu8PJ

    Reply
  15. paveljurca says:
    June 30, 2014 at 3:03 am

    How I got a medal from the Army for writing code http://t.co/tzVLtDX800 via @vi5in

    Reply
  16. sgivan says:
    June 30, 2014 at 3:52 am

    How I got a medal from the Army for writing code http://t.co/OpCqIz7n8Z via @vi5in

    Reply
  17. geekuni says:
    June 30, 2014 at 5:12 am

    One approach to getting a @perl job in Iraq http://t.co/8vXxHPvKJo

    Reply
  18. MikeWHawkins says:
    June 30, 2014 at 5:25 am

    How I got a medal from the Army for writing code http://t.co/0n9tuUvNtR

    Reply
  19. midorik says:
    June 30, 2014 at 7:00 am

    PerlスクリプトとExcelマクロの作成に米軍が授与した勲章 http://t.co/TXVVCiLbZD @@vi5inさんから

    Reply
  20. Oscar Gonzalez says:
    June 30, 2014 at 7:02 am

    That is pretty cool man. And your resume is going to be really strong to do anything you want pretty much.

    Reply
  21. Jonathan says:
    June 30, 2014 at 2:13 pm

    Fantastic job! Those certs are a pain to keep track of. It’s a shame you had to resort to perl hacking just to get back to your real job.

    Reply
  22. Shlomi Fish says:
    June 30, 2014 at 10:35 pm

    Hi all – I did not read the original post due to its long paragraphs (a good style today would be more staccato-like and with textual ornaments such as bold, bullets and numbered lists, shorter paragraphs, etc. etc.) but I wanted to note that:

    Writing code – almost any code – is a good way to “wage war”. Hell, even writing Chuck Norris/etc. factoids or making a low-quality recording of yourself on YouTube may be a kickass way to help the world. Like my combined meme goes, «If Ayn Rand was born in the 1990s, she would be Christina Grimmie. » – http://www.shlomifish.org/humour.html#if_ayn_rand_was_born_in_the_1990s . There are many differences between Rand and Ms. Grimmie, but the point still stands.

    Hail Saladin! Hackers of the world – unite!

    Reply
  23. Pingback: 美国码农故事:写代码获得陆军嘉奖奖章 | | Evolution Unit 进化Evolution Unit 进化
  24. Pingback: 美国码农故事:写代码获得陆军嘉奖奖章 | 我爱互联网
  25. Pingback: How I got An Army Medal for Programming in VBA | George Stocker
  26. jbrandes1984 says:
    June 11, 2018 at 1:24 pm

    I know this is a really old thread but I work for an army depot and our motor pool is stiil using ULLS-G. They want to migrate to SAMS-E which is also antiquated at this point. My question to you is. Do you know if migrating the data from ULLS-G to SAMS-E is possible?

    Reply

Comments navigation

Older comments

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

Archives

  • February 2023
  • April 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • December 2017
  • November 2017
  • October 2017
  • June 2017
  • March 2017
  • November 2016
  • August 2016
  • July 2016
  • June 2016
  • February 2016
  • August 2015
  • July 2014
  • June 2014
  • March 2014
  • December 2013
  • November 2013
  • September 2013
  • July 2013
  • June 2013
  • March 2013
  • February 2013
  • January 2013
  • October 2012
  • July 2012
  • June 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • September 2011
  • July 2011
  • June 2011
  • May 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009
  • July 2009
  • May 2009
  • April 2009
  • March 2009
  • February 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • August 2008
  • March 2008
  • February 2008
  • November 2007
  • July 2007
  • June 2007
  • May 2007
  • March 2007
  • December 2006
  • October 2006
  • September 2006
  • August 2006
  • June 2006
  • April 2006
  • March 2006
  • January 2006
  • December 2005
  • November 2005
  • October 2005
  • September 2005
  • August 2005
  • July 2005
  • June 2005
  • May 2005
  • April 2005
  • February 2005
  • October 2004
  • September 2004
  • August 2004
  • July 2004
  • June 2004
  • May 2004
  • April 2004
  • March 2004
  • February 2004
  • January 2004
  • December 2003
  • November 2003
  • October 2003
  • September 2003
  • July 2003
  • June 2003
  • May 2003
  • March 2003
  • February 2003
  • January 2003
  • December 2002
  • November 2002
  • October 2002
  • September 2002
  • August 2002
  • July 2002
  • June 2002
  • May 2002
  • April 2002
  • February 2002
  • September 2001
  • August 2001
  • April 2001
  • March 2001
  • February 2001
  • January 2001
  • December 2000
  • November 2000
  • October 2000
  • August 2000
  • July 2000
  • June 2000
  • May 2000
  • March 2000
  • January 2000
  • December 1999
  • November 1999
  • October 1999
  • September 1999
©2023 Rough Book | Built using WordPress and Responsive Blogily theme by Superb
All original content on these pages is fingerprinted and certified by Digiprove