Note from the translator. I have not practiced the translation for a long time, so I will be glad to any criticism. The article itself is interested in the discovery of secrets (for the translator) on IT in the American army.As I received a medal from the Army for writing the code.In 2005, my unit in the National Guard was redeployed to Iraq as a member of Operation Iraqi Freedom. My army military academy (military accounting specialty) is 92A, which basically means logistics and a material support specialist. My job was to order mechanical parts, receive them, return old parts, handle hazardous substances, send / return (
pri. Lane - not sure here) machines from tasks and handle driving tolerances (not
trans. - not sure it seems to be an admission, but it seems strange to me to print “rights”) I also did some other things that I don’t remember. In any case, at that time, the heart of this system was the adaptation under the name YULLS-G (Logistic Division System - Land). I say “at that time,” since immediately after our return, ELSS-G was replaced with SAMS-E (Standard Army Technical Service System - Improved), which by the way used Oracle as a server-based DBMS
(note understood the term).
In comparison with SAMS-E, YuLLS-G was a dinosaur. By the time of redeployment, I had been engaged in it for 4 years. Its use practically hurt. YULLS-G was an application under DOS (more precisely, MS-DOS) and most of the computers in the warehouses where I worked used only DOS (this was about the early 2000s and there was nothing unusual in this). By the time of our redeployment, most of the computers worked with Windows XP / 2K or something like that and ULLS-H could be run in compatibility with MS-DOS.
And so, as I mentioned before, YULLS-G, it was difficult to use. It was impossible to really use the mouse, since this program was written under DOS. Therefore, all interaction was based on the keyboard. I remember that by the end of Operation Iraqi Freedom, I did not even have to look at the keyboard. I remembered all the hotkeys and could easily stuff the right things. In part, what made the program so terrible was the lack of package functionality of any kind. For example, if you need to print the admission of soldiers to drive in a unit, you had to recruit and print each admission separately one by one. The admission window of a soldier was loaded by entering his number and why it was printed. There were about 150 soldiers in our unit, so in order to print out all the admissions, I had to find each one separately and print. As far as driving tolerances are concerned, if you had to add a driver's qualification, then this was also done for each separately. But we were a unit that specialized in active operations in this operation (soldiers were recruited from 4 battalions of the 1st battalion of the 180th battalion of field artillery to form the headquarters battery of the 1st battalion of the 180th regiment)
. thanks for koment )). Which means that in our YULLS-G there was no information about the driver’s qualifications of soldiers. Therefore, at first I had to manually enter the driver's qualifications and then print the admission. What took me a significant part of the hour, for stuffing all 150 soldiers. Before we were sent, we received pre-mobilization training in Fort Lewis, Washington. There were a lot of training machines (Hummers modification M-1114, 5-ton, 2.5-ton, etc.), which our soldiers had to master. The training was distributed by the hour and after each training mission I had to add qualifications and reprint the admission.
')
Needless to say, I was annoyed because of this. (
spelling corrected thanks to horlon ) I was even told that as soon as we find ourselves where necessary, the number of qualifications for machines will grow even more, which meant that I would have to add all of this and print the admission again. As a programmer, I am always looking for ways that will make my work easier. I did not want to sit down to fill qualifications and print admissions each time separately. I was too lazy for this, and even worse, the whole system was inefficient. So I decided to figure out how to automate this process. The first thing I tried to do was sort out the YuLLS-H database file format. I could not do this, unfortunately, and mainly because I had little time (which is the norm when training military personnel). But then, by quite a happy coincidence. I stumbled upon a tab in which someone pointed out the ODBC driver (
comment. - corrected with ODBS,
thanks for koment ) for ULLS-G. This meant that I could run SQL queries to the YuLLS-H database. Armed with this, I started writing Perl scripts for data requests. By this time we reached Iraq, I had a working script that created admission in the form of text files for all soldiers. The script worked only 1-2 seconds. and the longest part of the process was to just print out the admission. But I was not enough. I was still annoyed that I had to add driving skills manually. Therefore, I wrote another script that started up and added qualifications to the drivers en masse
(I leave the original text as I hope it is clear without translation, nevertheless means “en masse, in droves”). The script even had a configuration file where you could specify which qualifications you want to add and to whom.
When we finally arrived at the location of our unit, I had to print all admissions again. I still remember how my automotive sergeant was confused when I showed up after 20 minutes. with a still warm stack of tolerances, completely fresh from the printer. “Didn't it take you a little more time?” He asked. I started talking about the script, but he unfolded me after 3-4 words about Perl, SQL and ODBC connections, nodded and took admission to the TOC (Combat Operations Center). On the one hand, it was good that he did not ask too many questions, because what I was doing was forbidden. Only certified specialists (for this there is a separate MES) were allowed to intervene in the installation files of YuLLS-G, and I was not technically prepared, at least in the eyes of the Army.
After our arrival in the country, I also found that we would have to send daily reports to our combat operations center (which then sent them to the battalion). Reports contained a condition of our cars (whether they were subject to repair or everything is fine) and various other information. Practically all other units typed this information in hand on Excel tables, then printed and sent them to the TOC. As a result, there was always room for error. Every morning I had to spend 20-30 minutes. to correct reports and make sure that they are on the current number, before I printed them and sent them to the TOC. I remember shouting a couple of times with annoyance at the fact that the data was wrong, after which I was doubly accurate. I became annoyed again. There must be a better way for this, and he was. Excel can make ODBC connections (registered with the process - not sure about the correctness of the process) registered in Windows and I have already registered one of them for my Perl scripts in the ULLS-G. Therefore, I just used the same connection using the Excel Excel macro, which filled all the fields in our table. It looked neat. The script (
approx. Lane - or macro?) Automatically updated the data on the machines requiring repairs and also included additional information that other divisions did not report, such as the state of maintenance of all vehicles and their mileage. Information about the status of the service was particularly useful for daily work, because before that we had to manually search for it after returning the car from the exit. Now I just needed to find her in the table and immediately understand which car required maintenance.
From the point of view of programming, what I did was not something out of the ordinary. I just figured out a way to get information from the YuLLS-H databases. But my superiors were very impressed, especially the squad leader and sergeant of the automotive service. After 2-3 months of our stay in the country, we have a new chief of the battalion’s automobile service (Senior Warrant Officer, Grade 2, if I remember correctly (
approx. Lane - roughly corresponds to an ensign in the Defense Ministry of the Russian Federation)). He was very interested in what I did. Once I showed him a demo, he looked at me and said: “You know that you couldn’t do this, right?”. At first I was scared and I got into serious trouble, but he smiled. He told me that he didn’t mind, as it seems I knew what I was doing, and in the end I helped my unit to be effective and improve the accuracy of reports.
A few months passed and we had one or two months to go from Iraq. My scripts and macros worked, with minor deviations, both here and there. By the end of the term, we had an award ceremony. The captain and the first sergeant arrived at the fleet to present the awards. I was rather surprised when they called me, because I didn’t expect it (my work mainly kept me at the base. I did my job well, I thought, but I didn’t think it was worth the award. There are not many ways in order to really distinguish themselves in material support and logistics.) After being presented with “Army Commendation Medal,” he and the first sergeant shook hands with me and congratulated me. I thought it was no outstanding award for “good service”, before I looked at the award list. When I read, I saw that the commander of my squad, Senior Sergeant Lopez, included me in the award list, based on the work that I did with Perl scripts and Excel macros. I was surprised and delighted. And although I have not done anything to deserve it, it's nice to know that your work is recognized.
Here is my story about how I received a medal from the Army for writing code.
P.S. Plus and minus are not always reflected the real picture of the evaluation of the article. Therefore, I would like to use the survey tool. Thanks to all participants