It was the age of dial-up modems, dumb terminals, 8" floppies (that were actually floppy), and simple games like pong and tetris. In the first computer class I ever took, we actually used keypunch machines. This was in 1977, probably before many of you, my dear readers, were even born. I actually bought an old keypunch machine at an auction -- thinking I was going to need it for other classes and that having one at home would save me a lot of time. First big mistake. It ended up sitting in my basement for more than 20 years, though I never had to use it again. In all of my classes after that one, we used dumb terminals -- fairly bulky devices that served both as monitors and keyboards. I went on to learn to program in C, Fortran, Pascal, and LISP. There might even have been a touch of Cobol in there, but we seemed to look down on that language as much less sophisticated than the others and really only used by the business majors. In my second year, I wrote a tiny operating system in assembly for a PDP-11. I remember blinky lights and a racked system that was taller than my refrigerator. I came to really understand what a scheduler was for and how device drivers worked. I remember having to read the lights on the front of the system to be sure that things were working as expected. This wasn't my first exposure to keypunch machines as I'd made my way through my first couple of years of college by working overnight processing payrolls for a large variety of customers in and around New York City. One of my tasks was preparing programs for the punch card operators. We'd roll them around the drums on each keypunch machine, allowing the operators to enter data more quickly. As I soon came to learn, some keypunch machines print on the bottoms of the cards they punch. Others, like mine, required that you read Hollerith code -- a code in which a series of punches in a vertical row represented a particular character -- a digit, letter or punctuation. The 12 rows, the top two sometimes referred to as the X and Y zones and the bottom of which were marked with 0 - 9, provided a way to represent 0-9, A-Z (no lower case available), and certain punctuation characters. In Hollerith code, my first name would be 0 + 2, X + 1, Y + 5, X + 4, Y + 9, X + 1. In the diagram below, think of each X as being punched out of the card.
X -X-X-X ---X- --X- Y --X-X- ---X- -X-- 0 X----- --X-X X--X 1 -X---X ----- ---- 2 X----- ----X ---- 3 ------ X---- ---- 4 ---X-- ----- X--- 5 --X--- --XX- -X-- 6 ------ -X--- ---- 7 ------ ----- ---X 8 ------ ----- ---- 9 ----X- ----- --X- SANDRA LOVES UNIX
Errors that I needed to review were printed on wide sheets of green and white striped printer paper. Before paychecks were printed, I needed to be sure that mistakes -- such as a misplaced decimal point -- wouldn't end up with someone being paid 1/10th or 10x what they deserved. After graduating from my Computer Science program, I remember using Script (a language not unlike HTML) for formatting pages and preparing financial forms. If I inserted .sp, I got a blank line, .ce centered my text, .ju turned justification on and off. It wasn't until 1982-1983 that I first got my hands on Unix. I was then using a Zilog minicomputer. A system about this size of a dorm refrigerator. At the time, it seemed small. I was quickly enamored of the command line and how much I could get done using pipes and commands like grep. Wow! This was so much quicker than writing programs to do everything that I wanted. I didn't know it yet, but it wasn't going to be long before I switched from programming to systems administration. ASCII and, later, unicode seemed easy after struggling to read holes punched in paper cards. I remember being excited when I realized that I could change uppercase to lowercase by flipping a single bit in each byte. That meant that I could convert text quickly and easily by dipping into an assembly language routine. Doing that sped up string comparisons dramatically.
A in octal is 101, binary 01<font color=red>0</font>00001 a in octal is 141, binary 01<font color=red>1</font>00001
I was then working for the federal courts and working on a system that would automate criminal dockets (the case records) and working in a language called SAIL (the Stanford Artificial Intelligence Language), largely based on Algol. After programming in half a dozen languages, one more was no big deal and I came to like working in SAIL. It was an exciting project. I learned a lot about Title 18 (the criminal code) as we were building a model of criminal procedure into the program to ensure that anything entered onto a docket was done properly -- the status of defendants, counts, motions, and appeals all being consistent with the action being taken. We also built in tools that helped manage judges' calendars and ensured that trials would start at a time consistent with the then recently enacted Speedy Trial Act. It helped ensure that excludable events (such as a defendent going for a psychiatric examination) didn't count toward the deadline of when the trial needed to start. In the early 80's, my neighbors largely considered me a freak for having a computer in my home (an Apple II). Today, I'd probably need to have a wart hog as a house pet or paint my house to look like a UFO to impress them as thoroughly. Today, all of my neighbors have computers and they consider me a freak because I don't doubt global warming and I don't spray my farm with pesticides. I went on to work at many interesting places, some with maybe tens of thousands of employees, one with only four. Most of this time, I managed systems running Solaris. Nowadays, it's a mix of Solaris and Linux. Yet, while both operating systems are constantly changing and there's always something new to learn, I don't think I'll ever exceed the excitement that I felt when I first met the Unix command line. I'd love to hear about your first experiences with Unix and what you find most exciting about your work.
Read more of Sandra Henry-Stocker's Unix as a Second Language blog and follow the latest IT news at ITworld, Twitter and Facebook.