When the Coal-fired Power Plant in North Central Oklahoma downsized from 218 employees to 124 employees in 1994, everyone was scrambling to figure out how we were going to complete all the work that needed to be done to keep the plant running. We had become cross-functional teams which seemed to help right away, but we needed to know what jobs were the higher priority jobs, because it became obvious, at least for the short run, that we were not keeping up with the workload.
That was where the “Planners” came in. In other industries, we may call these guys, “Project Managers”. They planned the work, and gave us the Maintenance Orders when it was time to work on them. At first, this was a daunting task for the four planners at our plant. The planners were Mike Vogle, Glenn Rowland, Ben Davis and Tony Mena.
This was a new job for all of them. Glenn Rowland had been an A Foreman for the Instrument and Controls Department. Tony Mena had been on the Testing team. Mike Vogle had been a B Foreman over the Labor Crew. Ben Davis had been an electrician. Now they were suddenly working on a computer all day long trying to learn how to plan their days so they could plan ours. I currently don’t have any good pictures of this team, or I would let you see for yourself what great guys they are.
Oh. Ok. Here is a later picture of Mike Vogle which I absconded from his Facebook page:
At this time, though they were using the “state of the art” 286 PCs, they were really working on the Honeywell mainframe computer at Corporate Headquarters in Oklahoma City. They did this by using a Dumb Terminal emulator named GLink. See the post: “Working Smarter Power Plant with Dumb Terminals” for a better explanation.
The Power Plant Men knew that I liked to play around on the computers. I was always going around helping people improve their computer experience by writing little programs that would do important things. For instance, Windows back then had a screensaver that would fly the windows logo out from the screen so that it looked like you were flying into the windows logos and they were passing you by.
In the executable program, if you changed the value of one particular byte, you could change the picture from the windows logo to any other of the 255 Wingding Characters. This included things like Skull and Crossbones, Hearts, Crosses, Envelopes, Stars, Snowflakes and a lot more. So, I was able to customize their screensavers using any of the wingding characters.
I wrote simple little programs to change their font size and color when they were using DOS, so they could read their screen easier (for the old timers that had a hard time reading the little letters).
Anyway, I had developed a reputation as not only being a troublemaker, but also of being a computer whiz. I have more stories to tell at a later time, but for now I will stick to the one about bringing the Honeywell mainframe home.
Mike Vogle first asked me the question. He explained to me that he was staying later and later each night at work doing his job. The earliest he was leaving was after 7pm each day, and he didn’t have time anymore to even see his family by the time he arrived home. So, he asked me if there was some way he could take his home work with him. What he would ideally like to do would be to take a disk from work with the Maintenance Orders on them where he could complete them. Then the next morning bring that disk back to work and put it in the computer and load it into the system.
I can see that a lot of you are rolling your eyes wondering why he didn’t just log into the company network and work remotely. Well, in 1994, the Internet was something new. We didn’t have the Network infrastructure built yet that would allow something like that. We were using Windows 3.1 on old 16 bit computers. Most of the programs we were running on the computers were still Pre-Windows. The GLink application, even though it had a windows Icon, was really a DOS program emulating a Dumb Terminal.
I told Mike I would look into it to see if there was some way I could emulate the emulator. That is, write a program that would be able to interact with the GLink program to upload and download data from the mainframe automatically. I was sitting in the Electric Shop Office with Charles Foster thinking about this over lunch when Terry Blevins came in.
Terry and I had worked together the last seven years on the precipitators. During the downsizing Terry was offered a job working on “Special Assignments”, which was a great move up for him. We were all happy for him. He had setup shop at the warehouse office where he could work part of the time from our plant instead of having to drive from Ponca City, Oklahoma to Oklahoma City to go to work.
When Terry came in to eat lunch with us, I told him what Mike Vogle had asked me. Terry said right away that the GLink program had a Macro language that we might be able to use to automate the process. This was just what I needed to hear. If I could write a program that would write macros and send them to GLink to run, then that would do it. I looked up the macro commands for GLink by opening up the Help section and printing out the list.
I used BASIC 7.0 (no. Not Visual Basic, I hadn’t advanced that far yet). BASIC 7.0 was the first BASIC that did away with line numbers and advanced a real second generation programming language. It came out about the same time as MS Windows. When I first bought the program, it was about $500.00 which was quite a lot for me. But it allowed me to create actual DOS executables where I could do just about anything I wanted.
Keep in mind that the language I was using to write the program didn’t know about Text Boxes, or even “Word Wrap” for that matter. Everything that the user did on the screen, I had to take into account myself. Just like I was working with a dumb terminal. It didn’t understand “Word Wrap” either. When you finished typing at the end of the line, if it jumped down to the next line in the middle of the word, you had to arrow up, and arrow to the right (forget using a mouse), and backspace until you had erased the letters at the end of the line, and then arrow back down to the next line and start typing again.
So, I put in my own logic for word wrapping because the mainframe window had only so many characters per line, and it had no mercy. Everything had to be in the right box when you clicked on Submit. When I was finished writing this program, I was so proud of myself for creating something as simple as “Word Wrap”.
Word Wrap, for those of you who don’t understand the phrase is when you get to the end of the line you are typing and instead of splitting the word up when it goes to the next line, it moves the entire word down to the next line. You see it all the time now, but early on, the person writing a computer program had to take that into account if they wanted something to word wrap. Windows Text Boxes and Word Processors had Word Wrap built in, so today a programmer doesn’t have to worry about all those little things, because the objects already know how to do that. Just like this internet page knows how to do it.
Years later when I was interviewing for a Developer job with other companies and they would ask me what was one of my greatest programming accomplishments, I might blurt out “Word Wrap” before I realized how silly that sounds today.
Another problem I had was that strings of characters in the computer code are delimited by Double Quotes, so what happens when someone is filling out their Maintenance order and they use a Double Quote (“). I didn’t think about this, and the first time I gave the program to Mike Vogle to test it out, it went all crazy and entered a bunch of bad data into a Maintenance Order because there was a Double Quote in it….. Yeah. I forgot that if you want to say you worked on a four inch pipe, you would write that as 4” pipe.
So, my second great accomplishment when writing this program was to watch each key stroke, and if it was a double quote, then I would concatenate the string to another string around the double quote that was delimited with single quotes. After doing all that, the program worked pretty good. I gave it to Mike, and he tested it out and after making a few more tweeks, it was ready.
Mike could then take his disk of Maintenance orders home with him, and complete his work there, and in the morning he would put the disk in the computer, type a simple command, and it would open up GLink and start uploading all the work he did the night before. Flashing screen after screen as it worked through all the Maintenance Orders.
Over time (not overtime, but Over Time, as in after a number of days or weeks, not like getting paid time and a half), the program became popular with some of the foremen, because it had Word Wrap and the GLink Emulator didn’t because it was emulating the Dumb Terminal which is too dumb to wrap words from one line to the other. So, this one little feature that I was so proud of figuring out actually turned out to be the selling point for the foremen to use my new program during the day at work.
I had originally written the program so that Mike could take it home and use it to store macros on the disk that would upload the data to the Mainframe in the morning, but now the foremen were using it during the day at work because it was easier to use than the actual program that talked directly to the mainframe.
It was fun writing a program that essentially wrote another program (macros) that would tell another program (GLink) what to do. To me, it was the first step for me to take over the world (as one of my Managers at Dell used to accuse me of doing). What I mean is, that if you could write programs that writes other programs, aren’t you essentially creating some sort of “Artificial Intelligence”?
Because of my initial experience with this effort, it has given me the idea to write a program called: “Old Man”. Someday, maybe when I retire, I want to write a program that will help old men… like I will be. Old men that are losing their memory (like I will be… or already am). And it will learn what the old man does and how he lives, and it will remind him to do simple tasks. Basically, it will nag him like his wife would do if she was still living. It will use voice recognition so it will speak and listen to the old man speak back.
The “Old Man” application will remind him to brush his teeth. Go to the barber, wash the sheets on his bed. The list can be endless, because it will learn what this person needs from scratch and dynamically build the database and infrastructure in the background to take care of this old man when he can’t remember if he has just taken his medicine already or not. It will even make a shopping list for him and help him with cooking. It will be connected to the Internet so that it can pull all sorts of information it needs.
The “Mainframe Emulator Commander” program that I wrote for Mike Vogle really was my first step to becoming a real nuisance at the plant, because after that, I wanted to write more and more programs. So, I was always on the alert as to what I could do next. I will write about some of the things we came up with throughout this year.